<?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>CSSPreprocessor</name>
	<version>3.0-beta3</version>
    <mincmsversion>2.2.9</mincmsversion>
	<help><![CDATA[PGgyPldoYXQgZG9lcyB0aGlzIGRvPzwvaDI+CjxwPlRoaXMgbW9kdWxlIGFkZHMgdG8gdGhlIENNU01TIGZpbGUtYmFzZWQgc3R5bGVzaGVldHMgKENNU01TIDIuMyspIGFuZC9vciBEZXNpZ25NYW5hZ2VyIHNvbWUgQ1NTIFByZXByb2Nlc3NvcnMsIGluIG9yZGVyIHRvIGNvbXBpbGUgTEVTUyBvciBTQVNTIGxhbmd1YWdlcyAob3Igb3RoZXIgbWF5YmUgbGF0ZXIpLjwvcD4KCjxoMj5Ib3cgZG9lcyBpdCB3b3JrIGFuZCBpbnRlZ3JhdGUgaW4gQ01TTVM8L2gyPgo8cD4KCVRoaXMgbW9kdWxlIGlzIGxhdW5jaGVkIGFmdGVyIGFsbCB0aGUgc3R5bGVzaGVldHMgaGF2ZSBiZWVuIGNvbWJpbmVkICh0aHJvdWdoIGNtc19zdHlsZXNoZWV0IG9yIGNtc19yZW5kZXJfY3NzKSwgYW5kIGl0IHRha2VzIGFsbCB0aGUgQ1NTIGNvbnRlbnQgdG8gZ2l2ZSBpdCB0byB0aGUgUHJlcHJvY2Vzc29yIG9mIHlvdXIgY2hvaWNlLgo8L3A+CjxwPgoJS2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBtb2R1bGUgcHJvY2Vzc2VzIHRoZSBlbnRpcmUgc3R5bGVzaGVldCBhZnRlciB0aGVpciBjb21iaW5hdGlvbi4gTm8gbWF0dGVyIGlmIHlvdSB1c2UgMSBvciAxMCBzdHlsZXNoZWV0cyBpbiB5b3VyIGRlc2lnbiwgdGhlIHByZXByb2Nlc3NvciB3aWxsIG9ubHkgcHJvY2VzcyBpdCBvbmUgdGltZSwgYW5kIGl0IHdpbGwgb25seSBwcm9jZXNzIGl0IHdoZW4gdGhlcmUncyBhIGNoYW5nZSBpbiBvbmUgb2YgdGhlIGluY2x1ZGVkIHN0eWxlc2hlZXQuCjwvcD4KCgo8aDI+SG93IERvIEkgVXNlIEl0PC9oMj4KPHVsPgoJPGxpPgoJCURlZmluZSB5b3VyIGltcG9ydCBkaXJlY3RvcmllcywgaWYgeW91IHVzZSBpdC4gRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGludGVncmF0ZSBCb290c3RyYXAsIHlvdSBjYW46CgkJPG9sPgoJCQk8bGk+UHV0IHlvdXIgQm9vdHN0cmFwIFNBU1Mgc291cmNlIGZpbGVzIGluIGFzc2V0cy9ib290c3RyYXAvIChvciBtYXliZSBhc3NldHMvdGhlbWVzL015VGhlbWVOYW1lL3Njc3MvYm9vdHN0cmFwIGlmIHlvdSBhcmUgdXNpbmcgdGhlIHRoZW1lcyBzeXN0ZW0pPC9saT4KCQkJPGxpPlR5cGUgPHN0cm9uZz48ZW0+YXNzZXRzL2Jvb3RzdHJhcDwvZW0+PC9zdHJvbmc+IGluIHRoZSAiRGlyZWN0b3JpZXMgY29udGFpbmluZyBMRVNTL1NBU1MgZmlsZXMgdG8gaW5jbHVkZSBpbiBjb21waWxhdGlvbiIgLSBObyBzbGFzaCBhdCBiZWdpbm5pbmcgb3IgZW5kPC9saT4KICAgICAgCQk8bGk+CiAgICAgIAkJCUNyZWF0ZSBvbmUgb3IgbW9yZSAiY3VzdG9tIiBzdHlsZXNoZWV0IGluIHRoZSBEZXNpZ24gTWFuYWdlciBhbmQgbGluayBpdCB0byB5b3VyIGRlc2lnbi4KICAgICAgCQkJPGJyPgogICAgICAJCQlPUgogICAgICAJCQk8YnI+CiAgICAgIAkJCVF1ZXVlIHlvdXIgdmFyaW91cyBDU1MgaW4geW91ciB0ZW1wbGF0ZSB3aXRoIHtjbXNfcXVldWVfY3NzIGZpbGU9ImFzc2V0cy90aGVtZXMvTXlUaGVtZU5hbWUvY3NzL21haW4tc3R5bGVzaGVldC5zY3NzIn0KICAgICAgCQk8L2xpPgogICAgICAJCTxsaT4KICAgICAgCQkJVXNlIHtjbXNfc3R5bGVzaGVldH0gb3Ige2Ntc19yZW5kZXJfY3NzfSBhY2NvcmRpbmcgdG8gaG93IHlvdSdyZSB3b3JraW5nIHdpdGggc3R5bGVzaGVldHMgaW4gQ01TIE1hZGUgU2ltcGxlLiBDU1MgUHJlcHJvY2Vzc29yIHdvcmtzIHdpdGggYm90aC4KICAgICAgCQk8L2xpPgoJCTwvb2w+Cgk8L2xpPgogIDxsaT4KCQlTYW1lIGNhbiBiZSBkb25lIGZvciBGb3VuZGF0aW9uOgoJCTxvbD4KCQkJPGxpPlB1dCB5b3VyIEZvdW5kYXRpb24gU0FTUyBzb3VyY2UgZmlsZXMgaW4gYXNzZXRzL2ZvdW5kYXRpb24vc2NzczwvbGk+CgkJCTxsaT5UeXBlIDxzdHJvbmc+PGVtPmFzc2V0cy9mb3VuZGF0aW9uL3Njc3M8L2VtPjwvc3Ryb25nPiBpbiB0aGUgIkRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgTEVTUy9TQVNTIGZpbGVzIHRvIGluY2x1ZGUgaW4gY29tcGlsYXRpb24iIC0gTm8gc2xhc2ggYXQgYmVnaW5uaW5nIG9yIGVuZDwvbGk+CgkJCTxsaT4KCQkJCUNhbGwgdGhlIGZvdW5kYXRpb24gbWl4aW5zIC8gcnVsZXMgaW4geW91ciBtYWluIENTUyBmaWxlCgkJCTwvbGk+CgkJPC9vbD4KCTwvbGk+Cgk8bGk+U3RhcnQgdXNpbmcgTEVTUyAvIFNBU1MgY29kZSBpbiB5b3VyIHN0eWxlc2hlZXRzITwvbGk+CjwvdWw+CgoKPGgyPlVwZGF0aW5nIHN0eWxlc2hlZXRzPC9oMj4KPHA+CglJZiB5b3UgbWFrZSBhbiB1cGRhdGUgb24gYSBEZXNpZ25NYW5hZ2VyIG9yIGZpbGUtYmFzZWQgc3R5bGVzaGVldCAocXVldWVkIHdpdGggY21zX3F1ZXVlX2NzcyksIHRoZSBtb2R1bGUgd2lsbCBwcm9jZXNzIHRoZSBzdHlsZXNoZWV0IGFnYWluIG9uIHRoZSBuZXh0IHBhZ2UgcmVmcmVzaC4KPC9wPgo8cD4KCUhvd2V2ZXIsIGlmIHlvdSBkaWQgbWFrZSBhIGNoYW5nZSBpbiB5b3VyIGltcG9ydGVkIGxlc3MgZmlsZXMsIHRoZSBzeXN0ZW0gd2lsbCBub3QgcGVyZm9ybSBhbnkgdXBkYXRlIC0gaW4gdGhpcyBjYXNlLCB5b3UgbXVzdCBjbGVhciB0aGUgY2FjaGUgb3Igc2ltcGx5IHNhdmUgeW91ciBkZXNpZ25tYW5hZ2VyIHN0eWxlc2hlZXQgdG8gbWFrZSB0aGUge2Ntc19zdHlsZXNoZWV0fSBwbHVnaW4gcHJvY2VzcyB0aGUgY3NzIGFnYWluLgoJPGJyPgoJSW4gQ01TTVMgMi4zKyB5b3VyIGNhbiB1c2Uge2Ntc19yZW5kZXJfY3NzIGZvcmNlPXRydWV9IHRvIGNvbWJpbmUgYW5kIHByb2Nlc3MgdGhlIHdob2xlIHN0eWxlc2hlZXRzIG9uIGV2ZXJ5IHBhZ2UgcmVmcmVzaCAodXNlZnVsIG9uIGRldmVsb3BtZW50KS4KPC9wPgoKCjxoMj5TbWFydHkgc3VwcG9ydDwvaDI+CjxwPkFzIHRoaXMgbW9kdWxlIHVzZXMge2Ntc19zdHlsZXNoZWV0fSBhbmQvb3Ige2Ntc19yZW5kZXJfY3NzfSwgeW91IGNhbiB1c2UgU21hcnR5IHRhZ3Mgd2l0aCBbWyBhbmQgXV0gLSBTbWFydHkgd2lsbCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRoZSBDU1MgUHJlUHJvY2Vzc29yLjwvcD4KCjxoMj5Vc2luZyBTb3VyY2VtYXBzPC9oMj4KPHA+CglTb21lIHByZXByb2Nlc3NvcnMgY2FuIGNyZWF0ZSBzb3VyY2VtYXAgZmlsZXMsIGluIG9yZGVyIHRvIGhlbHAgeW91IGR1cmluZyBpbnRlZ3JhdGlvbi4gRG9uJ3QgZm9yZ2V0IHRvIGNvbmZpZ3VyZSB5b3VyIGJyb3dzZXIgdG8gdXNlIHRoYXQgZnVuY3Rpb24uIE5vdGUgdGhhdCBvbmx5IGltcG9ydGVkIGZpbGVzIHdpbGwgYmUgbWFwcGVkIGluIHRoZSBzb3VyY2VtYXBzICh0aGlzIG1heSBjaGFuZ2UgaW4gYSBmdXJ0aGVyIHZlcnNpb24pLjxicj5Eb24ndCBmb3JnZXQgdG8gZGlzYWJsZSB0aGUgc291cmNlbWFwcyBmb3IgcHJvZHVjdGlvbi4KPC9wPgoKPGgyPlNlY3VyaW5nIHlvdXIgc2NzcyBzb3VyY2UgZmlsZXM8L2gyPgo8cD4KCUluIHByb2R1Y3Rpb24sIHlvdSBzaG91bGQgZGlzYWJsZSB5b3VyIC5zY3NzIHNvdXJjZSBmaWxlcyBmcm9tIGJlaW5nIHZpZXdlZCBpbiBhIGJyb3dzZXIuIFlvdSBtYXkgdXNlIGFuIC5odGFjY2VzcyBydWxlIGZvciBBcGFjaGUsIGxpa2UgdGhpcyBvbmU6Cgk8YnI+Cgk8ZW0+UmVkaXJlY3RNYXRjaCA0MDMgXi4qL2Fzc2V0cy8uKlwuc2NzcyQ8L2VtPgoJPGJyPgoJWW91IHNob3VsZCBjb21tZW50IHRoaXMgbGluZSBpbiBEZXZlbG9wbWVudCBpZiB5b3Ugd2FudCB0byB1c2UgU291cmNlbWFwcyBiZWNhdXNlIHlvdXIgYnJvd3NlciB3aWxsIHRyeSB0byBvcGVuIGl0IGluIHRoZSBpbnNwZWN0b3IuCjwvcD4KCjxoMj5EZWFjdGl2YXRlIHRoZSBtb2R1bGU8L2gyPgo8cD4KCUlmIHlvdSBkb24ndCB3YW50IHRvIHVzZSBhbnkgb2YgdGhlIHByZXByb2Nlc3NvcnMsIHBsZWFzZSByZW1vdmUgaXQgb3IgZGlzYWJsZSBpdCBpbiB0aGUgTW9kdWxlcyBNYW5hZ2VyIC0gVGhlcmUgYXJlIG5vICJkZWFjdGl2YXRlIiBmdW5jdGlvbiBidWlsdCBpbiB0aGUgbW9kdWxlLgo8L3A+Cgo8aDI+UHJlcHJvY2Vzc29yIHN3aXRjaDwvaDI+CjxwPgoJWW91IG1heSB3YW50IHRvIHN3aXRjaCBmcm9tIG9uZSBwcmVwcm9jZXNzb3IgdG8gYW5vdGhlciAtIFRoZSBtb2R1bGUgc2hvdWxkIGNsZWFyIHRoZSBjYWNoZSBvbiBwcmVmZXJlbmNlcyBjaGFuZ2Ugc28gb24gdGhlIG5leHQgcGFnZSByZWZyZXNoIGluIHlvdXIgYnJvd3NlciB0aGUgd2hvbGUgQ1NTIHdpbGwgYmUgcHJlcHJvY2Vzc2VkIGFnYWluLgo8L3A+Cgo8aDI+RXh0ZW5kIHdpdGggYW5vdGhlciBwcmVwcm9jZXNzb3I8L2gyPgo8cD4KCVlvdSBjYW4gY3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBpbiB0aGUgInByZXByb2Nlc3NvcnMiIGRpcmVjdG9yeSwgYW5kIGNyZWF0ZSB5b3VyIG93biBjbGFzcyAtIENoZWNrIGhvdyB0aGUgYnVuZGxlZCBwcmVwcm9jZXNzb3JzIGFyZSBpbnRlZ3JhdGVkLgo8L3A+CjxwPkRvbid0IGZvcmdldCB0byA8YSBocmVmPSJtYWlsdG86Y29udGFjdEBhaXJlbGlicmUubmV0Ij5lbWFpbCBtZTwvYT4gaWYgeW91IHdhbnQgeW91ciBwcmVwcm9jZXNzb3IgdG8gYmUgYWRkZWQgdG8gdGhlIHByb2plY3QhPC9wPgoKPGgyPlN1cHBvcnQ8L2gyPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8cD4KCUlmIHlvdSB3YW50IHRvIGNvbnRhY3QgbWU6IDxhIGhyZWY9Im1haWx0bzpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmNvbnRhY3RAYWlyZWxpYnJlLm5ldDwvYT4KPC9wPgoKPGgyPlByb2plY3Qgb24gdGhlIHdlYjwvaDI+CjxwPllvdSBjYW4gZm9sbG93IHRoZSBwcm9qZWN0IG9uIDogPC9wPgo8dWw+Cgk8bGk+R2l0SHViOiA8YSBocmVmPSJodHRwczojZ2l0aHViLmNvbS9haXJlbGlicmUvQ1NTUHJlcHJvY2Vzc29yIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6I2dpdGh1Yi5jb20vYWlyZWxpYnJlL0NTU1ByZXByb2Nlc3NvcjwvYT48L2xpPgoJPGxpPkNNU01TIEZvcmdlOiA8YSBocmVmPSJodHRwOiNkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY3NzcHJlcHJvY2Vzc29yIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDojZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Nzc3ByZXByb2Nlc3NvcjwvYT48L2xpPgo8L3VsPgoKPGgyPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDI+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxNC0yMDE3LCBNYXRoaWV1IE11dGhzIDxhaXJlTGlicmU+IDxhIGhyZWY9Im1haWx0bzpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmNvbnRhY3RAYWlyZWxpYnJlLm5ldDwvYT4gLyA8YSBocmVmPSJodHRwczovL3d3dy5haXJlbGlicmUubmV0IiB0YXJnZXQ9Il9ibGFuayI+d3d3LmFpcmVsaWJyZS5uZXQ8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOiN3d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KCjxoMz5QcmVwcm9jZXNzb3JzIGNvcHlyaWdodDwvaDM+CjxwPgoJVGhlIGF1dGhvciBvZiB0aGlzIG1vZHVsZSBkb2VzIG5vdCBvd24gdGhlIHByZXByb2Nlc3NvcnMgYnVuZGxlZCB3aXRoIGl0IC0gUGxlYXNlIHNlZSBldmVyeSBwcmVwcm9jZXNzb3JzIHNvdXJjZSBjb2RlIC8gd2Vic2l0ZSB0byBnZXQgaW5mb3JtYXRpb25zIGFib3V0IGxpY2VuY2UgYW5kIGNvcHlyaWdodC4KPC9wPgo8cD5JIGp1c3Qgd2FudGVkIHRvIHRoYW5rIGFsbCB0aGUgZGV2ZWxvcGVycyB0aGF0IGNvbnRyaWJ1dGUgdG8gdGhlc2UgcHJlcHJvY2Vzc29ycyB3aGljaCBhcmUgZ3JlYXQgdG9vbHMgZm9yIGRlc2lnbmVycyE8L3A+Cjxicj4KPGJyPgo8YnI+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBBaXJlIGxpYnJlIC0gTWF0aGlldSBNdXRocyAmbHQ7Y29udGFjdEBhaXJlbGlicmUuZnImZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMy4wLWJldGEzPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgogICAgPGxpPgogICAgICAgIDxzdHJvbmc+My4wLWJldGEzPC9zdHJvbmc+IC0gMjAxOS0wOC0xMwogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgTmV3IERhcnQtU2FzcyBwcmVwcm9jZXNzb3IgaW50ZXJmYWNlIC0gUnVieSBzYXNzIHVzZXJzIHNob3VsZCB1cGdyYWRlIHRoZWlyIHNlcnZlciBhbmQgdXNlIHRoaXMgb25lIG5vdy4KICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgIFRoYW5rcyB0byA8ZW0+VG9tYXMgSGFscyBBbXNydWQ8L2VtPiBmb3IgaGVscAogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBCdWcgZml4ZXMgd2l0aCBzb3VyY2VtYXBzLCBtaW5pZnkgYW5kIGF1dG9wcmVmaXhlciAodGhlIGxhdGVyIHdhcyBzdHJpcHBpbmcgaXQpIC0gcGxlYXNlIHRlc3QgdmFyaW91cyBjb21iaW5hdGlvbnMuCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4zLjAtYmV0YTI8L3N0cm9uZz4gLSAyMDE5LTA4LTA3CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBVcGdyYWRlZCBsaWJzOiBTY3NzUEhQIHYuMS4wLjIKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQ01TTVMgMi4zIGNvbXBhdGliaWxpdHk6IHdvcmtzIHdpdGggRGVzaWduTWFuYWdlciBhbmQgZmlsZS1iYXNlZCB0ZW1wbGF0ZXMgLyBzdHlsZXNoZWV0cyB3aXRoIHRoZSBuZXcge2Ntc19xdWV1ZV9jc3N9IGFuZCB7Y21zX3JlbmRlcl9jc3N9CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIE5vdyBpbmNsdWRlcyBodHRwczovL2dpdGh1Yi5jb20vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciBhcyBhIFBIUCBBdXRvcHJlZml4ZXIgc28gaXQgZG9lcyBub3QgcmVseSBvbiBQb3N0Q1NTIGFueW1vcmUKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgVXBkYXRlZCBkb2NzICh0cmFuc2xhdG9ycyBwbGVhc2UgdXBkYXRlIHlvdXIgdmVyc2lvbnMpCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIENvZGUgY2xlYW51cAogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxzdHJvbmc+My4wLWJldGExPC9zdHJvbmc+IC0gMjAxNy0wNi0xOQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPk5vdyB3b3JrcyBpbiBDTVNNUyAyLjIrIGFuZCB1c2VzIHRoZSBob29rcyBzeXN0ZW0gdG8gcHJvY2VzcyB0aGUgZW50aXJlIFNDU1MvTEVTUyBjb2RlIGZyb20gdmFyaW91cyBzdHlsZXNoZWV0cyBkaXJlY3RseSBpbiB7Y21zX3N0eWxlc2hlZXR9PC9saT4KICAgICAgICAgICAgPGxpPldpdGggdGhlIG5ldyBDTVNNUyBzdHlsZXNoZWV0cyBob29rIHlvdSBjYW4gbm93IHVzZSBtYW55IFNhc3MvTGVzcyBzb3VyY2UgQ1NTIGZpbGVzIGluIHRoZSBEZXNpZ24gbWFuYWdlciAobm90IGxpbWl0ZWQgdG8gMSBhbnltb3JlKTwvbGk+CiAgICAgICAgICAgIDxsaT5Ob3cgdXNpbmcgQXV0b3ByZWZpeGVyIHdpdGggUG9zdGNzcyBkaXJlY3RseSBmcm9tIENMSSAtIHlvdSBtdXN0IGluc3RhbGwgaXQgb24geW91ciBzZXJ2ZXIgKHNlZSB0aGUgQ0xJIHRvb2wgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcG9zdGNzcy9hdXRvcHJlZml4ZXIpIC0gQnJvd3NlcnMgbGlzdCBwYXJhbWV0ZXIgcmVtb3ZlZDwvbGk+CiAgICAgICAgICAgIDxsaT5UaGUgQEBDU1NQcmVwcm9jZXNzb3JAQCB0YWcgaXMgbm8gbW9yZSBuZWVkZWQ6IHRoZSBlbnRpcmUgY29uY2F0ZW5hdGVkIHN0eWxlc2hlZXQgaXMgbm93IHByb2Nlc3NlZCAtIGlmIHlvdSBkb24ndCBuZWVkIHRoZSBDU1NQcmVwcm9jZXNzb3IgbW9kdWxlLCBzaW1wbHkgcmVtb3ZlIGl0IG9yIGRpc2FibGUgaXQuPC9saT4KICAgICAgICAgICAgPGxpPlJlbW92ZWQgdGhlIGluc3RhbGxlciAvIHVuaW5zdGFsbGVyIChub3RoaW5nIG1vcmUgdG8gaW5zdGFsbCBhbmQgdW5pbnN0YWxsIGFzIHRoZXJlIGlzIG5vIG1vcmUgZXZlbnQgaGFuZGxlciB0aGFua3MgdG8gdGhlIGhvb2tzIG1lY2hhbmlzbSk8L2xpPgogICAgICAgICAgICA8bGk+Tm93IGNsZWFycyB0aGUgQ01TTVMgY2FjaGUgd2hlbiB0aGUgbW9kdWxlIHByZWZlcmVuY2VzIGFyZSBjaGFuZ2VkPC9saT4KICAgICAgICAgICAgPGxpPkJ1ZyBmaXggd3J0IHNvdXJjZW1hcCBmaWxlcyBpbiBTYXNzPC9saT4KICAgICAgICAgICAgPGxpPlNtYWxsIGFkbWluIGxvb2sgY2hhbmdlPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjIuMTwvc3Ryb25nPiAtIDIwMTYtMDUtMDkgOiBidWcgZml4ZXMgd3J0IGFkbWluIHBhbmVsIGxvb2sKICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4yLjA8L3N0cm9uZz4gLSAyMDE2LTAxLTI1OiBzYXkgaGVsbG8gdG8gU0FTUyB0aHJvdWdoIGNvbW1hbmQgbGluZSBhbmQgc2Nzc3BocCEKICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5BZGRlZCBTYXNzIGZyb20gY29tbWFuZCBsaW5lICsgU2Nzc1BIUDwvbGk+CiAgICAgICAgICAgIDxsaT5CdWcgZml4ZXM8L2xpPgogICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiB1cGRhdGUgZm9yIENNU01TMiAtIE5vdGU6IG9ubHkgb25lIHN0eWxzaGVldCBpcyBhbGxvd2VkIGluIG9yZGVyIHRvIHdvcmsgaW4gQ01TTVMgMjwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4xLjQuMTwvc3Ryb25nPiAtIDIwMTYtMDEtMTg6IGJ1ZyBmaXggcmVsYXRlZCB0byBzbWFydHkgZGVsaW1pdGVycyAoIltbIiBhbmQgIl1dIikKICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4xLjQ8L3N0cm9uZz4gLSAyMDE2LTAxLTA4OgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPk1pbmltYWwgQ01TIHZlcnNpb24gPSAyLjEuMTwvbGk+CiAgICAgICAgICAgIDxsaT5Ob3cgdXNlcyB0aGUgU3R5bGVzaGVldFByZUNvbXBpbGUgZXZlbnQgaW5zdGVhZCBvZiB0aGUgU21hcnR5UHJlQ29tcGlsZTwvbGk+CiAgICAgICAgICAgIDxsaT5Tb21lIGJ1ZyBmaXhlIChkZWZhdWx0IFByZVByb2Nlc3NvciBiZWNvbWUgT3llam9yZ2VzIG9uZSk8L2xpPgogICAgICAgICAgICA8bGk+VXBkYXRlZCB0byBPeWVqb3JnZSdzIExlc3MucGhwIHYuIDEuNy4wLjEwIC0gcGxlYXNlIHRlc3QhPC9saT4KICAgICAgICAgICAgPGxpPlJlbW92ZWQgdGhlIC14IChjb21wcmVzcykgb3B0aW9uIGZyb20gTGVzcyBjb21tYW5kIGxpbmUgY29tcGlsZXIgUHJlcHJvY2Vzc29yIGFzIGl0J3Mgbm93IGRlcHJlY2F0ZWQgLSB5b3UgY2FuIHVzZSB0aGUgZW1iZWRlZCBtaW5pZmllcjwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PHN0cm9uZz4xLjM8L3N0cm9uZz4gLSAyMDE1LTAxLTIwOiBhZGQgc3VwcG9ydCBmb3IgQXV0b3ByZWZpeCBmb3IgdGhlIExlc3NjIGNvbW1hbmQgbGluZSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcG9zdGNzcy9hdXRvcHJlZml4ZXIgLSBjaGVjayBvdXQgbmV3IG9wdGlvbnMgb24gdGhlIGFkbWluIHBhbmVsIC0gcGxlYXNlIHRlc3Qgd2l0aCB5b3VyIHZlcnNpb24gb2YgTGVzc2M8L2xpPgogICAgPGxpPjxzdHJvbmc+MS4yPC9zdHJvbmc+IC0gMjAxNC0wOS0yNTogdXBkYXRlIHRvIHRoZSBwYXRocyAvIE5vdyB0aGUgaW5jbHVkZSBkaXIgaXMgcmVsYXRpdmUgdG8gdGhlIHJvb3QgcGF0aCAobm90IHRoZSB1cGxvYWRzIGFueW1vcmUpIC0gUGxlYXNlIHVwZGF0ZSB5b3VyIGNvbmZpZ3VyYXRpb24gdG8gYWRkIDxzdHJvbmc+dXBsb2Fkcy88L3N0cm9uZz4gaWYgbmVlZGVkITxicj4KICAgICAgICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgcGxhY2UgeW91ciBsZXNzIGZpbGVzIGluIGFub3RoZXIgZGlyIHRoYXQgdGhlIHVwbG9hZHMvIG9uZQogICAgPC9saT4KICAgIDxsaT48c3Ryb25nPjEuMTwvc3Ryb25nPiAtIDIwMTQtMDktMDM6IEFkZCBTbWFydHkgc3VwcG9ydCAtIE5vdGUgdGhhdCB0aGUgbW9kdWxlIG5vdyBwbHVncyBvbiB0aGUgU21hcnR5UHJlQ29tcGlsZSBldmVudCAoYmVmb3JlIGl0IHdhcyBTbWFydHlQb3N0Q29tcGlsZSkgLSBUaGlzIG5lZWRzIHRlc3RzPC9saT4KICAgIDxsaT48c3Ryb25nPjEuMC4xPC9zdHJvbmc+IC0gMjAxNC0wOS0wMzogQnVnIGZpeGVzPC9saT4KICAgIDxsaT48c3Ryb25nPjEuMDwvc3Ryb25nPiAtIDIwMTQtMDktMDI6IEluaXRpYWwgMS4wIHJlbGVhc2UgLSBQbGVhc2UgdGVzdCBhbmQgZ2l2ZSBtZSBmZWVkYmFjazwvbGk+CjwvdWw+PGJyIC8+]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgcmV0dXJuOwoKCgppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKQp7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJlcHJvY2Vzc29yJywgJHBhcmFtc1sncHJlcHJvY2Vzc29yJ10pOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ltcG9ydF9kaXJzJywgJHBhcmFtc1snaW1wb3J0X2RpcnMnXSk7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWluaWZ5JywgJHBhcmFtc1snbWluaWZ5J10pOwoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2dlbmVyYXRlX3NvdXJjZW1hcCcsICRwYXJhbXNbJ2dlbmVyYXRlX3NvdXJjZW1hcCddKTsKCQoJLy8gQXV0b3ByZWZpeGVyCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndXNlX2F1dG9wcmVmaXhlcicsICRwYXJhbXNbJ3VzZV9hdXRvcHJlZml4ZXInXSk7CgoKCWNtc21zKCktPmNsZWFyX2NhY2hlZF9maWxlcygtMSk7CiAgLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiAgYXVkaXQoJ0NTU1ByZXByb2Nlc3NvcicsICdTeXN0ZW0gbWFpbnRlbmFuY2UnLCAnQ2FjaGUgY2xlYXJlZCBhZnRlciBDU1NQcmVwcm9jZXNzb3IgcHJlZmVyZW5jZXMgY2hhbmdlJyk7CgkKCSR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygncHJlZmVyZW5jZXNfc2V0JykpOwp9CgoKCgoKLy8gUmV0cmlldmUgdGhlIGF2YWlsYWJsZSBwcmVwcm9jZXNzb3JzIGluIHRoZSBkaXJlY3RvcnkgInByZXByb2Nlc3NvcnMiCiRwcmVwcm9jZXNzb3JzID0gYXJyYXkoKTsKCiRyb290ID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLCAncHJlcHJvY2Vzc29ycycpOwokc2VhcmNoID0gY21zX2pvaW5fcGF0aCgkcm9vdCwgJyonKTsKJGRpcnMgPSBnbG9iKCRzZWFyY2gsIEdMT0JfT05MWURJUik7CgppZiAoJGRpcnMpCnsKCWZvcmVhY2ggKCRkaXJzIGFzICRvbmUpCgl7CgkJJHByZXByb2Nlc3NvciA9IGJhc2VuYW1lKCRvbmUpOwoJCQoJCS8vIFNlYXJjaCBpbmZvIDogbmFtZSwgbG9nbywgLi4uCgkJJGNsYXNzX25hbWUgPSAnUHJlcHJvY2Vzc29yXycuJHByZXByb2Nlc3NvcjsKCQlyZXF1aXJlX29uY2UoY21zX2pvaW5fcGF0aCgkcm9vdCwgJHByZXByb2Nlc3NvciwgJ2NsYXNzLicuJGNsYXNzX25hbWUuJy5waHAnKSk7CgkJCgkJJG9iaiA9IG5ldyBzdGRDbGFzczsKCQkkb2JqLT5kaXIgPSAkcHJlcHJvY2Vzc29yOwoJCSRvYmotPmZyaWVuZGx5X25hbWUgPSAkY2xhc3NfbmFtZTo6RlJJRU5ETFlfTkFNRTsKCQkkb2JqLT5kZXNjcmlwdGlvbiA9ICRjbGFzc19uYW1lOjpERVNDUklQVElPTjsKCQkkb2JqLT5hdXRob3IgPSAkY2xhc3NfbmFtZTo6QVVUSE9SOwoJCSRvYmotPndlYnNpdGUgPSAkY2xhc3NfbmFtZTo6V0VCU0lURTsKCQkKCQkkbG9nbyA9ICRjbGFzc19uYW1lOjpMT0dPOwoJCWlmICghZW1wdHkoJGxvZ28pKQoJCQkkb2JqLT5sb2dvID0gJGxvZ287CgkJCgkJJG5vdGUgPSAkY2xhc3NfbmFtZTo6Tk9URTsKCQlpZiAoIWVtcHR5KCRub3RlKSkKCQkJJG9iai0+bm90ZSA9ICRub3RlOwoJCQoJCSRwcmVwcm9jZXNzb3JzWyRjbGFzc19uYW1lOjpQUklPUklUWV0gPSAkb2JqOwoJfQoJLy8gT3JkZXIgYnkgcHJpb3JpdHkKCWtzb3J0KCRwcmVwcm9jZXNzb3JzKTsKCQoJJGFzc2lnblsncHJlcHJvY2Vzc29ycyddID0gJHByZXByb2Nlc3NvcnM7Cn0KCi8vIEN1cnJlbnQgcHJlcHJvY2Vzc29yCiRhc3NpZ25bJ2N1cnJlbnRfcHJlcHJvY2Vzc29yJ10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJlcHJvY2Vzc29yJywgJ0lMZXNzJyk7CiRhc3NpZ25bJ2ltcG9ydF9kaXJzJ10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW1wb3J0X2RpcnMnLCAnJyk7CiRhc3NpZ25bJ21pbmlmeSddID0gICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtaW5pZnknLCAwKTsKJGFzc2lnblsnZ2VuZXJhdGVfc291cmNlbWFwJ10gPSAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2dlbmVyYXRlX3NvdXJjZW1hcCcsIDApOwoKLy8gQXV0b3ByZWZpeGVyCiRhc3NpZ25bJ3VzZV9hdXRvcHJlZml4ZXInXSA9ICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX2F1dG9wcmVmaXhlcicsIDApOwoKCgovLyBDTVNNUyAxLjExIGNvbXBhdGliaWxpdHkKJGFzc2lnblsnbW9kJ10gPSAkdGhpczsKJGFzc2lnblsnZm9ybV9zdGFydCddID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdkZWZhdWx0YWRtaW4nKTsKJGFzc2lnblsnZm9ybV9lbmQnXSA9ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgpjbXNtcygpLT5HZXRTbWFydHkoKS0+YXNzaWduKCRhc3NpZ24pOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwcmVmZXJlbmNlcy50cGwnKTsKCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/admin_css/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/admin_css/csspreprocessor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CgoucHJlcHJvY2Vzc29yIHtkaXNwbGF5OiBibG9jazsgb3ZlcmZsb3c6IGhpZGRlbjsgd2lkdGg6IGF1dG87IGJhY2tncm91bmQ6ICNkZGQ7IGJvcmRlci1yYWRpdXM6IDVweDsgbWFyZ2luOiAwIDAgMTBweH0KLnByZXByb2Nlc3NvciBsYWJlbCwKLnByZXByb2Nlc3NvciBkaXYuZGVzY3JpcHRpb24ge3Bvc2l0aW9uOiByZWxhdGl2ZTsgZmxvYXQ6IGxlZnQ7IHBhZGRpbmctdG9wOiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweH0KCgovKi5wcmVwcm9jZXNzb3IgbGFiZWwge3dpZHRoOiAyMTBweDsgcmlnaHQ6IDIxMHB4OyBfcmlnaHQ6IDBweDsgbWFyZ2luOiAwIDAgMCAtMTAwJX0KLnByZXByb2Nlc3NvciBsYWJlbCAuaW5wdXRfcmFkaW8ge3RvcDogNXB4fSovCgoucHJlcHJvY2Vzc29yIC5pbnB1dF9yYWRpbyB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CglwYWRkaW5nLXRvcDogMzBweDsKfQoucHJlcHJvY2Vzc29yIC5sb2dvIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoucHJlcHJvY2Vzc29yIGltZyB7CgltYXgtd2lkdGg6IDgwJTsKCWhlaWdodDogYXV0bzsKCW1hcmdpbjogMTVweCAwOwp9CgoucHJlcHJvY2Vzc29yIGgyIHttYXJnaW4tdG9wOiAwfQo=]]></data>
	</file>
	<file>
	  <filename>/admin_css/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/CSSPreprocessor.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENTU1ByZXByb2Nlc3NvcgojIEF1dGhvcjogQWlyZWxpYnJlIC8gTWF0aGlldSBNdXRocyAtIHd3dy5haXJlbGlicmUubmV0CiMgQSBtb2R1bGUgdG8gaGVscCBkZXNpZ25lcnMgdG8gdXNlIENTUyBQcmVwcm9jZXNzb3IgaW4gb3JkZXIgdG8gcHJvY2VzcwojIExFU1Mgb3IgU0FTUyAobGF0ZXIpIGNvZGUuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDExIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jdXN0b21ncwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKdXNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxBdXRvcHJlZml4ZXI7CgpjbGFzcyBDU1NQcmVwcm9jZXNzb3IgZXh0ZW5kcyBDTVNNb2R1bGUKewoJZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewoJCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsKICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmFkZF9ob29rKCdDb3JlOjpTdHlsZXNoZWV0UG9zdFJlbmRlcicsIFskdGhpcywgJ1J1blByZXByb2Nlc3NvciddICk7CiAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjphZGRfaG9vaygnQ29yZTo6UG9zdFByb2Nlc3NDU1MnLCBbJHRoaXMsICdSdW5QcmVwcm9jZXNzb3InXSApOwoJfQoKCWZ1bmN0aW9uIEdldFZlcnNpb24oKSB7IHJldHVybiAnMy4wLWJldGEzJzsgfQoJZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMi4yLjknOyB9CglmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7fQoJZnVuY3Rpb24gR2V0SGVscCgpeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTt9CglmdW5jdGlvbiBHZXRBdXRob3IoKSB7IHJldHVybiAnQWlyZSBsaWJyZSAtIE1hdGhpZXUgTXV0aHMnOyB9CiAgICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjb250YWN0QGFpcmVsaWJyZS5mcic7IH0KCiAgICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7CgkJcmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKGRpcm5hbWUoX19GSUxFX18pLicvZG9jL2NoYW5nZWxvZy5odG1sJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7IHJldHVybiBmYWxzZTsgfQogICAgcHVibGljIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKSB7IHJldHVybiBmYWxzZTsgfQoKCiAgICAgIC8vIEFkbWluIHBhcmFtcwogICAgICBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIHRydWU7IH0KICAgICAgZnVuY3Rpb24gSXNBZG1pbk9ubHkoKSB7IHJldHVybiBmYWxzZTsgfQoKICAgIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsgcmV0dXJuICdsYXlvdXQnOyB9CiAgICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKSAKICAgIHsKCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFN0eWxlc2hlZXRzJyk7CiAgICB9CgogICAgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgpIAogICAgewogICAgICAgICRjc3NGaWxlID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+Z2V0TW9kdWxlUGF0aCgpLCAnYWRtaW5fY3NzJywgJ2Nzc3ByZXByb2Nlc3Nvci5jc3MnKTsKICAgICAgICAkY3NzVXJsID0gc3RyX3JlcGxhY2UoQ01TX1JPT1RfUEFUSCwgQ01TX1JPT1RfVVJMLCAkY3NzRmlsZSk7CiAgICAgICAgJGhlYWRlciA9ICc8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IicgLiAkY3NzVXJsIC4gJyI+JzsKCQlyZXR1cm4gJGhlYWRlcjsKICAgIH0KCgoKICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIC8vIE5PTi1BUEkgQ1VTVE9NIEZVTkNUSU9OUwogICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRQcmVwcm9jZXNzb3IoKQogICAgewoJCSRwcmVwcm9jZXNzb3JfbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcmVwcm9jZXNzb3InLCAnTGVzc1BIUE95ZWpvcmdlJyk7CgoJCXJlcXVpcmVfb25jZShjbXNfam9pbl9wYXRoKF9fRElSX18sICdwcmVwcm9jZXNzb3JzJywgJHByZXByb2Nlc3Nvcl9uYW1lLCAnY2xhc3MuUHJlcHJvY2Vzc29yXycgLiAkcHJlcHJvY2Vzc29yX25hbWUgLiAnLnBocCcpKTsKCgkJJGNsYXNzX25hbWUgPSAnUHJlUHJvY2Vzc29yXycgLiAkcHJlcHJvY2Vzc29yX25hbWU7CgkJJG9iaiA9IG5ldyAkY2xhc3NfbmFtZSgpOwoKCQkkb2JqLT5Mb2FkKCk7CgoJCXJldHVybiAkb2JqOwogICAgfQoKCgoKICAgIC8vIFJ1biB0aGUgcHJlcHJvY2Vzc29yCiAgICBwdWJsaWMgZnVuY3Rpb24gUnVuUHJlcHJvY2Vzc29yKCRwYXJhbXMpCiAgICB7CgkJLy8gUHJlcHJvY2Vzc29yIGxvYWQgYW5kIHJ1bgoJCWlmICgkcHJlcHJvY2Vzc29yID0gJHRoaXMtPkdldFByZXByb2Nlc3NvcigpKQoJCXsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRwYXJhbXMpKSB7CiAgICAgICAgICAgICAgICAkY3NzQ29udGVudCA9ICYkcGFyYW1zWydjb250ZW50J107CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY3NzQ29udGVudCA9ICYkcGFyYW1zOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwcmVwcm9jZXNzb3ItPkNvbXBpbGVDU1MoJGNzc0NvbnRlbnQpOwoKCQkJaWYgKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndXNlX2F1dG9wcmVmaXhlcicsIDApICkKCQkJewogICAgICAgICAgICAgICAgcmVxdWlyZV9vbmNlKGNtc19qb2luX3BhdGgoX19ESVJfXywnbGliJywndmVuZG9yJywgJ2F1dG9sb2FkLnBocCcpKTsKICAgICAgICAgICAgICAgICRhdXRvUHJlZml4ZXIgPSBuZXcgQXV0b3ByZWZpeGVyKCRjc3NDb250ZW50KTsKICAgICAgICAgICAgICAgICRjc3NDb250ZW50ID0gJGF1dG9QcmVmaXhlci0+Y29tcGlsZSgpOwoJCQl9CgoJCQkvLyBNaW5pZnkKCQkJaWYgKCRwcmVwcm9jZXNzb3ItPm1pbmlmeSkgewoJCQkJJHByZXByb2Nlc3Nvci0+bWluaWZ5Q1NTKCRjc3NDb250ZW50KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gU291cmNlbWFwID8KICAgICAgICAgICAgaWYgKCRwcmVwcm9jZXNzb3ItPmdlbmVyYXRlX3NvdXJjZW1hcCAmJiAkcHJlcHJvY2Vzc29yLT5zb3VyY2VfbWFwX3VybCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gQW5kIGFkZCBzb3VyY2VtYXAgYmVjYXVzZSBtaW5pZnkgcmVtb3ZlcyBjb21tZW50cwogICAgICAgICAgICAgICAgJGNzc0NvbnRlbnQgLj0gIi8qIyBzb3VyY2VNYXBwaW5nVVJMPSIgLiAkcHJlcHJvY2Vzc29yLT5zb3VyY2VfbWFwX3VybCAuICIgKi8iOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGNzc0NvbnRlbnQ7CiAgICAgICAgfQogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/changelog.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogICAgPGxpPgogICAgICAgIDxzdHJvbmc+My4wLWJldGEzPC9zdHJvbmc+IC0gMjAxOS0wOC0xMwogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgTmV3IERhcnQtU2FzcyBwcmVwcm9jZXNzb3IgaW50ZXJmYWNlIC0gUnVieSBzYXNzIHVzZXJzIHNob3VsZCB1cGdyYWRlIHRoZWlyIHNlcnZlciBhbmQgdXNlIHRoaXMgb25lIG5vdy4KICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgIFRoYW5rcyB0byA8ZW0+VG9tYXMgSGFscyBBbXNydWQ8L2VtPiBmb3IgaGVscAogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBCdWcgZml4ZXMgd2l0aCBzb3VyY2VtYXBzLCBtaW5pZnkgYW5kIGF1dG9wcmVmaXhlciAodGhlIGxhdGVyIHdhcyBzdHJpcHBpbmcgaXQpIC0gcGxlYXNlIHRlc3QgdmFyaW91cyBjb21iaW5hdGlvbnMuCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4zLjAtYmV0YTI8L3N0cm9uZz4gLSAyMDE5LTA4LTA3CiAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBVcGdyYWRlZCBsaWJzOiBTY3NzUEhQIHYuMS4wLjIKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgQ01TTVMgMi4zIGNvbXBhdGliaWxpdHk6IHdvcmtzIHdpdGggRGVzaWduTWFuYWdlciBhbmQgZmlsZS1iYXNlZCB0ZW1wbGF0ZXMgLyBzdHlsZXNoZWV0cyB3aXRoIHRoZSBuZXcge2Ntc19xdWV1ZV9jc3N9IGFuZCB7Y21zX3JlbmRlcl9jc3N9CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIE5vdyBpbmNsdWRlcyBodHRwczovL2dpdGh1Yi5jb20vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciBhcyBhIFBIUCBBdXRvcHJlZml4ZXIgc28gaXQgZG9lcyBub3QgcmVseSBvbiBQb3N0Q1NTIGFueW1vcmUKICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgVXBkYXRlZCBkb2NzICh0cmFuc2xhdG9ycyBwbGVhc2UgdXBkYXRlIHlvdXIgdmVyc2lvbnMpCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIENvZGUgY2xlYW51cAogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICA8L2xpPgogICAgPGxpPgogICAgICAgIDxzdHJvbmc+My4wLWJldGExPC9zdHJvbmc+IC0gMjAxNy0wNi0xOQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPk5vdyB3b3JrcyBpbiBDTVNNUyAyLjIrIGFuZCB1c2VzIHRoZSBob29rcyBzeXN0ZW0gdG8gcHJvY2VzcyB0aGUgZW50aXJlIFNDU1MvTEVTUyBjb2RlIGZyb20gdmFyaW91cyBzdHlsZXNoZWV0cyBkaXJlY3RseSBpbiB7Y21zX3N0eWxlc2hlZXR9PC9saT4KICAgICAgICAgICAgPGxpPldpdGggdGhlIG5ldyBDTVNNUyBzdHlsZXNoZWV0cyBob29rIHlvdSBjYW4gbm93IHVzZSBtYW55IFNhc3MvTGVzcyBzb3VyY2UgQ1NTIGZpbGVzIGluIHRoZSBEZXNpZ24gbWFuYWdlciAobm90IGxpbWl0ZWQgdG8gMSBhbnltb3JlKTwvbGk+CiAgICAgICAgICAgIDxsaT5Ob3cgdXNpbmcgQXV0b3ByZWZpeGVyIHdpdGggUG9zdGNzcyBkaXJlY3RseSBmcm9tIENMSSAtIHlvdSBtdXN0IGluc3RhbGwgaXQgb24geW91ciBzZXJ2ZXIgKHNlZSB0aGUgQ0xJIHRvb2wgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcG9zdGNzcy9hdXRvcHJlZml4ZXIpIC0gQnJvd3NlcnMgbGlzdCBwYXJhbWV0ZXIgcmVtb3ZlZDwvbGk+CiAgICAgICAgICAgIDxsaT5UaGUgQEBDU1NQcmVwcm9jZXNzb3JAQCB0YWcgaXMgbm8gbW9yZSBuZWVkZWQ6IHRoZSBlbnRpcmUgY29uY2F0ZW5hdGVkIHN0eWxlc2hlZXQgaXMgbm93IHByb2Nlc3NlZCAtIGlmIHlvdSBkb24ndCBuZWVkIHRoZSBDU1NQcmVwcm9jZXNzb3IgbW9kdWxlLCBzaW1wbHkgcmVtb3ZlIGl0IG9yIGRpc2FibGUgaXQuPC9saT4KICAgICAgICAgICAgPGxpPlJlbW92ZWQgdGhlIGluc3RhbGxlciAvIHVuaW5zdGFsbGVyIChub3RoaW5nIG1vcmUgdG8gaW5zdGFsbCBhbmQgdW5pbnN0YWxsIGFzIHRoZXJlIGlzIG5vIG1vcmUgZXZlbnQgaGFuZGxlciB0aGFua3MgdG8gdGhlIGhvb2tzIG1lY2hhbmlzbSk8L2xpPgogICAgICAgICAgICA8bGk+Tm93IGNsZWFycyB0aGUgQ01TTVMgY2FjaGUgd2hlbiB0aGUgbW9kdWxlIHByZWZlcmVuY2VzIGFyZSBjaGFuZ2VkPC9saT4KICAgICAgICAgICAgPGxpPkJ1ZyBmaXggd3J0IHNvdXJjZW1hcCBmaWxlcyBpbiBTYXNzPC9saT4KICAgICAgICAgICAgPGxpPlNtYWxsIGFkbWluIGxvb2sgY2hhbmdlPC9saT4KICAgICAgICA8L3VsPgogICAgPC9saT4KICAgIDxsaT4KICAgICAgICA8c3Ryb25nPjIuMTwvc3Ryb25nPiAtIDIwMTYtMDUtMDkgOiBidWcgZml4ZXMgd3J0IGFkbWluIHBhbmVsIGxvb2sKICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4yLjA8L3N0cm9uZz4gLSAyMDE2LTAxLTI1OiBzYXkgaGVsbG8gdG8gU0FTUyB0aHJvdWdoIGNvbW1hbmQgbGluZSBhbmQgc2Nzc3BocCEKICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT5BZGRlZCBTYXNzIGZyb20gY29tbWFuZCBsaW5lICsgU2Nzc1BIUDwvbGk+CiAgICAgICAgICAgIDxsaT5CdWcgZml4ZXM8L2xpPgogICAgICAgICAgICA8bGk+RG9jdW1lbnRhdGlvbiB1cGRhdGUgZm9yIENNU01TMiAtIE5vdGU6IG9ubHkgb25lIHN0eWxzaGVldCBpcyBhbGxvd2VkIGluIG9yZGVyIHRvIHdvcmsgaW4gQ01TTVMgMjwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4xLjQuMTwvc3Ryb25nPiAtIDIwMTYtMDEtMTg6IGJ1ZyBmaXggcmVsYXRlZCB0byBzbWFydHkgZGVsaW1pdGVycyAoIltbIiBhbmQgIl1dIikKICAgIDwvbGk+CiAgICA8bGk+CiAgICAgICAgPHN0cm9uZz4xLjQ8L3N0cm9uZz4gLSAyMDE2LTAxLTA4OgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPk1pbmltYWwgQ01TIHZlcnNpb24gPSAyLjEuMTwvbGk+CiAgICAgICAgICAgIDxsaT5Ob3cgdXNlcyB0aGUgU3R5bGVzaGVldFByZUNvbXBpbGUgZXZlbnQgaW5zdGVhZCBvZiB0aGUgU21hcnR5UHJlQ29tcGlsZTwvbGk+CiAgICAgICAgICAgIDxsaT5Tb21lIGJ1ZyBmaXhlIChkZWZhdWx0IFByZVByb2Nlc3NvciBiZWNvbWUgT3llam9yZ2VzIG9uZSk8L2xpPgogICAgICAgICAgICA8bGk+VXBkYXRlZCB0byBPeWVqb3JnZSdzIExlc3MucGhwIHYuIDEuNy4wLjEwIC0gcGxlYXNlIHRlc3QhPC9saT4KICAgICAgICAgICAgPGxpPlJlbW92ZWQgdGhlIC14IChjb21wcmVzcykgb3B0aW9uIGZyb20gTGVzcyBjb21tYW5kIGxpbmUgY29tcGlsZXIgUHJlcHJvY2Vzc29yIGFzIGl0J3Mgbm93IGRlcHJlY2F0ZWQgLSB5b3UgY2FuIHVzZSB0aGUgZW1iZWRlZCBtaW5pZmllcjwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvbGk+CiAgICA8bGk+PHN0cm9uZz4xLjM8L3N0cm9uZz4gLSAyMDE1LTAxLTIwOiBhZGQgc3VwcG9ydCBmb3IgQXV0b3ByZWZpeCBmb3IgdGhlIExlc3NjIGNvbW1hbmQgbGluZSAtIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcG9zdGNzcy9hdXRvcHJlZml4ZXIgLSBjaGVjayBvdXQgbmV3IG9wdGlvbnMgb24gdGhlIGFkbWluIHBhbmVsIC0gcGxlYXNlIHRlc3Qgd2l0aCB5b3VyIHZlcnNpb24gb2YgTGVzc2M8L2xpPgogICAgPGxpPjxzdHJvbmc+MS4yPC9zdHJvbmc+IC0gMjAxNC0wOS0yNTogdXBkYXRlIHRvIHRoZSBwYXRocyAvIE5vdyB0aGUgaW5jbHVkZSBkaXIgaXMgcmVsYXRpdmUgdG8gdGhlIHJvb3QgcGF0aCAobm90IHRoZSB1cGxvYWRzIGFueW1vcmUpIC0gUGxlYXNlIHVwZGF0ZSB5b3VyIGNvbmZpZ3VyYXRpb24gdG8gYWRkIDxzdHJvbmc+dXBsb2Fkcy88L3N0cm9uZz4gaWYgbmVlZGVkITxicj4KICAgICAgICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgcGxhY2UgeW91ciBsZXNzIGZpbGVzIGluIGFub3RoZXIgZGlyIHRoYXQgdGhlIHVwbG9hZHMvIG9uZQogICAgPC9saT4KICAgIDxsaT48c3Ryb25nPjEuMTwvc3Ryb25nPiAtIDIwMTQtMDktMDM6IEFkZCBTbWFydHkgc3VwcG9ydCAtIE5vdGUgdGhhdCB0aGUgbW9kdWxlIG5vdyBwbHVncyBvbiB0aGUgU21hcnR5UHJlQ29tcGlsZSBldmVudCAoYmVmb3JlIGl0IHdhcyBTbWFydHlQb3N0Q29tcGlsZSkgLSBUaGlzIG5lZWRzIHRlc3RzPC9saT4KICAgIDxsaT48c3Ryb25nPjEuMC4xPC9zdHJvbmc+IC0gMjAxNC0wOS0wMzogQnVnIGZpeGVzPC9saT4KICAgIDxsaT48c3Ryb25nPjEuMDwvc3Ryb25nPiAtIDIwMTQtMDktMDI6IEluaXRpYWwgMS4wIHJlbGVhc2UgLSBQbGVhc2UgdGVzdCBhbmQgZ2l2ZSBtZSBmZWVkYmFjazwvbGk+CjwvdWw+]]></data>
	</file>
	<file>
	  <filename>/doc/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgojIEMKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbCc7CiRsYW5nWydjc3NfcHJlcHJvY2Vzc29yJ10gPSAnQ1NTIFByZXByb2Nlc3Nvcic7CiRsYW5nWydjaG9vc2VfcHJlcHJvY2Vzc29yJ10gPSAnQ2hvb3NlIHRoZSBwcmVwcm9jZXNzb3IgeW91IHdhbnQgdG8gdXNlJzsKCgojIEYKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NTUyBQcmVwcm9jZXNzb3InOwoKCiMgRwokbGFuZ1snZ2VuZXJhdGVfc291cmNlbWFwJ10gPSAnU291cmNlIG1hcCc7CiRsYW5nWydnZW5lcmF0ZV9zb3VyY2VtYXBfbGFiZWwnXSA9ICdHZW5lcmF0ZSBhIHNvdXJjZSBtYXAsIGlmIHRoZSBQcmVQcm9jZXNzb3Igc3VwcG9ydHMgaXQnOwoKCiMgSAoKCgojIEkKJGxhbmdbJ2ltcG9ydF9kaXJzJ10gPSAnRGlyZWN0b3JpZXMgY29udGFpbmluZyBMRVNTL1NBU1MgZmlsZXMgdG8gaW5jbHVkZSBpbiBjb21waWxhdGlvbiAtIFJlbGF0aXZlIHRvIHRoZSA8c3Ryb25nPnJvb3Q8L3N0cm9uZz4gZGlyIC0gQ29tbWEgc2VwYXJhdGVkIGxpc3QnOwoKIyBNCiRsYW5nWydtaW5pZnknXSA9ICdNaW5pZnknOwokbGFuZ1snbWluaWZ5X2xhYmVsJ10gPSAnTWluaWZ5IHRoZSBDU1MnOwoKIyBOCiRsYW5nWydub3RlJ10gPSAnTm90ZTonOwoKCiMgTwokbGFuZ1snb3B0aW9ucyddID0gJ09wdGlvbnMnOwoKCiMgUAokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQcmVmZXJlbmNlcyc7CiRsYW5nWydwcmVmZXJlbmNlc19zZXQnXSA9ICdQcmVmZXJlbmNlcyBzYXZlZCc7CgoKCgojIFMKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CgoKIyBVCiRsYW5nWyd1c2VfYXV0b3ByZWZpeGVyJ10gPSAnVXNlIFBIUC1BdXRvcHJlZml4ZXIgKG1vcmUgaW5mbzogPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2dpdGh1Yi5jb20vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlcjwvYT4pJzsKCgoKCgoKJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVAo8aDI+V2hhdCBkb2VzIHRoaXMgZG8/PC9oMj4KPHA+VGhpcyBtb2R1bGUgYWRkcyB0byB0aGUgQ01TTVMgZmlsZS1iYXNlZCBzdHlsZXNoZWV0cyAoQ01TTVMgMi4zKykgYW5kL29yIERlc2lnbk1hbmFnZXIgc29tZSBDU1MgUHJlcHJvY2Vzc29ycywgaW4gb3JkZXIgdG8gY29tcGlsZSBMRVNTIG9yIFNBU1MgbGFuZ3VhZ2VzIChvciBvdGhlciBtYXliZSBsYXRlcikuPC9wPgoKPGgyPkhvdyBkb2VzIGl0IHdvcmsgYW5kIGludGVncmF0ZSBpbiBDTVNNUzwvaDI+CjxwPgoJVGhpcyBtb2R1bGUgaXMgbGF1bmNoZWQgYWZ0ZXIgYWxsIHRoZSBzdHlsZXNoZWV0cyBoYXZlIGJlZW4gY29tYmluZWQgKHRocm91Z2ggY21zX3N0eWxlc2hlZXQgb3IgY21zX3JlbmRlcl9jc3MpLCBhbmQgaXQgdGFrZXMgYWxsIHRoZSBDU1MgY29udGVudCB0byBnaXZlIGl0IHRvIHRoZSBQcmVwcm9jZXNzb3Igb2YgeW91ciBjaG9pY2UuCjwvcD4KPHA+CglLZWVwIGluIG1pbmQgdGhhdCB0aGlzIG1vZHVsZSBwcm9jZXNzZXMgdGhlIGVudGlyZSBzdHlsZXNoZWV0IGFmdGVyIHRoZWlyIGNvbWJpbmF0aW9uLiBObyBtYXR0ZXIgaWYgeW91IHVzZSAxIG9yIDEwIHN0eWxlc2hlZXRzIGluIHlvdXIgZGVzaWduLCB0aGUgcHJlcHJvY2Vzc29yIHdpbGwgb25seSBwcm9jZXNzIGl0IG9uZSB0aW1lLCBhbmQgaXQgd2lsbCBvbmx5IHByb2Nlc3MgaXQgd2hlbiB0aGVyZSdzIGEgY2hhbmdlIGluIG9uZSBvZiB0aGUgaW5jbHVkZWQgc3R5bGVzaGVldC4KPC9wPgoKCjxoMj5Ib3cgRG8gSSBVc2UgSXQ8L2gyPgo8dWw+Cgk8bGk+CgkJRGVmaW5lIHlvdXIgaW1wb3J0IGRpcmVjdG9yaWVzLCBpZiB5b3UgdXNlIGl0LiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW50ZWdyYXRlIEJvb3RzdHJhcCwgeW91IGNhbjoKCQk8b2w+CgkJCTxsaT5QdXQgeW91ciBCb290c3RyYXAgU0FTUyBzb3VyY2UgZmlsZXMgaW4gYXNzZXRzL2Jvb3RzdHJhcC8gKG9yIG1heWJlIGFzc2V0cy90aGVtZXMvTXlUaGVtZU5hbWUvc2Nzcy9ib290c3RyYXAgaWYgeW91IGFyZSB1c2luZyB0aGUgdGhlbWVzIHN5c3RlbSk8L2xpPgoJCQk8bGk+VHlwZSA8c3Ryb25nPjxlbT5hc3NldHMvYm9vdHN0cmFwPC9lbT48L3N0cm9uZz4gaW4gdGhlICJEaXJlY3RvcmllcyBjb250YWluaW5nIExFU1MvU0FTUyBmaWxlcyB0byBpbmNsdWRlIGluIGNvbXBpbGF0aW9uIiAtIE5vIHNsYXNoIGF0IGJlZ2lubmluZyBvciBlbmQ8L2xpPgogICAgICAJCTxsaT4KICAgICAgCQkJQ3JlYXRlIG9uZSBvciBtb3JlICJjdXN0b20iIHN0eWxlc2hlZXQgaW4gdGhlIERlc2lnbiBNYW5hZ2VyIGFuZCBsaW5rIGl0IHRvIHlvdXIgZGVzaWduLgogICAgICAJCQk8YnI+CiAgICAgIAkJCU9SCiAgICAgIAkJCTxicj4KICAgICAgCQkJUXVldWUgeW91ciB2YXJpb3VzIENTUyBpbiB5b3VyIHRlbXBsYXRlIHdpdGgge2Ntc19xdWV1ZV9jc3MgZmlsZT0iYXNzZXRzL3RoZW1lcy9NeVRoZW1lTmFtZS9jc3MvbWFpbi1zdHlsZXNoZWV0LnNjc3MifQogICAgICAJCTwvbGk+CiAgICAgIAkJPGxpPgogICAgICAJCQlVc2Uge2Ntc19zdHlsZXNoZWV0fSBvciB7Y21zX3JlbmRlcl9jc3N9IGFjY29yZGluZyB0byBob3cgeW91J3JlIHdvcmtpbmcgd2l0aCBzdHlsZXNoZWV0cyBpbiBDTVMgTWFkZSBTaW1wbGUuIENTUyBQcmVwcm9jZXNzb3Igd29ya3Mgd2l0aCBib3RoLgogICAgICAJCTwvbGk+CgkJPC9vbD4KCTwvbGk+CiAgPGxpPgoJCVNhbWUgY2FuIGJlIGRvbmUgZm9yIEZvdW5kYXRpb246CgkJPG9sPgoJCQk8bGk+UHV0IHlvdXIgRm91bmRhdGlvbiBTQVNTIHNvdXJjZSBmaWxlcyBpbiBhc3NldHMvZm91bmRhdGlvbi9zY3NzPC9saT4KCQkJPGxpPlR5cGUgPHN0cm9uZz48ZW0+YXNzZXRzL2ZvdW5kYXRpb24vc2NzczwvZW0+PC9zdHJvbmc+IGluIHRoZSAiRGlyZWN0b3JpZXMgY29udGFpbmluZyBMRVNTL1NBU1MgZmlsZXMgdG8gaW5jbHVkZSBpbiBjb21waWxhdGlvbiIgLSBObyBzbGFzaCBhdCBiZWdpbm5pbmcgb3IgZW5kPC9saT4KCQkJPGxpPgoJCQkJQ2FsbCB0aGUgZm91bmRhdGlvbiBtaXhpbnMgLyBydWxlcyBpbiB5b3VyIG1haW4gQ1NTIGZpbGUKCQkJPC9saT4KCQk8L29sPgoJPC9saT4KCTxsaT5TdGFydCB1c2luZyBMRVNTIC8gU0FTUyBjb2RlIGluIHlvdXIgc3R5bGVzaGVldHMhPC9saT4KPC91bD4KCgo8aDI+VXBkYXRpbmcgc3R5bGVzaGVldHM8L2gyPgo8cD4KCUlmIHlvdSBtYWtlIGFuIHVwZGF0ZSBvbiBhIERlc2lnbk1hbmFnZXIgb3IgZmlsZS1iYXNlZCBzdHlsZXNoZWV0IChxdWV1ZWQgd2l0aCBjbXNfcXVldWVfY3NzKSwgdGhlIG1vZHVsZSB3aWxsIHByb2Nlc3MgdGhlIHN0eWxlc2hlZXQgYWdhaW4gb24gdGhlIG5leHQgcGFnZSByZWZyZXNoLgo8L3A+CjxwPgoJSG93ZXZlciwgaWYgeW91IGRpZCBtYWtlIGEgY2hhbmdlIGluIHlvdXIgaW1wb3J0ZWQgbGVzcyBmaWxlcywgdGhlIHN5c3RlbSB3aWxsIG5vdCBwZXJmb3JtIGFueSB1cGRhdGUgLSBpbiB0aGlzIGNhc2UsIHlvdSBtdXN0IGNsZWFyIHRoZSBjYWNoZSBvciBzaW1wbHkgc2F2ZSB5b3VyIGRlc2lnbm1hbmFnZXIgc3R5bGVzaGVldCB0byBtYWtlIHRoZSB7Y21zX3N0eWxlc2hlZXR9IHBsdWdpbiBwcm9jZXNzIHRoZSBjc3MgYWdhaW4uCgk8YnI+CglJbiBDTVNNUyAyLjMrIHlvdXIgY2FuIHVzZSB7Y21zX3JlbmRlcl9jc3MgZm9yY2U9dHJ1ZX0gdG8gY29tYmluZSBhbmQgcHJvY2VzcyB0aGUgd2hvbGUgc3R5bGVzaGVldHMgb24gZXZlcnkgcGFnZSByZWZyZXNoICh1c2VmdWwgb24gZGV2ZWxvcG1lbnQpLgo8L3A+CgoKPGgyPlNtYXJ0eSBzdXBwb3J0PC9oMj4KPHA+QXMgdGhpcyBtb2R1bGUgdXNlcyB7Y21zX3N0eWxlc2hlZXR9IGFuZC9vciB7Y21zX3JlbmRlcl9jc3N9LCB5b3UgY2FuIHVzZSBTbWFydHkgdGFncyB3aXRoIFtbIGFuZCBdXSAtIFNtYXJ0eSB3aWxsIGJlIHByb2Nlc3NlZCBiZWZvcmUgdGhlIENTUyBQcmVQcm9jZXNzb3IuPC9wPgoKPGgyPlVzaW5nIFNvdXJjZW1hcHM8L2gyPgo8cD4KCVNvbWUgcHJlcHJvY2Vzc29ycyBjYW4gY3JlYXRlIHNvdXJjZW1hcCBmaWxlcywgaW4gb3JkZXIgdG8gaGVscCB5b3UgZHVyaW5nIGludGVncmF0aW9uLiBEb24ndCBmb3JnZXQgdG8gY29uZmlndXJlIHlvdXIgYnJvd3NlciB0byB1c2UgdGhhdCBmdW5jdGlvbi4gTm90ZSB0aGF0IG9ubHkgaW1wb3J0ZWQgZmlsZXMgd2lsbCBiZSBtYXBwZWQgaW4gdGhlIHNvdXJjZW1hcHMgKHRoaXMgbWF5IGNoYW5nZSBpbiBhIGZ1cnRoZXIgdmVyc2lvbikuPGJyPkRvbid0IGZvcmdldCB0byBkaXNhYmxlIHRoZSBzb3VyY2VtYXBzIGZvciBwcm9kdWN0aW9uLgo8L3A+Cgo8aDI+U2VjdXJpbmcgeW91ciBzY3NzIHNvdXJjZSBmaWxlczwvaDI+CjxwPgoJSW4gcHJvZHVjdGlvbiwgeW91IHNob3VsZCBkaXNhYmxlIHlvdXIgLnNjc3Mgc291cmNlIGZpbGVzIGZyb20gYmVpbmcgdmlld2VkIGluIGEgYnJvd3Nlci4gWW91IG1heSB1c2UgYW4gLmh0YWNjZXNzIHJ1bGUgZm9yIEFwYWNoZSwgbGlrZSB0aGlzIG9uZToKCTxicj4KCTxlbT5SZWRpcmVjdE1hdGNoIDQwMyBeLiovYXNzZXRzLy4qXC5zY3NzJDwvZW0+Cgk8YnI+CglZb3Ugc2hvdWxkIGNvbW1lbnQgdGhpcyBsaW5lIGluIERldmVsb3BtZW50IGlmIHlvdSB3YW50IHRvIHVzZSBTb3VyY2VtYXBzIGJlY2F1c2UgeW91ciBicm93c2VyIHdpbGwgdHJ5IHRvIG9wZW4gaXQgaW4gdGhlIGluc3BlY3Rvci4KPC9wPgoKPGgyPkRlYWN0aXZhdGUgdGhlIG1vZHVsZTwvaDI+CjxwPgoJSWYgeW91IGRvbid0IHdhbnQgdG8gdXNlIGFueSBvZiB0aGUgcHJlcHJvY2Vzc29ycywgcGxlYXNlIHJlbW92ZSBpdCBvciBkaXNhYmxlIGl0IGluIHRoZSBNb2R1bGVzIE1hbmFnZXIgLSBUaGVyZSBhcmUgbm8gImRlYWN0aXZhdGUiIGZ1bmN0aW9uIGJ1aWx0IGluIHRoZSBtb2R1bGUuCjwvcD4KCjxoMj5QcmVwcm9jZXNzb3Igc3dpdGNoPC9oMj4KPHA+CglZb3UgbWF5IHdhbnQgdG8gc3dpdGNoIGZyb20gb25lIHByZXByb2Nlc3NvciB0byBhbm90aGVyIC0gVGhlIG1vZHVsZSBzaG91bGQgY2xlYXIgdGhlIGNhY2hlIG9uIHByZWZlcmVuY2VzIGNoYW5nZSBzbyBvbiB0aGUgbmV4dCBwYWdlIHJlZnJlc2ggaW4geW91ciBicm93c2VyIHRoZSB3aG9sZSBDU1Mgd2lsbCBiZSBwcmVwcm9jZXNzZWQgYWdhaW4uCjwvcD4KCjxoMj5FeHRlbmQgd2l0aCBhbm90aGVyIHByZXByb2Nlc3NvcjwvaDI+CjxwPgoJWW91IGNhbiBjcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGluIHRoZSAicHJlcHJvY2Vzc29ycyIgZGlyZWN0b3J5LCBhbmQgY3JlYXRlIHlvdXIgb3duIGNsYXNzIC0gQ2hlY2sgaG93IHRoZSBidW5kbGVkIHByZXByb2Nlc3NvcnMgYXJlIGludGVncmF0ZWQuCjwvcD4KPHA+RG9uJ3QgZm9yZ2V0IHRvIDxhIGhyZWY9Im1haWx0bzpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmVtYWlsIG1lPC9hPiBpZiB5b3Ugd2FudCB5b3VyIHByZXByb2Nlc3NvciB0byBiZSBhZGRlZCB0byB0aGUgcHJvamVjdCE8L3A+Cgo8aDI+U3VwcG9ydDwvaDI+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+CjxwPgoJSWYgeW91IHdhbnQgdG8gY29udGFjdCBtZTogPGEgaHJlZj0ibWFpbHRvOmNvbnRhY3RAYWlyZWxpYnJlLm5ldCI+Y29udGFjdEBhaXJlbGlicmUubmV0PC9hPgo8L3A+Cgo8aDI+UHJvamVjdCBvbiB0aGUgd2ViPC9oMj4KPHA+WW91IGNhbiBmb2xsb3cgdGhlIHByb2plY3Qgb24gOiA8L3A+Cjx1bD4KCTxsaT5HaXRIdWI6IDxhIGhyZWY9Imh0dHBzOiNnaXRodWIuY29tL2FpcmVsaWJyZS9DU1NQcmVwcm9jZXNzb3IiIHRhcmdldD0iX2JsYW5rIj5odHRwczojZ2l0aHViLmNvbS9haXJlbGlicmUvQ1NTUHJlcHJvY2Vzc29yPC9hPjwvbGk+Cgk8bGk+Q01TTVMgRm9yZ2U6IDxhIGhyZWY9Imh0dHA6I2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jc3NwcmVwcm9jZXNzb3IiIHRhcmdldD0iX2JsYW5rIj5odHRwOiNkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY3NzcHJlcHJvY2Vzc29yPC9hPjwvbGk+CjwvdWw+Cgo8aDI+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMj4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE0LTIwMTcsIE1hdGhpZXUgTXV0aHMgPGFpcmVMaWJyZT4gPGEgaHJlZj0ibWFpbHRvOmNvbnRhY3RAYWlyZWxpYnJlLm5ldCI+Y29udGFjdEBhaXJlbGlicmUubmV0PC9hPiAvIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFpcmVsaWJyZS5uZXQiIHRhcmdldD0iX2JsYW5rIj53d3cuYWlyZWxpYnJlLm5ldDwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6I3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgoKPGgzPlByZXByb2Nlc3NvcnMgY29weXJpZ2h0PC9oMz4KPHA+CglUaGUgYXV0aG9yIG9mIHRoaXMgbW9kdWxlIGRvZXMgbm90IG93biB0aGUgcHJlcHJvY2Vzc29ycyBidW5kbGVkIHdpdGggaXQgLSBQbGVhc2Ugc2VlIGV2ZXJ5IHByZXByb2Nlc3NvcnMgc291cmNlIGNvZGUgLyB3ZWJzaXRlIHRvIGdldCBpbmZvcm1hdGlvbnMgYWJvdXQgbGljZW5jZSBhbmQgY29weXJpZ2h0Lgo8L3A+CjxwPkkganVzdCB3YW50ZWQgdG8gdGhhbmsgYWxsIHRoZSBkZXZlbG9wZXJzIHRoYXQgY29udHJpYnV0ZSB0byB0aGVzZSBwcmVwcm9jZXNzb3JzIHdoaWNoIGFyZSBncmVhdCB0b29scyBmb3IgZGVzaWduZXJzITwvcD4KPGJyPgo8YnI+Cjxicj4KRU9UOwoKCgoKCgoKPz4K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZXInOw0KJGxhbmdbJ2Nzc19wcmVwcm9jZXNzb3InXSA9ICdQcsOpcHJvY2Vzc2V1ciBDU1MnOw0KJGxhbmdbJ2Nob29zZV9wcmVwcm9jZXNzb3InXSA9ICdDaG9pc2lzc2V6IGxlIHByw6lwcm9jZXNzZXVyIHF1ZSB2b3VzIHNvdWhhaXRleiB1dGlsaXNlcic7DQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnUHLDqXByb2Nlc3NldXIgQ1NTJzsNCiRsYW5nWydnZW5lcmF0ZV9zb3VyY2VtYXAnXSA9ICdGaWNoaWVyIHNvdXJjZW1hcCc7DQokbGFuZ1snZ2VuZXJhdGVfc291cmNlbWFwX2xhYmVsJ10gPSAnR8OpbsOpcmVyIHVuIHNvdXJjZSBtYXAsIHNpIGxlIHByw6lwcm9jZXNzZXVyIGxlIHN1cHBvcnRlJzsNCiRsYW5nWydpbXBvcnRfZGlycyddID0gJ1LDqXBlcnRvaXJlcyBjb250ZW5hbnQgZGVzIGZpY2hpZXJzIExFU1MvU0FTUyDDoCBpbmNsdXJlIGxvcnMgZGUgbGEgY29tcGlsYXRpb24gLSBSZWxhdGlmIGF1IHLDqXBlcnRvaXJlIHJhY2luZSBkdSBDTVMgLSBMaXN0ZSBzw6lwYXLDqWUgcGFyIGRlcyB2aXJndWxlcyc7DQokbGFuZ1snbWluaWZ5J10gPSAnTWluaWZpZXInOw0KJGxhbmdbJ21pbmlmeV9sYWJlbCddID0gJ01pbmlmaWVyIGxlIENTUyc7DQokbGFuZ1snbm90ZSddID0gJ05vdGUgOic7DQokbGFuZ1snb3B0aW9ucyddID0gJ09wdGlvbnMmbmJzcDsnOw0KJGxhbmdbJ3ByZWZlcmVuY2VzJ10gPSAnUHLDqWbDqXJlbmNlcyc7DQokbGFuZ1sncHJlZmVyZW5jZXNfc2V0J10gPSAnUHLDqWbDqXJlbmNlcyBzYXV2ZWdhcmTDqWVzJzsNCiRsYW5nWydzdWJtaXQnXSA9ICdFbnZveWVyJzsNCiRsYW5nWyd1c2VfYXV0b3ByZWZpeGVyJ10gPSAnVXRpbGlzZXIgQXV0b3ByZWZpeGVyIChwbHVzIGRcJ2luZm9zIHN1ciA8YSBocmVmPSJodHRwczojZ2l0aHViLmNvbS9wb3N0Y3NzL2F1dG9wcmVmaXhlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOiNnaXRodWIuY29tL3Bvc3Rjc3MvYXV0b3ByZWZpeGVyPC9hPikgLSBTZXVsZW1lbnQgc2kgaW5zdGFsbMOpIHN1ciBsZSBzZXJ2ZXVyLic7DQoNCiRsYW5nWydoZWxwJ10gPSA8PDxFT1QNCjxoMj5XaGF0IGRvZXMgdGhpcyBkbz88L2gyPg0KIDxwPlRoaXMgbW9kdWxlIGFkZHMgdG8gdGhlIENNU01TIFN0eWxlc2hlZXRzIC8gRGVzaWduIG1hbmFnZXIgc29tZSBDU1MgUHJlcHJvY2Vzc29ycywgaW4gb3JkZXIgdG8gY29tcGlsZSBMRVNTIG9yIFNBU1MgbGFuZ3VhZ2VzIChvciBvdGhlciBtYXliZSBsYXRlcikuPC9wPg0KDQogPGgyPkhvdyBkb2VzIGl0IHdvcmsgYW5kIGludGVncmF0ZSBpbiBDTVNNUzwvaDI+DQogPHA+DQoJVGhpcyBtb2R1bGUgdXNlcyB0aGUgc3RhbmRhcmQgc3R5bGVzaGVldHMgb2YgQ01TIE1hZGUgU2ltcGxlLiBJdCBpcyBsYXVuY2hlZCBhZnRlciBhbGwgdGhlIHN0eWxlc2hlZXRzIGhhdmUgYmVlbiBjb21iaW5lZCwgYW5kIGl0IHRha2VzIGFsbCB0aGUgQ1NTIGNvbnRlbnQgdG8gZ2l2ZSBpdCB0byB0aGUgUHJlcHJvY2Vzc29yIG9mIHlvdXIgY2hvaWNlLg0KIDwvcD4NCiA8cD4NCgkJS2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBtb2R1bGUgcHJvY2Vzc2VzIHRoZSBlbnRpcmUgc3R5bGVzaGVldCBhZnRlciB0aGVpciBjb21iaW5hdGlvbi4gTm8gbWF0dGVyIGlmIHlvdSB1c2UgMSBvciAxMCBzdHlsZXNoZWV0cyBpbiB5b3VyIGRlc2lnbiwgdGhlIHByZXByb2Nlc3NvciB3aWxsIG9ubHkgcHJvY2VzcyBpdCBvbmUgdGltZS4NCiAgPC9wPg0KICANCg0KPGgyPkhvdyBEbyBJIFVzZSBJdDwvaDI+DQoNCjxoMz5DTVNNUyAyKzwvaDM+DQo8dWw+DQoJPGxpPg0KCQlEZWZpbmUgeW91ciBpbXBvcnQgZGlyZWN0b3JpZXMsIGlmIHlvdSB1c2UgaXQuIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnRlZ3JhdGUgQm9vdHN0cmFwLCB5b3UgY2FuOg0KCQk8b2w+DQoJCQk8bGk+UHV0IHlvdXIgQm9vdHN0cmFwIExFU1Mgc291cmNlIGZpbGVzIGluIGFzc2V0cy9ib290c3RyYXAvPC9saT4NCgkJCTxsaT5UeXBlIDxzdHJvbmc+PGVtPmFzc2V0cy9ib290c3RyYXA8L2VtPjwvc3Ryb25nPiBpbiB0aGUgIkRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgTEVTUy9TQVNTIGZpbGVzIHRvIGluY2x1ZGUgaW4gY29tcGlsYXRpb24iIC0gTm8gc2xhc2ggYXQgYmVnaW5uaW5nIG9yIGVuZDwvbGk+DQogICAgICA8bGk+Q3JlYXRlIG9uZSBvciBtb3JlICJjdXN0b20iIHN0eWxlc2hlZXQgaW4gdGhlIERlc2lnbiBNYW5hZ2VyIGFuZCBsaW5rIGl0IHRvIHlvdXIgZGVzaWduLjwvbGk+DQoJCTwvb2w+DQoJPC9saT4NCiAgPGxpPg0KCQlTYW1lIGNhbiBiZSBkb25lIGZvciBGb3VuZGF0aW9uOg0KCQk8b2w+DQoJCQk8bGk+UHV0IHlvdXIgRm91bmRhdGlvbiBTQVNTIHNvdXJjZSBmaWxlcyBpbiBhc3NldHMvZm91bmRhdGlvbi9zY3NzPC9saT4NCgkJCTxsaT5UeXBlIDxzdHJvbmc+PGVtPmFzc2V0cy9mb3VuZGF0aW9uL3Njc3M8L2VtPjwvc3Ryb25nPiBpbiB0aGUgIkRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgTEVTUy9TQVNTIGZpbGVzIHRvIGluY2x1ZGUgaW4gY29tcGlsYXRpb24iIC0gTm8gc2xhc2ggYXQgYmVnaW5uaW5nIG9yIGVuZDwvbGk+DQoJCTwvb2w+DQoJPC9saT4NCgk8bGk+U3RhcnQgdXNpbmcgTEVTUyAvIFNBU1MgY29kZSBpbiB5b3VyIHN0eWxlc2hlZXRzITwvbGk+DQo8L3VsPg0KDQoNCjxoMj5VcGRhdGluZyBzdHlsZXNoZWV0czwvaDI+DQo8cD4NCglJZiB5b3UgbWFrZSBhbiB1cGRhdGUgb24gYSBDTVNNUyBzdHlsZXNoZWV0LCBldmVyeXRoaW5nIGlzIGZpbmUgYW5kIHRoZSBtb2R1bGUgd2lsbCBwcm9jZXNzIHRoZSBzdHlsZXNoZWV0IGFnYWluIG9uIHRoZSBuZXh0IHBhZ2UgcmVmcmVzaC4NCjwvcD4NCjxwPg0KCUhvd2V2ZXIsIGlmIHlvdSBkaWQgbWFrZSBhIGNoYW5nZSBpbiB5b3VyIGltcG9ydGVkIGxlc3MgZmlsZXMsIHRoZSBzeXN0ZW0gd2lsbCBub3QgcGVyZm9ybSBhbnkgdXBkYXRlIC0gaW4gdGhpcyBjYXNlLCB5b3UgbXVzdCBjbGVhciB0aGUgY2FjaGUgb3Igc2ltcGx5IHNhdmUgeW91ciBkZXNpZ25tYW5hZ2VyIHN0eWxlc2hlZXQgdG8gbWFrZSB0aGUge2Ntc19zdHlsZXNoZWV0fSBwbHVnaW4gcHJvY2VzcyB0aGUgY3NzIGFnYWluLg0KPC9wPg0KDQoNCg0KPGgyPlNtYXJ0eSBzdXBwb3J0PC9oMj4NCjxwPllvdSBjYW4gdXNlIFNtYXJ0eSB0YWdzIHdpdGggW1sgYW5kIF1dIC0gU21hcnR5IHdpbGwgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUgQ1NTIFByZVByb2Nlc3Nvci48L3A+DQoNCjxoMj5Vc2luZyBTb3VyY2VtYXBzPC9oMj4NCjxwPg0KCVNvbWUgcHJlcHJvY2Vzc29ycyBjYW4gY3JlYXRlIHNvdXJjZW1hcCBmaWxlcywgaW4gb3JkZXIgdG8gaGVscCB5b3UgZHVyaW5nIGludGVncmF0aW9uLiBEb24ndCBmb3JnZXQgdG8gY29uZmlndXJlIHlvdXIgYnJvd3NlciB0byB1c2UgdGhhdCBmdW5jdGlvbi4gTm90ZSB0aGF0IG9ubHkgaW1wb3J0ZWQgZmlsZXMgd2lsbCBiZSBtYXBwZWQgaW4gdGhlIHNvdXJjZW1hcHMgKHRoaXMgbWF5IGNoYW5nZSBpbiBhIGZ1cnRoZXIgdmVyc2lvbikuPGJyPjxzdHJvbmc+RG9uJ3QgZm9yZ2V0IHRvIGRpc2FibGUgdGhlIHNvdXJjZW1hcHMgZm9yIHByb2R1Y3Rpb248L3N0cm9uZz4uDQo8L3A+DQoNCjxoMj5EZWFjdGl2YXRlIHRoZSBtb2R1bGU8L2gyPg0KPHA+DQoJSWYgeW91IGRvbid0IHdhbnQgdG8gdXNlIGFueSBvZiB0aGUgcHJlcHJvY2Vzc29ycywgcGxlYXNlIHJlbW92ZSBpdCBvciBkaXNhYmxlIGl0IGluIHRoZSBNb2R1bGVzIE1hbmFnZXIgLSBUaGVyZSBhcmUgbm8gImRlYWN0aXZhdGUiIGZ1bmN0aW9uIGJ1aWx0IGluIHRoZSBtb2R1bGUuDQo8L3A+DQoNCjxoMj5QcmVwcm9jZXNzb3Igc3dpdGNoPC9oMj4NCjxwPg0KCVlvdSBtYXkgd2FudCB0byBzd2l0Y2ggZnJvbSBvbmUgcHJlcHJvY2Vzc29yIHRvIGFub3RoZXIgLSBUaGUgbW9kdWxlIHNob3VsZCBjbGVhciB0aGUgY2FjaGUgb24gcHJlZmVyZW5jZXMgY2hhbmdlIHNvIG9uIHRoZSBuZXh0IHBhZ2UgcmVmcmVzaCBpbiB5b3VyIGJyb3dzZXIgdGhlIHdob2xlIENTUyB3aWxsIGJlIHByZXByb2Nlc3NlZCBhZ2Fpbi4NCjwvcD4NCg0KPGgyPkV4dGVuZCB3aXRoIGFub3RoZXIgcHJlcHJvY2Vzc29yPC9oMj4NCjxwPg0KCVlvdSBjYW4gY3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBpbiB0aGUgInByZXByb2Nlc3NvcnMiIGRpcmVjdG9yeSwgYW5kIGNyZWF0ZSB5b3VyIG93biBjbGFzcyAtIENoZWNrIGhvdyB0aGUgYnVuZGxlZCBwcmVwcm9jZXNzb3JzIGFyZSBpbnRlZ3JhdGVkLg0KPC9wPg0KPHA+RG9uJ3QgZm9yZ2V0IHRvIDxhIGhyZWY9Im1haWx0bzpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmVtYWlsIG1lPC9hPiBpZiB5b3Ugd2FudCB5b3VyIHByZXByb2Nlc3NvciB0byBiZSBhZGRlZCB0byB0aGUgcHJvamVjdCE8L3A+DQoNCjxoMj5TdXBwb3J0PC9oMj4NCgk8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KCTxwPg0KCQlJZiB5b3Ugd2FudCB0byBjb250YWN0IG1lOiA8YSBocmVmPSJtYWlsdG86Y29udGFjdEBhaXJlbGlicmUubmV0Ij5jb250YWN0QGFpcmVsaWJyZS5uZXQ8L2E+DQoJPC9wPg0KDQo8aDI+UHJvamVjdCBvbiB0aGUgd2ViPC9oMj4NCjxwPllvdSBjYW4gZm9sbG93IHRoZSBwcm9qZWN0IG9uIDogPC9wPg0KCTx1bD4NCgkJPGxpPkdpdEh1YjogPGEgaHJlZj0iaHR0cHM6I2dpdGh1Yi5jb20vYWlyZWxpYnJlL0NTU1ByZXByb2Nlc3NvciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOiNnaXRodWIuY29tL2FpcmVsaWJyZS9DU1NQcmVwcm9jZXNzb3I8L2E+PC9saT4NCgkJPGxpPkNNU01TIEZvcmdlOiA8YSBocmVmPSJodHRwOiNkZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY3NzcHJlcHJvY2Vzc29yIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDojZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Nzc3ByZXByb2Nlc3NvcjwvYT48L2xpPg0KCTwvdWw+DQoNCjxoMj5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gyPg0KCTxwPkNvcHlyaWdodCAmY29weTsgMjAxNC0yMDE3LCBNYXRoaWV1IE11dGhzIDxhaXJlTGlicmU+IDxhIGhyZWY9Im1haWx0bzpjb250YWN0QGFpcmVsaWJyZS5uZXQiPmNvbnRhY3RAYWlyZWxpYnJlLm5ldDwvYT4gLyA8YSBocmVmPSJodHRwczovL3d3dy5haXJlbGlicmUubmV0IiB0YXJnZXQ9Il9ibGFuayI+d3d3LmFpcmVsaWJyZS5uZXQ8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQoJPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6I3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KDQoJPGgzPlByZXByb2Nlc3NvcnMgY29weXJpZ2h0PC9oMz4NCgk8cD4NCgkJVGhlIGF1dGhvciBvZiB0aGlzIG1vZHVsZSBkb2VzIG5vdCBvd24gdGhlIHByZXByb2Nlc3NvcnMgYnVuZGxlZCB3aXRoIGl0IC0gUGxlYXNlIHNlZSBldmVyeSBwcmVwcm9jZXNzb3JzIHNvdXJjZSBjb2RlIC8gd2Vic2l0ZSB0byBnZXQgaW5mb3JtYXRpb25zIGFib3V0IGxpY2VuY2UgYW5kIGNvcHlyaWdodC4NCgk8L3A+DQoJPHA+SSBqdXN0IHdhbnRlZCB0byB0aGFuayBhbGwgdGhlIGRldmVsb3BlcnMgdGhhdCBjb250cmlidXRlIHRvIHRoZXNlIHByZXByb2Nlc3NvcnMgd2hpY2ggYXJlIGdyZWF0IHRvb2xzIGZvciBkZXNpZ25lcnMhPC9wPg0KRU9UOw0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2NhbmNlbCddID0gJ0F2YnJ5dCc7CiRsYW5nWydjc3NfcHJlcHJvY2Vzc29yJ10gPSAnQ1NTIFByZXByb2Nlc3Nvcic7CiRsYW5nWydjaG9vc2VfcHJlcHJvY2Vzc29yJ10gPSAnVmVsZyBkZW4gcHJlcHJvc2Vzc29yZW4gZHUgdmlsIGJlbnl0dGUnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ1NTIFByZXByb2Nlc3Nvcic7CiRsYW5nWydnZW5lcmF0ZV9zb3VyY2VtYXAnXSA9ICdraWxkZWthcnQnOwokbGFuZ1snZ2VuZXJhdGVfc291cmNlbWFwX2xhYmVsJ10gPSAnR2VuZXJlciBraWxkZWthcnQnOwokbGFuZ1snbWluaWZ5J10gPSAnTWluaW1lcic7CiRsYW5nWydub3RlJ10gPSAnTWVya25hZDonOwokbGFuZ1snb3B0aW9ucyddID0gJ1ZhbGcnOwokbGFuZ1sncHJlZmVyZW5jZXMnXSA9ICdQcmVmZXJhbnNlcic7CiRsYW5nWydwcmVmZXJlbmNlc19zZXQnXSA9ICdQcmVmZXJhbnNlbmUgYmxlIGxhZ3JldDxicj5WZW5ubGlnc3QgdMO4bSBkaXR0IG5ldHRzdGVkcyBtZWxsb21sYWdlciBmb3Igw6UgcmUtcHJvc2Vzc2VyZSBDU1MnOwokbGFuZ1snc3VibWl0J10gPSAnTGFncmUnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2NhbmNlbCddID0gJ0FubnVsZWVyJzsKJGxhbmdbJ2dlbmVyYXRlX3NvdXJjZW1hcCddID0gJ0Jyb25tYXAnOwokbGFuZ1snb3B0aW9ucyddID0gJ09wdGllcyc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ0luc3RlbGxpbmdlbic7CiRsYW5nWydzdWJtaXQnXSA9ICdWZXJzdHVyZW4nOwokbGFuZ1snZ2EnXSA9ICdHQTEuMi43Njc5NjUwMjAuMTQwMDYxMjM2NCc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.Preprocessor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3NvciB7CgoJY29uc3QgTE9HTyA9ICcnOwoKCWNvbnN0IFNPVVJDRU1BUEZJTEUgPSAnc291cmNlbWFwLm1hcCc7CgoJLy8gUHJpb3JpdHkgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2Ugb24gdGhlIGFkbWluIHBhbmVsCgljb25zdCBQUklPUklUWSA9IDEwMDsKCglwdWJsaWMgJGltcG9ydF9kaXJzOwoJcHVibGljICRtaW5pZnk7CgoJcHVibGljICRnZW5lcmF0ZV9zb3VyY2VtYXA7CglwdWJsaWMgJHNvdXJjZV9tYXBfZmlsZT0nJzsKCXB1YmxpYyAkc291cmNlX21hcF91cmw9Jyc7CgoJLy8gTG9hZCBpbXBvcnQgZGlycwoJcHVibGljIGZ1bmN0aW9uIGxvYWQoKQoJewoJCSRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NTU1ByZXByb2Nlc3NvcicpOwoJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCgkJLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkJLy8gSW1wb3J0IGRpcnMsIGlmIGFueQoJCSRpbXBvcnRfZGlycyA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2ltcG9ydF9kaXJzJywgJycpOwoJCSRpbXBvcnRfZGlyc19hcnJheSA9IGFycmF5KCk7CgkJaWYgKCFlbXB0eSgkaW1wb3J0X2RpcnMpKQoJCXsKCQkJLy8gYXJyYXkKCQkJJHRtcCA9IGV4cGxvZGUoJywnLCAkaW1wb3J0X2RpcnMpOwoKCQkJZm9yZWFjaCAoJHRtcCBhcyAkb25lKQoJCQl7CgkJCQkvLyBOb3RlOiBzb21lIHByZXByb2Nlc3NvcnMgbmVlZCB0aGUga2V5IHRvIGJlIHRoZSBwYXRoIChMZXNzLnBocCBieSBveWVqb3JnZSkKCQkJCSRkaXIgPSBjbXNfam9pbl9wYXRoKCRjb25maWdbJ3Jvb3RfcGF0aCddLCB0cmltKCRvbmUpKTsKCQkJCSRpbXBvcnRfZGlyc19hcnJheVtdID0gJGRpcjsKCQkJfQoJCX0KCQkkdGhpcy0+aW1wb3J0X2RpcnMgPSAkaW1wb3J0X2RpcnNfYXJyYXk7CgkJLy8gRW5kIGltcG9ydCBkaXJzCgkJLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgoKCgoJCS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCS8vIE1pbmlmeSA/CgkJJHRoaXMtPm1pbmlmeSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ21pbmlmeScsIDApOwoJCS8vIEVuZCBtaW5pZnkKCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgoKCgkJLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkJLy8gR2VuZXJhdGUgc291cmNlbWFwID8KCQkkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZ2VuZXJhdGVfc291cmNlbWFwJywgMCk7CgoJCWlmICgkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKQoJCXsKCQkJJHRoaXMtPnNvdXJjZV9tYXBfZmlsZSA9IGNtc19qb2luX3BhdGgoVE1QX0NBQ0hFX0xPQ0FUSU9OLCBzdGF0aWM6OlNPVVJDRU1BUEZJTEUpOwoJCQkkdGhpcy0+c291cmNlX21hcF91cmwgPSAkY29uZmlnWydjc3NfdXJsJ10gLiAnLycgLiBzdGF0aWM6OlNPVVJDRU1BUEZJTEU7CgkJfQoJCS8vIEVuZCBzb3VyY2VtYXAKCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgl9CgoKCgoKCS8vIE5lZWRzIHRvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIHN1YmNsYXNzZXMKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlQ1NTKCYkY3NzPScnKQoJewoJCXJldHVybiB0cnVlOwoJfQoKCgoKCgkvLyBGcm9tIDogaHR0cDovL2NvZGUuc2VlYnoubmV0L3AvbWluaWZ5LWNzcy8KCS8vIFRoYW5rcwoJcHVibGljIGZ1bmN0aW9uIG1pbmlmeUNTUygmJGNzcz0nJykKCXsKCQkkY3NzID0gcHJlZ19yZXBsYWNlKCchL1wqW14qXSpcKisoW14vXVteKl0qXCorKSovIScsICcnLCAkY3NzKTsKCQkkY3NzID0gc3RyX3JlcGxhY2UoYXJyYXkoIlxyIiwiXG4iKSwgJycsICRjc3MpOwoJCSRjc3MgPSBwcmVnX3JlcGxhY2UoJ2AoW14qL10pXC9cKihbXipdfFsqXSg/IS8pKXs1LH1cKlwvKFteKi9dKWBVcycsICckMSQzJywgJGNzcyk7CgkJJGNzcyA9IHByZWdfcmVwbGFjZSgnYFxzKih7fH18LHw6fDspXHMqYCcsICckMScsICRjc3MpOwoJCSRjc3MgPSBzdHJfcmVwbGFjZSgnO30nLCAnfScsICRjc3MpOwoJCSRjc3MgPSBwcmVnX3JlcGxhY2UoJ2AoPz18fSlbXnt9XSt7fWAnLCAnJywgJGNzcyk7CgkJJGNzcyA9IHByZWdfcmVwbGFjZSgnYFtcc10rYCcsICcgJywgJGNzcyk7Cgl9Cgp9]]></data>
	</file>
	<file>
	  <filename>/lib/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIiOiAiXjEuMiIKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNjb21wb3Nlci1sb2NrLXRoZS1sb2NrLWZpbGUiLAogICAgICAgICJUaGlzIGZpbGUgaXMgQGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IgogICAgXSwKICAgICJjb250ZW50LWhhc2giOiAiMTY2NWY0MWFjODFlMDRjMGIwNjFkM2Q0OGZmZjI2ZmQiLAogICAgInBhY2thZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwZjM2YjdjZmJkNzFkMjU4MzZiY2I5ZjRiNThjMDkyNTJjYTRlOWVjIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci96aXBiYWxsLzBmMzZiN2NmYmQ3MWQyNTgzNmJjYjlmNGI1OGMwOTI1MmNhNGU5ZWMiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwZjM2YjdjZmJkNzFkMjU4MzZiY2I5ZjRiNThjMDkyNTJjYTRlOWVjIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJzYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyIjogIioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlBhZGFsaXlhamF5XFxQSFBBdXRvcHJlZml4ZXJcXCI6ICJzcmMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJKYXkgcGFkYWxpeWEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDU1MgQXV0b3ByZWZpeGVyIHdyaXR0ZW4gaW4gcHVyZSBQSFAuIiwKICAgICAgICAgICAgInRpbWUiOiAiMjAxOS0wMy0wNlQxMjo0OTo0MCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic2FiYmVyd29ybS9waHAtY3NzLXBhcnNlciIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjguMy4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zYWJiZXJ3b3JtL1BIUC1DU1MtUGFyc2VyLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjkxYmNjM2UzZmRiNzM4NmM5YTJlMGUwYWEwOWNhNzVjYzQzZjEyMWYiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zYWJiZXJ3b3JtL1BIUC1DU1MtUGFyc2VyL3ppcGJhbGwvOTFiY2MzZTNmZGI3Mzg2YzlhMmUwZTBhYTA5Y2E3NWNjNDNmMTIxZiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjkxYmNjM2UzZmRiNzM4NmM5YTJlMGUwYWEwOWNhNzVjYzQzZjEyMWYiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiY29kYWN5L2NvdmVyYWdlIjogIl4xLjQiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC44IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci0wIjogewogICAgICAgICAgICAgICAgICAgICJTYWJiZXJ3b3JtXFxDU1MiOiAibGliLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlJhcGhhZWwgU2Nod2Vpa2VydCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBhcnNlciBmb3IgQ1NTIEZpbGVzIHdyaXR0ZW4gaW4gUEhQIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuc2FiYmVyd29ybS5jb20vYmxvZy8yMDEwLzYvMTAvcGhwLWNzcy1wYXJzZXIiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiY3NzIiwKICAgICAgICAgICAgICAgICJwYXJzZXIiLAogICAgICAgICAgICAgICAgInN0eWxlc2hlZXQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTktMDItMjJUMDc6NDI6NTIrMDA6MDAiCiAgICAgICAgfQogICAgXSwKICAgICJwYWNrYWdlcy1kZXYiOiBbXSwKICAgICJhbGlhc2VzIjogW10sCiAgICAibWluaW11bS1zdGFiaWxpdHkiOiAic3RhYmxlIiwKICAgICJzdGFiaWxpdHktZmxhZ3MiOiBbXSwKICAgICJwcmVmZXItc3RhYmxlIjogZmFsc2UsCiAgICAicHJlZmVyLWxvd2VzdCI6IGZhbHNlLAogICAgInBsYXRmb3JtIjogW10sCiAgICAicGxhdGZvcm0tZGV2IjogW10KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/autoload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvY29tcG9zZXIvYXV0b2xvYWRfcmVhbC5waHAnOwoKcmV0dXJuIENvbXBvc2VyQXV0b2xvYWRlckluaXQyOTMwZjRhZGM4MzViOTYyYzU4Mjg0NGNhNWJiNWVlYjo6Z2V0TG9hZGVyKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_classmap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2NsYXNzbWFwLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSk7CiRiYXNlRGlyID0gZGlybmFtZSgkdmVuZG9yRGlyKTsKCnJldHVybiBhcnJheSgKKTsK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_namespaces.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX25hbWVzcGFjZXMucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJ1NhYmJlcndvcm1cXENTUycgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvc2FiYmVyd29ybS9waHAtY3NzLXBhcnNlci9saWInKSwKKTsK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_psr4.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3BzcjQucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJ1BhZGFsaXlhamF5XFxQSFBBdXRvcHJlZml4ZXJcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMnKSwKKTsK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_real.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3JlYWwucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCmNsYXNzIENvbXBvc2VyQXV0b2xvYWRlckluaXQyOTMwZjRhZGM4MzViOTYyYzU4Mjg0NGNhNWJiNWVlYgp7CiAgICBwcml2YXRlIHN0YXRpYyAkbG9hZGVyOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZENsYXNzTG9hZGVyKCRjbGFzcykKICAgIHsKICAgICAgICBpZiAoJ0NvbXBvc2VyXEF1dG9sb2FkXENsYXNzTG9hZGVyJyA9PT0gJGNsYXNzKSB7CiAgICAgICAgICAgIHJlcXVpcmUgX19ESVJfXyAuICcvQ2xhc3NMb2FkZXIucGhwJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRMb2FkZXIoKQogICAgewogICAgICAgIGlmIChudWxsICE9PSBzZWxmOjokbG9hZGVyKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokbG9hZGVyOwogICAgICAgIH0KCiAgICAgICAgc3BsX2F1dG9sb2FkX3JlZ2lzdGVyKGFycmF5KCdDb21wb3NlckF1dG9sb2FkZXJJbml0MjkzMGY0YWRjODM1Yjk2MmM1ODI4NDRjYTViYjVlZWInLCAnbG9hZENsYXNzTG9hZGVyJyksIHRydWUsIHRydWUpOwogICAgICAgIHNlbGY6OiRsb2FkZXIgPSAkbG9hZGVyID0gbmV3IFxDb21wb3NlclxBdXRvbG9hZFxDbGFzc0xvYWRlcigpOwogICAgICAgIHNwbF9hdXRvbG9hZF91bnJlZ2lzdGVyKGFycmF5KCdDb21wb3NlckF1dG9sb2FkZXJJbml0MjkzMGY0YWRjODM1Yjk2MmM1ODI4NDRjYTViYjVlZWInLCAnbG9hZENsYXNzTG9hZGVyJykpOwoKICAgICAgICAkdXNlU3RhdGljTG9hZGVyID0gUEhQX1ZFUlNJT05fSUQgPj0gNTA2MDAgJiYgIWRlZmluZWQoJ0hIVk1fVkVSU0lPTicpICYmICghZnVuY3Rpb25fZXhpc3RzKCd6ZW5kX2xvYWRlcl9maWxlX2VuY29kZWQnKSB8fCAhemVuZF9sb2FkZXJfZmlsZV9lbmNvZGVkKCkpOwogICAgICAgIGlmICgkdXNlU3RhdGljTG9hZGVyKSB7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9hdXRvbG9hZF9zdGF0aWMucGhwJzsKCiAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jKFxDb21wb3NlclxBdXRvbG9hZFxDb21wb3NlclN0YXRpY0luaXQyOTMwZjRhZGM4MzViOTYyYzU4Mjg0NGNhNWJiNWVlYjo6Z2V0SW5pdGlhbGl6ZXIoJGxvYWRlcikpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRtYXAgPSByZXF1aXJlIF9fRElSX18gLiAnL2F1dG9sb2FkX25hbWVzcGFjZXMucGhwJzsKICAgICAgICAgICAgZm9yZWFjaCAoJG1hcCBhcyAkbmFtZXNwYWNlID0+ICRwYXRoKSB7CiAgICAgICAgICAgICAgICAkbG9hZGVyLT5zZXQoJG5hbWVzcGFjZSwgJHBhdGgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWFwID0gcmVxdWlyZSBfX0RJUl9fIC4gJy9hdXRvbG9hZF9wc3I0LnBocCc7CiAgICAgICAgICAgIGZvcmVhY2ggKCRtYXAgYXMgJG5hbWVzcGFjZSA9PiAkcGF0aCkgewogICAgICAgICAgICAgICAgJGxvYWRlci0+c2V0UHNyNCgkbmFtZXNwYWNlLCAkcGF0aCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjbGFzc01hcCA9IHJlcXVpcmUgX19ESVJfXyAuICcvYXV0b2xvYWRfY2xhc3NtYXAucGhwJzsKICAgICAgICAgICAgaWYgKCRjbGFzc01hcCkgewogICAgICAgICAgICAgICAgJGxvYWRlci0+YWRkQ2xhc3NNYXAoJGNsYXNzTWFwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGxvYWRlci0+cmVnaXN0ZXIodHJ1ZSk7CgogICAgICAgIHJldHVybiAkbG9hZGVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/autoload_static.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3N0YXRpYy5waHAgQGdlbmVyYXRlZCBieSBDb21wb3NlcgoKbmFtZXNwYWNlIENvbXBvc2VyXEF1dG9sb2FkOwoKY2xhc3MgQ29tcG9zZXJTdGF0aWNJbml0MjkzMGY0YWRjODM1Yjk2MmM1ODI4NDRjYTViYjVlZWIKewogICAgcHVibGljIHN0YXRpYyAkcHJlZml4TGVuZ3Roc1BzcjQgPSBhcnJheSAoCiAgICAgICAgJ1AnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ1BhZGFsaXlhamF5XFxQSFBBdXRvcHJlZml4ZXJcXCcgPT4gMjgsCiAgICAgICAgKSwKICAgICk7CgogICAgcHVibGljIHN0YXRpYyAkcHJlZml4RGlyc1BzcjQgPSBhcnJheSAoCiAgICAgICAgJ1BhZGFsaXlhamF5XFxQSFBBdXRvcHJlZml4ZXJcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMnLAogICAgICAgICksCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgJHByZWZpeGVzUHNyMCA9IGFycmF5ICgKICAgICAgICAnUycgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnU2FiYmVyd29ybVxcQ1NTJyA9PiAKICAgICAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3NhYmJlcndvcm0vcGhwLWNzcy1wYXJzZXIvbGliJywKICAgICAgICAgICAgKSwKICAgICAgICApLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluaXRpYWxpemVyKENsYXNzTG9hZGVyICRsb2FkZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIFxDbG9zdXJlOjpiaW5kKGZ1bmN0aW9uICgpIHVzZSAoJGxvYWRlcikgewogICAgICAgICAgICAkbG9hZGVyLT5wcmVmaXhMZW5ndGhzUHNyNCA9IENvbXBvc2VyU3RhdGljSW5pdDI5MzBmNGFkYzgzNWI5NjJjNTgyODQ0Y2E1YmI1ZWViOjokcHJlZml4TGVuZ3Roc1BzcjQ7CiAgICAgICAgICAgICRsb2FkZXItPnByZWZpeERpcnNQc3I0ID0gQ29tcG9zZXJTdGF0aWNJbml0MjkzMGY0YWRjODM1Yjk2MmM1ODI4NDRjYTViYjVlZWI6OiRwcmVmaXhEaXJzUHNyNDsKICAgICAgICAgICAgJGxvYWRlci0+cHJlZml4ZXNQc3IwID0gQ29tcG9zZXJTdGF0aWNJbml0MjkzMGY0YWRjODM1Yjk2MmM1ODI4NDRjYTViYjVlZWI6OiRwcmVmaXhlc1BzcjA7CgogICAgICAgIH0sIG51bGwsIENsYXNzTG9hZGVyOjpjbGFzcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/ClassLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIENvbXBvc2VyLgogKgogKiAoYykgTmlscyBBZGVybWFubiA8bmFkZXJtYW5AbmFkZXJtYW4uZGU+CiAqICAgICBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgQ29tcG9zZXJcQXV0b2xvYWQ7CgovKioKICogQ2xhc3NMb2FkZXIgaW1wbGVtZW50cyBhIFBTUi0wLCBQU1ItNCBhbmQgY2xhc3NtYXAgY2xhc3MgbG9hZGVyLgogKgogKiAgICAgJGxvYWRlciA9IG5ldyBcQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXIoKTsKICoKICogICAgIC8vIHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBuYW1lc3BhY2VzCiAqICAgICAkbG9hZGVyLT5hZGQoJ1N5bWZvbnlcQ29tcG9uZW50JywgX19ESVJfXy4nL2NvbXBvbmVudCcpOwogKiAgICAgJGxvYWRlci0+YWRkKCdTeW1mb255JywgICAgICAgICAgIF9fRElSX18uJy9mcmFtZXdvcmsnKTsKICoKICogICAgIC8vIGFjdGl2YXRlIHRoZSBhdXRvbG9hZGVyCiAqICAgICAkbG9hZGVyLT5yZWdpc3RlcigpOwogKgogKiAgICAgLy8gdG8gZW5hYmxlIHNlYXJjaGluZyB0aGUgaW5jbHVkZSBwYXRoIChlZy4gZm9yIFBFQVIgcGFja2FnZXMpCiAqICAgICAkbG9hZGVyLT5zZXRVc2VJbmNsdWRlUGF0aCh0cnVlKTsKICoKICogSW4gdGhpcyBleGFtcGxlLCBpZiB5b3UgdHJ5IHRvIHVzZSBhIGNsYXNzIGluIHRoZSBTeW1mb255XENvbXBvbmVudAogKiBuYW1lc3BhY2Ugb3Igb25lIG9mIGl0cyBjaGlsZHJlbiAoU3ltZm9ueVxDb21wb25lbnRcQ29uc29sZSBmb3IgaW5zdGFuY2UpLAogKiB0aGUgYXV0b2xvYWRlciB3aWxsIGZpcnN0IGxvb2sgZm9yIHRoZSBjbGFzcyB1bmRlciB0aGUgY29tcG9uZW50LwogKiBkaXJlY3RvcnksIGFuZCBpdCB3aWxsIHRoZW4gZmFsbGJhY2sgdG8gdGhlIGZyYW1ld29yay8gZGlyZWN0b3J5IGlmIG5vdAogKiBmb3VuZCBiZWZvcmUgZ2l2aW5nIHVwLgogKgogKiBUaGlzIGNsYXNzIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlIFN5bWZvbnkgVW5pdmVyc2FsQ2xhc3NMb2FkZXIuCiAqCiAqIEBhdXRob3IgRmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgogKiBAYXV0aG9yIEpvcmRpIEJvZ2dpYW5vIDxqLmJvZ2dpYW5vQHNlbGQuYmU+CiAqIEBzZWUgICAgaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTAvCiAqIEBzZWUgICAgaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTQvCiAqLwpjbGFzcyBDbGFzc0xvYWRlcgp7CiAgICAvLyBQU1ItNAogICAgcHJpdmF0ZSAkcHJlZml4TGVuZ3Roc1BzcjQgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkcHJlZml4RGlyc1BzcjQgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkZmFsbGJhY2tEaXJzUHNyNCA9IGFycmF5KCk7CgogICAgLy8gUFNSLTAKICAgIHByaXZhdGUgJHByZWZpeGVzUHNyMCA9IGFycmF5KCk7CiAgICBwcml2YXRlICRmYWxsYmFja0RpcnNQc3IwID0gYXJyYXkoKTsKCiAgICBwcml2YXRlICR1c2VJbmNsdWRlUGF0aCA9IGZhbHNlOwogICAgcHJpdmF0ZSAkY2xhc3NNYXAgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkY2xhc3NNYXBBdXRob3JpdGF0aXZlID0gZmFsc2U7CiAgICBwcml2YXRlICRtaXNzaW5nQ2xhc3NlcyA9IGFycmF5KCk7CiAgICBwcml2YXRlICRhcGN1UHJlZml4OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmVmaXhlcygpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+cHJlZml4ZXNQc3IwKSkgewogICAgICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmNfYXJyYXkoJ2FycmF5X21lcmdlJywgJHRoaXMtPnByZWZpeGVzUHNyMCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlZml4ZXNQc3I0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByZWZpeERpcnNQc3I0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGYWxsYmFja0RpcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RmFsbGJhY2tEaXJzUHNyNCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGFzc01hcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY2xhc3NNYXAgQ2xhc3MgdG8gZmlsZW5hbWUgbWFwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDbGFzc01hcChhcnJheSAkY2xhc3NNYXApCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jbGFzc01hcCkgewogICAgICAgICAgICAkdGhpcy0+Y2xhc3NNYXAgPSBhcnJheV9tZXJnZSgkdGhpcy0+Y2xhc3NNYXAsICRjbGFzc01hcCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmNsYXNzTWFwID0gJGNsYXNzTWFwOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyBhIHNldCBvZiBQU1ItMCBkaXJlY3RvcmllcyBmb3IgYSBnaXZlbiBwcmVmaXgsIGVpdGhlcgogICAgICogYXBwZW5kaW5nIG9yIHByZXBlbmRpbmcgdG8gdGhlIG9uZXMgcHJldmlvdXNseSBzZXQgZm9yIHRoaXMgcHJlZml4LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgJHByZWZpeCAgVGhlIHByZWZpeAogICAgICogQHBhcmFtIGFycmF5fHN0cmluZyAkcGF0aHMgICBUaGUgUFNSLTAgcm9vdCBkaXJlY3RvcmllcwogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAkcHJlcGVuZCBXaGV0aGVyIHRvIHByZXBlbmQgdGhlIGRpcmVjdG9yaWVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoJHByZWZpeCwgJHBhdGhzLCAkcHJlcGVuZCA9IGZhbHNlKQogICAgewogICAgICAgIGlmICghJHByZWZpeCkgewogICAgICAgICAgICBpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgKGFycmF5KSAkcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjAKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwLAogICAgICAgICAgICAgICAgICAgIChhcnJheSkgJHBhdGhzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkZmlyc3QgPSAkcHJlZml4WzBdOwogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdWyRwcmVmaXhdKSkgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSAoYXJyYXkpICRwYXRoczsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCRwcmVwZW5kKSB7CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgKGFycmF5KSAkcGF0aHMsCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XSwKICAgICAgICAgICAgICAgIChhcnJheSkgJHBhdGhzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi00IGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIG5hbWVzcGFjZSwgZWl0aGVyCiAgICAgKiBhcHBlbmRpbmcgb3IgcHJlcGVuZGluZyB0byB0aGUgb25lcyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBuYW1lc3BhY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAkcHJlZml4ICBUaGUgcHJlZml4L25hbWVzcGFjZSwgd2l0aCB0cmFpbGluZyAnXFwnCiAgICAgKiBAcGFyYW0gYXJyYXl8c3RyaW5nICRwYXRocyAgIFRoZSBQU1ItNCBiYXNlIGRpcmVjdG9yaWVzCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICRwcmVwZW5kIFdoZXRoZXIgdG8gcHJlcGVuZCB0aGUgZGlyZWN0b3JpZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFBzcjQoJHByZWZpeCwgJHBhdGhzLCAkcHJlcGVuZCA9IGZhbHNlKQogICAgewogICAgICAgIGlmICghJHByZWZpeCkgewogICAgICAgICAgICAvLyBSZWdpc3RlciBkaXJlY3RvcmllcyBmb3IgdGhlIHJvb3QgbmFtZXNwYWNlLgogICAgICAgICAgICBpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0ID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgKGFycmF5KSAkcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyNCA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0LAogICAgICAgICAgICAgICAgICAgIChhcnJheSkgJHBhdGhzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCFpc3NldCgkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0pKSB7CiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIGRpcmVjdG9yaWVzIGZvciBhIG5ldyBuYW1lc3BhY2UuCiAgICAgICAgICAgICRsZW5ndGggPSBzdHJsZW4oJHByZWZpeCk7CiAgICAgICAgICAgIGlmICgnXFwnICE9PSAkcHJlZml4WyRsZW5ndGggLSAxXSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkEgbm9uLWVtcHR5IFBTUi00IHByZWZpeCBtdXN0IGVuZCB3aXRoIGEgbmFtZXNwYWNlIHNlcGFyYXRvci4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+cHJlZml4TGVuZ3Roc1BzcjRbJHByZWZpeFswXV1bJHByZWZpeF0gPSAkbGVuZ3RoOwogICAgICAgICAgICAkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0gPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2VpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgLy8gUHJlcGVuZCBkaXJlY3RvcmllcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIG5hbWVzcGFjZS4KICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAoYXJyYXkpICRwYXRocywKICAgICAgICAgICAgICAgICR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XQogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEFwcGVuZCBkaXJlY3RvcmllcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIG5hbWVzcGFjZS4KICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0sCiAgICAgICAgICAgICAgICAoYXJyYXkpICRwYXRocwogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyBhIHNldCBvZiBQU1ItMCBkaXJlY3RvcmllcyBmb3IgYSBnaXZlbiBwcmVmaXgsCiAgICAgKiByZXBsYWNpbmcgYW55IG90aGVycyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBwcmVmaXguCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAkcHJlZml4IFRoZSBwcmVmaXgKICAgICAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJHBhdGhzICBUaGUgUFNSLTAgYmFzZSBkaXJlY3RvcmllcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0KCRwcmVmaXgsICRwYXRocykKICAgIHsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjAgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRwcmVmaXhbMF1dWyRwcmVmaXhdID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi00IGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIG5hbWVzcGFjZSwKICAgICAqIHJlcGxhY2luZyBhbnkgb3RoZXJzIHByZXZpb3VzbHkgc2V0IGZvciB0aGlzIG5hbWVzcGFjZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICRwcmVmaXggVGhlIHByZWZpeC9uYW1lc3BhY2UsIHdpdGggdHJhaWxpbmcgJ1xcJwogICAgICogQHBhcmFtIGFycmF5fHN0cmluZyAkcGF0aHMgIFRoZSBQU1ItNCBiYXNlIGRpcmVjdG9yaWVzCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRQc3I0KCRwcmVmaXgsICRwYXRocykKICAgIHsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGVuZ3RoID0gc3RybGVuKCRwcmVmaXgpOwogICAgICAgICAgICBpZiAoJ1xcJyAhPT0gJHByZWZpeFskbGVuZ3RoIC0gMV0pIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJBIG5vbi1lbXB0eSBQU1ItNCBwcmVmaXggbXVzdCBlbmQgd2l0aCBhIG5hbWVzcGFjZSBzZXBhcmF0b3IuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnByZWZpeExlbmd0aHNQc3I0WyRwcmVmaXhbMF1dWyRwcmVmaXhdID0gJGxlbmd0aDsKICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVHVybnMgb24gc2VhcmNoaW5nIHRoZSBpbmNsdWRlIHBhdGggZm9yIGNsYXNzIGZpbGVzLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICR1c2VJbmNsdWRlUGF0aAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VXNlSW5jbHVkZVBhdGgoJHVzZUluY2x1ZGVQYXRoKQogICAgewogICAgICAgICR0aGlzLT51c2VJbmNsdWRlUGF0aCA9ICR1c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIENhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBhdXRvbG9hZGVyIHVzZXMgdGhlIGluY2x1ZGUgcGF0aCB0byBjaGVjawogICAgICogZm9yIGNsYXNzZXMuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VJbmNsdWRlUGF0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIFR1cm5zIG9mZiBzZWFyY2hpbmcgdGhlIHByZWZpeCBhbmQgZmFsbGJhY2sgZGlyZWN0b3JpZXMgZm9yIGNsYXNzZXMKICAgICAqIHRoYXQgaGF2ZSBub3QgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGNsYXNzIG1hcC4KICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbCAkY2xhc3NNYXBBdXRob3JpdGF0aXZlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzc01hcEF1dGhvcml0YXRpdmUoJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlID0gJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNob3VsZCBjbGFzcyBsb29rdXAgZmFpbCBpZiBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgY2xhc3MgbWFwPwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDbGFzc01hcEF1dGhvcml0YXRpdmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlOwogICAgfQoKICAgIC8qKgogICAgICogQVBDdSBwcmVmaXggdG8gdXNlIHRvIGNhY2hlIGZvdW5kL25vdC1mb3VuZCBjbGFzc2VzLCBpZiB0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRhcGN1UHJlZml4CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRBcGN1UHJlZml4KCRhcGN1UHJlZml4KQogICAgewogICAgICAgICR0aGlzLT5hcGN1UHJlZml4ID0gZnVuY3Rpb25fZXhpc3RzKCdhcGN1X2ZldGNoJykgJiYgaW5pX2dldCgnYXBjLmVuYWJsZWQnKSA/ICRhcGN1UHJlZml4IDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBBUEN1IHByZWZpeCBpbiB1c2UsIG9yIG51bGwgaWYgQVBDdSBjYWNoaW5nIGlzIG5vdCBlbmFibGVkLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFwY3VQcmVmaXgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXBjdVByZWZpeDsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyB0aGlzIGluc3RhbmNlIGFzIGFuIGF1dG9sb2FkZXIuCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJHByZXBlbmQgV2hldGhlciB0byBwcmVwZW5kIHRoZSBhdXRvbG9hZGVyIG9yIG5vdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXIoJHByZXBlbmQgPSBmYWxzZSkKICAgIHsKICAgICAgICBzcGxfYXV0b2xvYWRfcmVnaXN0ZXIoYXJyYXkoJHRoaXMsICdsb2FkQ2xhc3MnKSwgdHJ1ZSwgJHByZXBlbmQpOwogICAgfQoKICAgIC8qKgogICAgICogVW5yZWdpc3RlcnMgdGhpcyBpbnN0YW5jZSBhcyBhbiBhdXRvbG9hZGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5yZWdpc3RlcigpCiAgICB7CiAgICAgICAgc3BsX2F1dG9sb2FkX3VucmVnaXN0ZXIoYXJyYXkoJHRoaXMsICdsb2FkQ2xhc3MnKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2FkcyB0aGUgZ2l2ZW4gY2xhc3Mgb3IgaW50ZXJmYWNlLgogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICRjbGFzcyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MKICAgICAqIEByZXR1cm4gYm9vbHxudWxsIFRydWUgaWYgbG9hZGVkLCBudWxsIG90aGVyd2lzZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZENsYXNzKCRjbGFzcykKICAgIHsKICAgICAgICBpZiAoJGZpbGUgPSAkdGhpcy0+ZmluZEZpbGUoJGNsYXNzKSkgewogICAgICAgICAgICBpbmNsdWRlRmlsZSgkZmlsZSk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kcyB0aGUgcGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgY2xhc3MgaXMgZGVmaW5lZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xmYWxzZSBUaGUgcGF0aCBpZiBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmaW5kRmlsZSgkY2xhc3MpCiAgICB7CiAgICAgICAgLy8gY2xhc3MgbWFwIGxvb2t1cAogICAgICAgIGlmIChpc3NldCgkdGhpcy0+Y2xhc3NNYXBbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcFskY2xhc3NdOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPmNsYXNzTWFwQXV0aG9yaXRhdGl2ZSB8fCBpc3NldCgkdGhpcy0+bWlzc2luZ0NsYXNzZXNbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgJGZpbGUgPSBhcGN1X2ZldGNoKCR0aGlzLT5hcGN1UHJlZml4LiRjbGFzcywgJGhpdCk7CiAgICAgICAgICAgIGlmICgkaGl0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRmaWxlID0gJHRoaXMtPmZpbmRGaWxlV2l0aEV4dGVuc2lvbigkY2xhc3MsICcucGhwJyk7CgogICAgICAgIC8vIFNlYXJjaCBmb3IgSGFjayBmaWxlcyBpZiB3ZSBhcmUgcnVubmluZyBvbiBISFZNCiAgICAgICAgaWYgKGZhbHNlID09PSAkZmlsZSAmJiBkZWZpbmVkKCdISFZNX1ZFUlNJT04nKSkgewogICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5maW5kRmlsZVdpdGhFeHRlbnNpb24oJGNsYXNzLCAnLmhoJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgYXBjdV9hZGQoJHRoaXMtPmFwY3VQcmVmaXguJGNsYXNzLCAkZmlsZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmFsc2UgPT09ICRmaWxlKSB7CiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoYXQgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdC4KICAgICAgICAgICAgJHRoaXMtPm1pc3NpbmdDbGFzc2VzWyRjbGFzc10gPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaWxlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZEZpbGVXaXRoRXh0ZW5zaW9uKCRjbGFzcywgJGV4dCkKICAgIHsKICAgICAgICAvLyBQU1ItNCBsb29rdXAKICAgICAgICAkbG9naWNhbFBhdGhQc3I0ID0gc3RydHIoJGNsYXNzLCAnXFwnLCBESVJFQ1RPUllfU0VQQVJBVE9SKSAuICRleHQ7CgogICAgICAgICRmaXJzdCA9ICRjbGFzc1swXTsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeExlbmd0aHNQc3I0WyRmaXJzdF0pKSB7CiAgICAgICAgICAgICRzdWJQYXRoID0gJGNsYXNzOwogICAgICAgICAgICB3aGlsZSAoZmFsc2UgIT09ICRsYXN0UG9zID0gc3RycnBvcygkc3ViUGF0aCwgJ1xcJykpIHsKICAgICAgICAgICAgICAgICRzdWJQYXRoID0gc3Vic3RyKCRzdWJQYXRoLCAwLCAkbGFzdFBvcyk7CiAgICAgICAgICAgICAgICAkc2VhcmNoID0gJHN1YlBhdGguJ1xcJzsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHNlYXJjaF0pKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhdGhFbmQgPSBESVJFQ1RPUllfU0VQQVJBVE9SIC4gc3Vic3RyKCRsb2dpY2FsUGF0aFBzcjQsICRsYXN0UG9zICsgMSk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnByZWZpeERpcnNQc3I0WyRzZWFyY2hdIGFzICRkaXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlID0gJGRpciAuICRwYXRoRW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQU1ItNCBmYWxsYmFjayBkaXJzCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgYXMgJGRpcikgewogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSAkZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRsb2dpY2FsUGF0aFBzcjQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFBTUi0wIGxvb2t1cAogICAgICAgIGlmIChmYWxzZSAhPT0gJHBvcyA9IHN0cnJwb3MoJGNsYXNzLCAnXFwnKSkgewogICAgICAgICAgICAvLyBuYW1lc3BhY2VkIGNsYXNzIG5hbWUKICAgICAgICAgICAgJGxvZ2ljYWxQYXRoUHNyMCA9IHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAwLCAkcG9zICsgMSkKICAgICAgICAgICAgICAgIC4gc3RydHIoc3Vic3RyKCRsb2dpY2FsUGF0aFBzcjQsICRwb3MgKyAxKSwgJ18nLCBESVJFQ1RPUllfU0VQQVJBVE9SKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBQRUFSLWxpa2UgY2xhc3MgbmFtZQogICAgICAgICAgICAkbG9naWNhbFBhdGhQc3IwID0gc3RydHIoJGNsYXNzLCAnXycsIERJUkVDVE9SWV9TRVBBUkFUT1IpIC4gJGV4dDsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF0pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XSBhcyAkcHJlZml4ID0+ICRkaXJzKSB7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gc3RycG9zKCRjbGFzcywgJHByZWZpeCkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZGlycyBhcyAkZGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGxvZ2ljYWxQYXRoUHNyMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTAgZmFsbGJhY2sgZGlycwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mYWxsYmFja0RpcnNQc3IwIGFzICRkaXIpIHsKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbG9naWNhbFBhdGhQc3IwKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQU1ItMCBpbmNsdWRlIHBhdGhzLgogICAgICAgIGlmICgkdGhpcy0+dXNlSW5jbHVkZVBhdGggJiYgJGZpbGUgPSBzdHJlYW1fcmVzb2x2ZV9pbmNsdWRlX3BhdGgoJGxvZ2ljYWxQYXRoUHNyMCkpIHsKICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9CgovKioKICogU2NvcGUgaXNvbGF0ZWQgaW5jbHVkZS4KICoKICogUHJldmVudHMgYWNjZXNzIHRvICR0aGlzL3NlbGYgZnJvbSBpbmNsdWRlZCBmaWxlcy4KICovCmZ1bmN0aW9uIGluY2x1ZGVGaWxlKCRmaWxlKQp7CiAgICBpbmNsdWRlICRmaWxlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/installed.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WwogICAgewogICAgICAgICJuYW1lIjogInBhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIiLAogICAgICAgICJ2ZXJzaW9uIjogIjEuMiIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjIuMC4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMGYzNmI3Y2ZiZDcxZDI1ODM2YmNiOWY0YjU4YzA5MjUyY2E0ZTllYyIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci96aXBiYWxsLzBmMzZiN2NmYmQ3MWQyNTgzNmJjYjlmNGI1OGMwOTI1MmNhNGU5ZWMiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjBmMzZiN2NmYmQ3MWQyNTgzNmJjYjlmNGI1OGMwOTI1MmNhNGU5ZWMiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAic2FiYmVyd29ybS9waHAtY3NzLXBhcnNlciI6ICIqIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxOS0wMy0wNlQxMjo0OTo0MCswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiUGFkYWxpeWFqYXlcXFBIUEF1dG9wcmVmaXhlclxcIjogInNyYyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkpheSBwYWRhbGl5YSIKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkNTUyBBdXRvcHJlZml4ZXIgd3JpdHRlbiBpbiBwdXJlIFBIUC4iCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInNhYmJlcndvcm0vcGhwLWNzcy1wYXJzZXIiLAogICAgICAgICJ2ZXJzaW9uIjogIjguMy4wIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjguMy4wLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIuZ2l0IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MWJjYzNlM2ZkYjczODZjOWEyZTBlMGFhMDljYTc1Y2M0M2YxMjFmIgogICAgICAgIH0sCiAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zYWJiZXJ3b3JtL1BIUC1DU1MtUGFyc2VyL3ppcGJhbGwvOTFiY2MzZTNmZGI3Mzg2YzlhMmUwZTBhYTA5Y2E3NWNjNDNmMTIxZiIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOTFiY2MzZTNmZGI3Mzg2YzlhMmUwZTBhYTA5Y2E3NWNjNDNmMTIxZiIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgImNvZGFjeS9jb3ZlcmFnZSI6ICJeMS40IiwKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC44IgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxOS0wMi0yMlQwNzo0Mjo1MiswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTAiOiB7CiAgICAgICAgICAgICAgICAiU2FiYmVyd29ybVxcQ1NTIjogImxpYi8iCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJSYXBoYWVsIFNjaHdlaWtlcnQiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJQYXJzZXIgZm9yIENTUyBGaWxlcyB3cml0dGVuIGluIFBIUCIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuc2FiYmVyd29ybS5jb20vYmxvZy8yMDEwLzYvMTAvcGhwLWNzcy1wYXJzZXIiLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgImNzcyIsCiAgICAgICAgICAgICJwYXJzZXIiLAogICAgICAgICAgICAic3R5bGVzaGVldCIKICAgICAgICBdCiAgICB9Cl0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/composer/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Rm9ybWF0OiBodHRwOi8vd3d3LmRlYmlhbi5vcmcvZG9jL3BhY2thZ2luZy1tYW51YWxzL2NvcHlyaWdodC1mb3JtYXQvMS4wLwpVcHN0cmVhbS1OYW1lOiBDb21wb3NlcgpVcHN0cmVhbS1Db250YWN0OiBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgpTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9jb21wb3Nlci9jb21wb3NlcgoKRmlsZXM6ICoKQ29weXJpZ2h0OiAyMDE2LCBOaWxzIEFkZXJtYW5uIDxuYWRlcm1hbkBuYWRlcm1hbi5kZT4KICAgICAgICAgICAyMDE2LCBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgpMaWNlbnNlOiBFeHBhdAoKRmlsZXM6IHNyYy9Db21wb3Nlci9VdGlsL1Rsc0hlbHBlci5waHAKQ29weXJpZ2h0OiAyMDE2LCBOaWxzIEFkZXJtYW5uIDxuYWRlcm1hbkBuYWRlcm1hbi5kZT4KICAgICAgICAgICAyMDE2LCBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogICAgICAgICAgIDIwMTMsIEV2YW4gQ291cnkgPG1lQGV2YW5jb3VyeS5jb20+CkxpY2Vuc2U6IEV4cGF0IGFuZCBCU0QtMi1DbGF1c2UKCkxpY2Vuc2U6IEJTRC0yLUNsYXVzZQogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKIC4KICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAuCiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAgICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAgICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KIC4KIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KCkxpY2Vuc2U6IEV4cGF0CiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAogdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogLgogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogLgogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciIsCiAgICAiZGVzY3JpcHRpb24iOiAiQ1NTIEF1dG9wcmVmaXhlciB3cml0dGVuIGluIHB1cmUgUEhQLiIsCgkibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJKYXkgcGFkYWxpeWEiCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJzYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyIjogIioiCiAgICB9LAogICAgImF1dG9sb2FkIjp7CiAgICAgICAgICAgICJwc3ItNCI6IHsiUGFkYWxpeWFqYXlcXFBIUEF1dG9wcmVmaXhlclxcIjogInNyYyJ9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNpbnN0YWxsaW5nLWRlcGVuZGVuY2llcyIsCiAgICAgICAgIlRoaXMgZmlsZSBpcyBAZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkiCiAgICBdLAogICAgImNvbnRlbnQtaGFzaCI6ICI1N2E3NzE3ZDE4OTAzZmUxNmRhYmVkZWJlODVhZjkxOCIsCiAgICAicGFja2FnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiOC4yLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOGJlMzU3ZDkwYzI5YzJmNmRkNDI2YmU0Y2I2MGJmMDllZjZkMDEyMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIvemlwYmFsbC84YmUzNTdkOTBjMjljMmY2ZGQ0MjZiZTRjYjYwYmYwOWVmNmQwMTIwIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOGJlMzU3ZDkwYzI5YzJmNmRkNDI2YmU0Y2I2MGJmMDllZjZkMDEyMCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuOCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItMCI6IHsKICAgICAgICAgICAgICAgICAgICAiU2FiYmVyd29ybVxcQ1NTIjogImxpYi8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJSYXBoYWVsIFNjaHdlaWtlcnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQYXJzZXIgZm9yIENTUyBGaWxlcyB3cml0dGVuIGluIFBIUCIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vd3d3LnNhYmJlcndvcm0uY29tL2Jsb2cvMjAxMC82LzEwL3BocC1jc3MtcGFyc2VyIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNzcyIsCiAgICAgICAgICAgICAgICAicGFyc2VyIiwKICAgICAgICAgICAgICAgICJzdHlsZXNoZWV0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE4LTA3LTEzVDEzOjIzOjU2KzAwOjAwIgogICAgICAgIH0KICAgIF0sCiAgICAicGFja2FnZXMtZGV2IjogW10sCiAgICAiYWxpYXNlcyI6IFtdLAogICAgIm1pbmltdW0tc3RhYmlsaXR5IjogInN0YWJsZSIsCiAgICAic3RhYmlsaXR5LWZsYWdzIjogW10sCiAgICAicHJlZmVyLXN0YWJsZSI6IGZhbHNlLAogICAgInByZWZlci1sb3dlc3QiOiBmYWxzZSwKICAgICJwbGF0Zm9ybSI6IFtdLAogICAgInBsYXRmb3JtLWRldiI6IFtdCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAxOSBKYXkgUGFkYWxpeWEKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/nbproject/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/nbproject/project.properties</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aW5jbHVkZS5wYXRoPSR7cGhwLmdsb2JhbC5pbmNsdWRlLnBhdGh9DQpwaHAudmVyc2lvbj1QSFBfNTYNCnNvdXJjZS5lbmNvZGluZz1VVEYtOA0Kc3JjLmRpcj0uDQp0YWdzLmFzcD1mYWxzZQ0KdGFncy5zaG9ydD1mYWxzZQ0Kd2ViLnJvb3Q9Lg0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/nbproject/project.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxwcm9qZWN0IHhtbG5zPSJodHRwOi8vd3d3Lm5ldGJlYW5zLm9yZy9ucy9wcm9qZWN0LzEiPg0KICAgIDx0eXBlPm9yZy5uZXRiZWFucy5tb2R1bGVzLnBocC5wcm9qZWN0PC90eXBlPg0KICAgIDxjb25maWd1cmF0aW9uPg0KICAgICAgICA8ZGF0YSB4bWxucz0iaHR0cDovL3d3dy5uZXRiZWFucy5vcmcvbnMvcGhwLXByb2plY3QvMSI+DQogICAgICAgICAgICA8bmFtZT5waHAtYXV0b3ByZWZpeGVyPC9uYW1lPg0KICAgICAgICA8L2RhdGE+DQogICAgPC9jb25maWd1cmF0aW9uPg0KPC9wcm9qZWN0Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBwaHAtYXV0b3ByZWZpeGVyCkNTUyBhdXRvcHJlZml4ZXIgd3JpdHRlbiBpbiBwdXJlIFBIUAoKIyMgSW5zdGFsbGF0aW9uClNpbXBseSBhZGQgYSBkZXBlbmRlbmN5IG9uIHBhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIgdG8geW91ciBjb21wb3Nlci5qc29uIGZpbGUgaWYgeW91IHVzZSBbQ29tcG9zZXJdKGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnLykgdG8gbWFuYWdlIHRoZSBkZXBlbmRlbmNpZXMgb2YgeW91ciBwcm9qZWN0OgpgYGAKY29tcG9zZXIgcmVxdWlyZSBwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyCmBgYApBbHRob3VnaCBpdCdzIHJlY29tbWVuZGVkIHRvIHVzZSBDb21wb3NlciwgeW91IGNhbiBhY3R1YWxseSBbaW5jbHVkZSB0aGVzZSBmaWxlc10oaHR0cHM6Ly9naXRodWIuY29tL3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvd2lraS9JbnN0YWxsYXRpb24pIGFueXdheSB5b3Ugd2FudC4KCiMjIFVzYWdlCmBgYAp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXEF1dG9wcmVmaXhlcjsKCiR1bnByZWZpeGVkX2NzcyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCdtYWluLmNzcycpOyAvLyBDU1MgY29kZQoKJGF1dG9wcmVmaXhlciA9IG5ldyBBdXRvcHJlZml4ZXIoJHVucHJlZml4ZWRfY3NzKTsKJHByZWZpeGVkX2NzcyA9ICRhdXRvcHJlZml4ZXItPmNvbXBpbGUoKTsKYGBgCgojIyBMaWNlbnNlCgpbTUlUXShodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUKSBsaWNlbnNlZC4K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Autoprefixer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlcjsKCmNsYXNzIEF1dG9wcmVmaXhlciB7CiAgICAKICAgIHByaXZhdGUgJGNzc19wYXJzZXI7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkY3NzX2NvZGUpewogICAgICAgICR0aGlzLT5jc3NfcGFyc2VyID0gbmV3IFxTYWJiZXJ3b3JtXENTU1xQYXJzZXIoJGNzc19jb2RlKTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoKXsKICAgICAgICBpZigkdGhpcy0+Y3NzX3BhcnNlcil7CiAgICAgICAgICAgICRjc3NfZG9jdW1lbnQgPSAkdGhpcy0+Y3NzX3BhcnNlci0+cGFyc2UoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgICR0aGlzLT5jb21waWxlQ1NTTGlzdCgkY3NzX2RvY3VtZW50KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiAkY3NzX2RvY3VtZW50LT5yZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDo6Y3JlYXRlUHJldHR5KCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ29tcGlsZSBDU1NMaXN0CiAgICAgKiBAcGFyYW0gXFNhYmJlcndvcm1cQ1NTXENTU0xpc3RcQ1NTTGlzdCAkY3NzX2xpc3QKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVDU1NMaXN0KCRjc3NfbGlzdCl7CiAgICAgICAgJG1fY29udGVudHMgPSAkY3NzX2xpc3QtPmdldENvbnRlbnRzKCk7CiAgICAgICAgJHRvdGFsX2FkZGVkID0gMDsKICAgICAgICAKICAgICAgICBmb3JlYWNoKCRjc3NfbGlzdC0+Z2V0Q29udGVudHMoKSBhcyAka2V5ID0+ICRjb250ZW50KXsKICAgICAgICAgICAgJHZlbmRvcl9jb250ZW50cyA9IGFycmF5KCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBSdWxlU2V0CiAgICAgICAgICAgIGlmKCRjb250ZW50IGluc3RhbmNlb2YgXFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcUnVsZVNldCkgewogICAgICAgICAgICAgICAgJGNvbXBpbGVfcnVsZVNldCA9IG5ldyBDb21waWxlXFJ1bGVTZXQoJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgJGNvbXBpbGVfcnVsZVNldC0+Y29tcGlsZSgpOwogICAgICAgICAgICB9IAogICAgICAgICAgICAKICAgICAgICAgICAgLy8gRGVjbGFyYXRpb25CbG9jawogICAgICAgICAgICBpZigkY29udGVudCBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XERlY2xhcmF0aW9uQmxvY2spewogICAgICAgICAgICAgICAgJGNvbXBpbGVfZGVjbGFyYXRpb25CbG9jayA9IG5ldyBDb21waWxlXERlY2xhcmF0aW9uQmxvY2soJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgJGNvbXBpbGVfZGVjbGFyYXRpb25CbG9jay0+Y29tcGlsZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBBdFJ1bGUKICAgICAgICAgICAgaWYoJGNvbnRlbnQgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQXRSdWxlKXsKICAgICAgICAgICAgICAgICRjb21waWxlX2F0UnVsZSA9IG5ldyBDb21waWxlXEF0UnVsZSgkY29udGVudCk7CiAgICAgICAgICAgICAgICAkbV9hdFJ1bGVzID0gJGNvbXBpbGVfYXRSdWxlLT5jb21waWxlKCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmKCRtX2F0UnVsZXMpewogICAgICAgICAgICAgICAgICAgICR2ZW5kb3JfY29udGVudHMgPSBhcnJheV9tZXJnZSgkdmVuZG9yX2NvbnRlbnRzLCAkbV9hdFJ1bGVzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQ1NTTGlzdAogICAgICAgICAgICBpZigkY29udGVudCBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XENTU0xpc3QpIHsgCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUNTU0xpc3QoJGNvbnRlbnQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBSZW1vdmUgYWxyZWFkeSBleGlzdGluZyB2ZW5kb3IgY29udGVudAogICAgICAgICAgICAkdmVuZG9yX2NvbnRlbnRzID0gYXJyYXlfZmlsdGVyKCR2ZW5kb3JfY29udGVudHMsIGZ1bmN0aW9uKCR2ZW5kb3JfY29udGVudCkgdXNlKCRtX2NvbnRlbnRzKXsKICAgICAgICAgICAgICAgIGlmKCFpbl9hcnJheSgoc3RyaW5nKSR2ZW5kb3JfY29udGVudCwgYXJyYXlfbWFwKCdzdHJ2YWwnLCAkbV9jb250ZW50cykpKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEFkZCB2ZW5kb3IgY29udGVudAogICAgICAgICAgICBpZigkdmVuZG9yX2NvbnRlbnRzKXsKICAgICAgICAgICAgICAgIGFycmF5X3NwbGljZSgkbV9jb250ZW50cywgJGtleSArICR0b3RhbF9hZGRlZCwgMCwgJHZlbmRvcl9jb250ZW50cyk7CiAgICAgICAgICAgICAgICAkdG90YWxfYWRkZWQgKz0gY291bnQoJHZlbmRvcl9jb250ZW50cyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGNzc19saXN0LT5zZXRDb250ZW50cygkbV9jb250ZW50cyk7CiAgICB9CiAgICAKfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Compile/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Compile/AtRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxDb21waWxlOwoKdXNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7CgovKioKICogQ29tcGlsZSBDU1MgQXRSdWxlCiAqIFRoaXMgY2xhc3MgdW5kZXIgY29uc3RydWN0aW9uCiAqLwpjbGFzcyBBdFJ1bGUgewogICAgLyoqCiAgICAgKiBAdHlwZSBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQXRSdWxlCiAgICAgKi8KICAgIHByaXZhdGUgJGF0UnVsZTsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhdFJ1bGUpewogICAgICAgIGlmKCRhdFJ1bGUgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQXRSdWxlKXsKICAgICAgICAgICAgJHRoaXMtPmF0UnVsZSA9ICRhdFJ1bGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ0ludmFsaWQgYXJndW1lbnQhIFJlcXVpcmUgaW5zdGFuY2Ugb2YgXFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZScpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBDb21waWxlIEF0UnVsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgpewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0VmVuZG9yc1J1bGUoKTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvcnNSdWxlKCl7CiAgICAgICAgJHZlbmRvcnNfcnVsZSA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaChWZW5kb3I6OmdldFZlbmRvcnMoKSBhcyAkdmVuZG9yKXsKICAgICAgICAgICAgJHZlbmRvcl9ydWxlX25hbWUgPSAkdGhpcy0+Z2V0VmVuZG9yUnVsZU5hbWUoJHZlbmRvcik7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkdmVuZG9yX3J1bGVfbmFtZSl7CiAgICAgICAgICAgICAgICAkdmVuZG9yc19ydWxlW10gPSAkdmVuZG9yX3J1bGVfbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHZlbmRvcnNfcnVsZTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvclJ1bGVOYW1lKCR2ZW5kb3IpewogICAgICAgICR2ZW5kb3JfcnVsZV9uYW1lcyA9IFZlbmRvcjo6Z2V0QVRSdWxlKCR2ZW5kb3IpOwogICAgICAgIAogICAgICAgICRnZW5lcmljX3J1bGVfbmFtZSA9ICR0aGlzLT5hdFJ1bGUtPmF0UnVsZU5hbWUoKTsKICAgICAgICAKICAgICAgICBpZihpc3NldCgkdmVuZG9yX3J1bGVfbmFtZXNbJGdlbmVyaWNfcnVsZV9uYW1lXSkpewogICAgICAgICAgICAkdmVuZG9yX2F0X3J1bGUgPSBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCR0aGlzLT5hdFJ1bGUgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcQ1NTTGlzdFxLZXlGcmFtZSl7CiAgICAgICAgICAgICAgICAkdmVuZG9yX2F0X3J1bGUgPSBjbG9uZSAkdGhpcy0+YXRSdWxlOwogICAgICAgICAgICAgICAgJHZlbmRvcl9hdF9ydWxlLT5zZXRWZW5kb3JLZXlGcmFtZSgkdmVuZG9yX3J1bGVfbmFtZXNbJGdlbmVyaWNfcnVsZV9uYW1lXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCR0aGlzLT5hdFJ1bGUgaW5zdGFuY2VvZiBcU2FiYmVyd29ybVxDU1NcQ1NTTGlzdFxBdFJ1bGVCbG9ja0xpc3QpewogICAgICAgICAgICAgICAgJHZlbmRvcl9hdF9ydWxlID0gbmV3IFxTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XEF0UnVsZUJsb2NrTGlzdCgkdmVuZG9yX3J1bGVfbmFtZXNbJGdlbmVyaWNfcnVsZV9uYW1lXSwgJHRoaXMtPmF0UnVsZS0+YXRSdWxlQXJncygpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuICR2ZW5kb3JfYXRfcnVsZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgCi8vICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwYXJzZUFyZ3MoJGFyZ1N0cil7Ci8vICAgICAgICAkcGFyc2VBcmcgPSBhcnJheSgpOwovLyAgICAgICAgJHBhcnNlQXJnWyd0eXBlJ10gPSAnYm94JzsKLy8gICAgICAgICRwYXJzZUFyZ1sndmFsdWUnXSA9ICcnOwovLyAgICAgICAgCi8vICAgICAgICAkYXJnU3RyID0gbHRyaW0odHJpbSgkYXJnU3RyKSwgJygnKTsKLy8gICAgICAgIAovLyAgICAgICAgZm9yKCRpID0gMDsgJGkgPCBzdHJsZW4oJGFyZ1N0cik7ICRpKyspewovLyAgICAgICAgICAgIGlmKCRhcmdTdHJbJGldID09ICcoJyl7Ci8vICAgICAgICAgICAgICAgIAovLyAgICAgICAgICAgICAgICAKLy8gICAgICAgICAgICB9IGVsc2VpZigkYXJnU3RyWyRpXSA9PSAnKScpewovLyAgICAgICAgICAgICAgICBicmVhazsKLy8gICAgICAgICAgICB9Ci8vICAgICAgICB9Ci8vICAgICAgICAKLy8gICAgICAgIHJldHVybiAkcGFyc2VBcmc7Ci8vICAgIH0KfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Compile/DeclarationBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxDb21waWxlOwoKY2xhc3MgRGVjbGFyYXRpb25CbG9jayB7CiAgICAvKioKICAgICAqIEB0eXBlIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XERlY2xhcmF0aW9uQmxvY2sKICAgICAqLwogICAgcHJpdmF0ZSAkZGVjbGFyYXRpb25CbG9jazsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkZWNsYXJhdGlvbkJsb2NrKXsKICAgICAgICBpZigkZGVjbGFyYXRpb25CbG9jayBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XERlY2xhcmF0aW9uQmxvY2spewogICAgICAgICAgICAkdGhpcy0+ZGVjbGFyYXRpb25CbG9jayA9ICRkZWNsYXJhdGlvbkJsb2NrOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGFyZ3VtZW50ISBSZXF1aXJlIGluc3RhbmNlIG9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XERlY2xhcmF0aW9uQmxvY2snKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ29tcGlsZSBcU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CiAgICAgICAgJG1fc2VsZWN0b3JzID0gJHRoaXMtPmRlY2xhcmF0aW9uQmxvY2stPmdldFNlbGVjdG9ycygpOwogICAgICAgIAogICAgICAgICR0b3RhbF9hZGRlZCA9IDA7CiAgICAgICAgZm9yZWFjaCgkdGhpcy0+ZGVjbGFyYXRpb25CbG9jay0+Z2V0U2VsZWN0b3JzKCkgYXMgJGtleSA9PiAkc2VsZWN0b3IpewogICAgICAgICAgICAkcGFyc2Vfc2VsZWN0b3IgPSBuZXcgXFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxQYXJzZVxTZWxlY3Rvcigkc2VsZWN0b3IpOwogICAgICAgICAgICAkdmVuZG9yc19zZWxlY3RvciA9ICRwYXJzZV9zZWxlY3Rvci0+Z2V0VmVuZG9yc1NlbGVjdG9yKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBSZW1vdmUgYWxyZWFkeSBleGlzdGluZyB2YWx1ZQogICAgICAgICAgICAkdmVuZG9yc19zZWxlY3RvciA9IGFycmF5X2ZpbHRlcigkdmVuZG9yc19zZWxlY3RvciwgZnVuY3Rpb24oJHZlbmRvcl9zZWxlY3RvcikgdXNlKCRtX3NlbGVjdG9ycykgewogICAgICAgICAgICAgICAgaWYoIWluX2FycmF5KChzdHJpbmcpJHZlbmRvcl9zZWxlY3RvciwgYXJyYXlfbWFwKCdzdHJ2YWwnLCAkbV9zZWxlY3RvcnMpKSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkdmVuZG9yc19zZWxlY3Rvcil7CiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJG1fc2VsZWN0b3JzLCAka2V5ICsgJHRvdGFsX2FkZGVkLCAwLCAkdmVuZG9yc19zZWxlY3Rvcik7CiAgICAgICAgICAgICAgICAkdG90YWxfYWRkZWQgKz0gY291bnQoJHZlbmRvcnNfc2VsZWN0b3IpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5kZWNsYXJhdGlvbkJsb2NrLT5zZXRTZWxlY3RvcnMoJG1fc2VsZWN0b3JzKTsKICAgIH0KfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Compile/RuleSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxDb21waWxlOwoKY2xhc3MgUnVsZVNldCB7CiAgICAvKioKICAgICAqIEB0eXBlIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XFJ1bGVTZXQKICAgICAqLwogICAgcHJpdmF0ZSAkcnVsZVNldDsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRydWxlU2V0KXsKICAgICAgICBpZigkcnVsZVNldCBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XFJ1bGVTZXQpewogICAgICAgICAgICAkdGhpcy0+cnVsZVNldCA9ICRydWxlU2V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGFyZ3VtZW50ISBSZXF1aXJlIGluc3RhbmNlIG9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XFJ1bGVTZXQnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ29tcGlsZSBcU2FiYmVyd29ybVxDU1NcUnVsZVNldFxSdWxlU2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CiAgICAgICAgJG1fcnVsZXMgPSAkdGhpcy0+cnVsZVNldC0+Z2V0UnVsZXMoKTsKICAgICAgICAKICAgICAgICAkdG90YWxfYWRkZWQgPSAwOwogICAgICAgIGZvcmVhY2goJHRoaXMtPnJ1bGVTZXQtPmdldFJ1bGVzKCkgYXMgJGtleSA9PiAkcnVsZSl7CiAgICAgICAgICAgICRwYXJzZXJfcnVsZSA9IG5ldyBcUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFBhcnNlXFJ1bGUoJHJ1bGUpOwogICAgICAgICAgICAkdmVuZG9yX3J1bGVzID0gJHBhcnNlcl9ydWxlLT5nZXRWZW5kb3JSdWxlcygpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gUmVtb3ZlIGFscmVhZHkgZXhpc3RpbmcgdmFsdWUKICAgICAgICAgICAgJHZlbmRvcl9ydWxlcyA9IGFycmF5X2ZpbHRlcigkdmVuZG9yX3J1bGVzLCBmdW5jdGlvbigkdmVuZG9yX3J1bGUpIHVzZSgkbV9ydWxlcykgewogICAgICAgICAgICAgICAgaWYoIWluX2FycmF5KChzdHJpbmcpJHZlbmRvcl9ydWxlLCBhcnJheV9tYXAoJ3N0cnZhbCcsICRtX3J1bGVzKSkpewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYoJHZlbmRvcl9ydWxlcyl7CiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJG1fcnVsZXMsICRrZXkgKyAkdG90YWxfYWRkZWQsIDAsICR2ZW5kb3JfcnVsZXMpOwogICAgICAgICAgICAgICAgJHRvdGFsX2FkZGVkICs9IGNvdW50KCR2ZW5kb3JfcnVsZXMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5ydWxlU2V0LT5zZXRSdWxlcygkbV9ydWxlcyk7CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Parse/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Parse/Property.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxQYXJzZTsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yOwoKY2xhc3MgUHJvcGVydHkgewogICAgLyoqCiAgICAgKiBAdHlwZSBTdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkcE5hbWU7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcE5hbWUpewogICAgICAgICR0aGlzLT5wTmFtZSA9ICRwTmFtZTsKICAgIH0KICAgIAovLyAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmVuZG9yc1Byb3BlcnR5KCl7Ci8vICAgICAgICAkdmVuZG9yX3Byb3BlcnRpZXMgPSBhcnJheSgpOwovLyAgICAgICAgCi8vICAgICAgICBmb3JlYWNoKFZlbmRvcjo6Z2V0VmVuZG9ycygpIGFzICR2ZW5kb3IpewovLyAgICAgICAgICAgICR2ZW5kb3JfcHJvcGVydHlfc2V0ID0gVmVuZG9yOjpnZXRSdWxlUHJvcGVydHkoJHZlbmRvcik7Ci8vICAgICAgICAgICAgCi8vICAgICAgICAgICAgaWYoaXNzZXQoJHZlbmRvcl9wcm9wZXJ0eV9zZXRbJHRoaXMtPnBOYW1lXSkpIHsKLy8gICAgICAgICAgICAgICAgJHZlbmRvcl9wcm9wZXJ0aWVzW10gPSBuZXcgUHJvcGVydHkoJHZlbmRvcl9wcm9wZXJ0eV9zZXRbJHRoaXMtPnBOYW1lXSk7Ci8vICAgICAgICAgICAgfQovLyAgICAgICAgfQovLyAgICAgICAgCi8vICAgICAgICByZXR1cm4gJHZlbmRvcl9wcm9wZXJ0aWVzOwovLyAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWZW5kb3JQcm9wZXJ0eSgkdmVuZG9yKXsKICAgICAgICAkdmVuZG9yX3Byb3BlcnR5X3NldCA9IFZlbmRvcjo6Z2V0UnVsZVByb3BlcnR5KCR2ZW5kb3IpOwoKICAgICAgICBpZihpc3NldCgkdmVuZG9yX3Byb3BlcnR5X3NldFskdGhpcy0+cE5hbWVdKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFByb3BlcnR5KCR2ZW5kb3JfcHJvcGVydHlfc2V0WyR0aGlzLT5wTmFtZV0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICAKLy8gICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvclZhbHVlKCRnZW5lcmljX3ZhbHVlLCAkdmVuZG9yKXsKLy8gICAgICAgICR2ZW5kb3JfdmFsdWVzID0gYXJyYXkoKTsKLy8gICAgICAgIAovLyAgICAgICAgLy8gR2V0IHZlbmRvciBsaXN0Ci8vICAgICAgICAkdmVuZG9ycyA9IGFycmF5KCk7Ci8vICAgICAgICBpZigkdmVuZG9yKXsKLy8gICAgICAgICAgICAkdmVuZG9yc1tdID0gJHZlbmRvcjsKLy8gICAgICAgIH0gZWxzZSB7Ci8vICAgICAgICAgICAgJHZlbmRvcnMgPSBWZW5kb3I6OmdldFZlbmRvcnMoKTsKLy8gICAgICAgIH0KLy8gICAgICAgIAovLyAgICAgICAgZm9yZWFjaCgkdmVuZG9ycyBhcyAkdmVuZG9yKXsKLy8gICAgICAgICAgICAkdmVuZG9yX3ZhbHVlX3NldCA9IFZlbmRvcjo6Z2V0UnVsZVZhbHVlKCR2ZW5kb3IpOwovLyAgICAgICAgICAgIAovLyAgICAgICAgICAgIGlmKGlzc2V0KCR2ZW5kb3JfdmFsdWVfc2V0WyR0aGlzLT5wTmFtZV1bJGdlbmVyaWNfdmFsdWVdKSkgewovLyAgICAgICAgICAgICAgICAkdmVuZG9yX3ZhbHVlc1tdID0gJHZlbmRvcl92YWx1ZV9zZXRbJHRoaXMtPnBOYW1lXVskZ2VuZXJpY192YWx1ZV07Ci8vICAgICAgICAgICAgfQovLyAgICAgICAgfQovLyAgICAgICAgCi8vICAgICAgICByZXR1cm4gJHZlbmRvcl92YWx1ZXM7Ci8vICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvclZhbHVlKCRnZW5lcmljX3ZhbHVlLCAkdmVuZG9yKXsKICAgICAgICAkdmVuZG9yX3ZhbHVlX3NldCA9IFZlbmRvcjo6Z2V0UnVsZVZhbHVlKCR2ZW5kb3IpOwoKICAgICAgICBpZihpc19zdHJpbmcoJGdlbmVyaWNfdmFsdWUpICYmIGlzc2V0KCR2ZW5kb3JfdmFsdWVfc2V0WyR0aGlzLT5wTmFtZV1bJGdlbmVyaWNfdmFsdWVdKSkgewogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuICR2ZW5kb3JfdmFsdWVfc2V0WyR0aGlzLT5wTmFtZV1bJGdlbmVyaWNfdmFsdWVdOwogICAgICAgIH0gZWxzZWlmKGlzX3N0cmluZygkZ2VuZXJpY192YWx1ZSkpIHsgLy8gcGFyc2UgdmFsdWUgYXMgcHJvcGVydHkKICAgICAgICAgICAgCiAgICAgICAgICAgICR2ZW5kb3JfcHJvcGVydHlfc2V0ID0gVmVuZG9yOjpnZXRSdWxlUHJvcGVydHkoJHZlbmRvcik7CiAgICAgICAgICAgIGlmKGlzc2V0KCR2ZW5kb3JfcHJvcGVydHlfc2V0WyRnZW5lcmljX3ZhbHVlXSkpewogICAgICAgICAgICAgICAgcmV0dXJuICR2ZW5kb3JfcHJvcGVydHlfc2V0WyRnZW5lcmljX3ZhbHVlXTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmKCRnZW5lcmljX3ZhbHVlIGluc3RhbmNlb2YgXFNhYmJlcndvcm1cQ1NTXFZhbHVlXFZhbHVlTGlzdCl7CiAgICAgICAgICAgIAogICAgICAgICAgICAkdmVuZG9yX3ZhbHVlID0gY2xvbmUgJGdlbmVyaWNfdmFsdWU7CiAgICAgICAgICAgIAogICAgICAgICAgICAkbGlzdF9jb21wb25lbnRzID0gJHZlbmRvcl92YWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKTsKICAgICAgICAgICAgZm9yZWFjaCgkbGlzdF9jb21wb25lbnRzIGFzICRrZXkgPT4gJGNvbXBvbmVudCl7CiAgICAgICAgICAgICAgICAkdmVuZG9yX2NvbXBvbmVudCA9ICR0aGlzLT5nZXRWZW5kb3JWYWx1ZSgkY29tcG9uZW50LCAkdmVuZG9yKTsKICAgICAgICAgICAgICAgIGlmKCR2ZW5kb3JfY29tcG9uZW50KXsKICAgICAgICAgICAgICAgICAgICAkbGlzdF9jb21wb25lbnRzWyRrZXldID0gJHZlbmRvcl9jb21wb25lbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHZlbmRvcl92YWx1ZS0+c2V0TGlzdENvbXBvbmVudHMoJGxpc3RfY29tcG9uZW50cyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkdmVuZG9yX3ZhbHVlICE9ICRnZW5lcmljX3ZhbHVlKXsKICAgICAgICAgICAgICAgIHJldHVybiAkdmVuZG9yX3ZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wTmFtZTsKICAgIH0KICAgIAp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Parse/Rule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxQYXJzZTsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yOwp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFBhcnNlXFByb3BlcnR5OwoKY2xhc3MgUnVsZSB7CiAgICAvKioKICAgICAqIEB0eXBlIFxTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUKICAgICAqLwogICAgcHJpdmF0ZSAkcnVsZTsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRydWxlKXsKICAgICAgICBpZigkcnVsZSBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUpewogICAgICAgICAgICAkdGhpcy0+cnVsZSA9ICRydWxlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdJbnZhbGlkIGFyZ3VtZW50ISBSZXF1aXJlIGluc3RhbmNlIG9mIFxTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ3JlYXRlIHZlbmRvciBydWxlcyBvZiBnZW5lcmljIHJ1bGUKICAgICAqIEByZXR1cm4gQXJyYXkgVmVuZG9yIHJ1bGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWZW5kb3JSdWxlcygpewogICAgICAgICR2ZW5kb3JfcnVsZXMgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIGZvcmVhY2goVmVuZG9yOjpnZXRWZW5kb3JzKCkgYXMgJHZlbmRvcil7CiAgICAgICAgICAgICRydWxlX3Byb3BlcnR5ID0gbmV3IFByb3BlcnR5KCR0aGlzLT5ydWxlLT5nZXRSdWxlKCkpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gVmVuZG9yIHByb3BlcnR5CiAgICAgICAgICAgICRydWxlX3ZlbmRvcl9wcm9wZXJ0eSA9ICRydWxlX3Byb3BlcnR5LT5nZXRWZW5kb3JQcm9wZXJ0eSgkdmVuZG9yKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCRydWxlX3ZlbmRvcl9wcm9wZXJ0eSl7CiAgICAgICAgICAgICAgICAkdmVuZG9yX3J1bGUgPSBjbG9uZSAkdGhpcy0+cnVsZTsKICAgICAgICAgICAgICAgICR2ZW5kb3JfcnVsZS0+c2V0UnVsZSgoc3RyaW5nKSRydWxlX3ZlbmRvcl9wcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR2ZW5kb3JfdmFsdWUgPSAkcnVsZV92ZW5kb3JfcHJvcGVydHktPmdldFZlbmRvclZhbHVlKCR0aGlzLT5ydWxlLT5nZXRWYWx1ZSgpLCAkdmVuZG9yKTsKICAgICAgICAgICAgICAgIGlmKCR2ZW5kb3JfdmFsdWUpewogICAgICAgICAgICAgICAgICAgICR2ZW5kb3JfcnVsZS0+c2V0VmFsdWUoJHZlbmRvcl92YWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR2ZW5kb3JfcnVsZXNbXSA9ICR2ZW5kb3JfcnVsZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gVmVuZG9yIHZhbHVlCiAgICAgICAgICAgICRydWxlX3ZlbmRvcl92YWx1ZSA9ICRydWxlX3Byb3BlcnR5LT5nZXRWZW5kb3JWYWx1ZSgkdGhpcy0+cnVsZS0+Z2V0VmFsdWUoKSwgJHZlbmRvcik7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkcnVsZV92ZW5kb3JfdmFsdWUpewogICAgICAgICAgICAgICAgJHZlbmRvcl9ydWxlID0gY2xvbmUgJHRoaXMtPnJ1bGU7CiAgICAgICAgICAgICAgICAkdmVuZG9yX3J1bGUtPnNldFZhbHVlKCRydWxlX3ZlbmRvcl92YWx1ZSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR2ZW5kb3JfcnVsZXNbXSA9ICR2ZW5kb3JfcnVsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJHZlbmRvcl9ydWxlczsKICAgIH0KICAgIAogICAgCn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Parse/Selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxQYXJzZTsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yOwoKY2xhc3MgU2VsZWN0b3IgewogICAgLyoqCiAgICAgKiBAdHlwZSBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcU2VsZWN0b3IKICAgICAqLwogICAgcHJpdmF0ZSAkc2VsZWN0b3I7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc2VsZWN0b3IpewogICAgICAgIGlmKCRzZWxlY3RvciBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3Rvcil7CiAgICAgICAgICAgICR0aGlzLT5zZWxlY3RvciA9ICRzZWxlY3RvcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignSW52YWxpZCBhcmd1bWVudCEgUmVxdWlyZSBpbnN0YW5jZSBvZiBcU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcU2VsZWN0b3InKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ3JlYXRlIGxpc3Qgb2YgdmVuZG9yIHByZWZpeGVkIHNlbGVjdG9ycwogICAgICogQHJldHVybiBBcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmVuZG9yc1NlbGVjdG9yKCl7CiAgICAgICAgJHZlbmRvcl9zZWxlY3RvcnMgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIGZvcmVhY2goVmVuZG9yOjpnZXRWZW5kb3JzKCkgYXMgJHZlbmRvcil7CiAgICAgICAgICAgICR2ZW5kb3Jfc2VsZWN0b3IgPSAkdGhpcy0+Z2V0VmVuZG9yU2VsZWN0b3IoJHZlbmRvcik7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZigkdmVuZG9yX3NlbGVjdG9yIGluc3RhbmNlb2YgXFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yKXsKICAgICAgICAgICAgICAgICR2ZW5kb3Jfc2VsZWN0b3JzW10gPSAkdmVuZG9yX3NlbGVjdG9yOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkdmVuZG9yX3NlbGVjdG9yczsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgdmVuZG9yIHNlbGVjdG9yIG9mIGdlbmVyaWMgc2VsZWN0b3IKICAgICAqIEByZXR1cm4gTWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZlbmRvclNlbGVjdG9yKCR2ZW5kb3IpewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0VmVuZG9yUHNldWRvKCR2ZW5kb3IpOwogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmVuZG9yUHNldWRvKCR2ZW5kb3IpewogICAgICAgICR2ZW5kb3JfcHNldWRvcyA9IFZlbmRvcjo6Z2V0UHNldWRvKCR2ZW5kb3IpOwogICAgICAgIAogICAgICAgICRtX2dlbmVyaWNfc2VsZWN0b3IgPSAkdGhpcy0+c2VsZWN0b3ItPmdldFNlbGVjdG9yKCk7CiAgICAgICAgCiAgICAgICAgLy8gUHNldWRvCiAgICAgICAgZm9yZWFjaCgkdmVuZG9yX3BzZXVkb3MgYXMgJGdlbmVyaWNfcHNldWRvID0+ICR2ZW5kb3JfcHNldWRvKXsKICAgICAgICAgICAgaWYoc3RycG9zKCRtX2dlbmVyaWNfc2VsZWN0b3IsICRnZW5lcmljX3BzZXVkbykgIT09IGZhbHNlKXsKICAgICAgICAgICAgICAgICRtX2dlbmVyaWNfc2VsZWN0b3IgPSBzdHJfcmVwbGFjZSgkZ2VuZXJpY19wc2V1ZG8sICR2ZW5kb3JfcHNldWRvLCAkbV9nZW5lcmljX3NlbGVjdG9yKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZigkbV9nZW5lcmljX3NlbGVjdG9yICE9PSAkdGhpcy0+c2VsZWN0b3ItPmdldFNlbGVjdG9yKCkpewogICAgICAgICAgICAkbmV3X3NlbGVjdG9yID0gY2xvbmUgJHRoaXMtPnNlbGVjdG9yOwogICAgICAgICAgICAkbmV3X3NlbGVjdG9yLT5zZXRTZWxlY3RvcigkbV9nZW5lcmljX3NlbGVjdG9yKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiAkbmV3X3NlbGVjdG9yOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlcjsKCmNsYXNzIFZlbmRvciB7CiAgICBjb25zdCBWZW5kb3JzID0gYXJyYXkoJ0lFJywgJ01vemlsbGEnLCAnV2Via2l0Jyk7CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0UnVsZVByb3BlcnR5KCR2ZW5kb3IpewogICAgICAgICR2ZW5kb3JfY2xhc3MgPSAnUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxcJyAuICR2ZW5kb3I7CiAgICAgICAgcmV0dXJuICR2ZW5kb3JfY2xhc3M6OmdldFJ1bGVQcm9wZXJ0eSgpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFJ1bGVWYWx1ZSgkdmVuZG9yKXsKICAgICAgICAkdmVuZG9yX2NsYXNzID0gJ1BhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3JcXCcgLiAkdmVuZG9yOwogICAgICAgIHJldHVybiAkdmVuZG9yX2NsYXNzOjpnZXRSdWxlVmFsdWUoKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQc2V1ZG8oJHZlbmRvcil7CiAgICAgICAgJHZlbmRvcl9jbGFzcyA9ICdQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcVmVuZG9yXFwnIC4gJHZlbmRvcjsKICAgICAgICByZXR1cm4gJHZlbmRvcl9jbGFzczo6Z2V0UHNldWRvKCk7CiAgICB9CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QVRSdWxlKCR2ZW5kb3IpewogICAgICAgICR2ZW5kb3JfY2xhc3MgPSAnUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxcJyAuICR2ZW5kb3I7CiAgICAgICAgcmV0dXJuICR2ZW5kb3JfY2xhc3M6OmdldEFUUnVsZSgpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFZlbmRvcnMoKXsKICAgICAgICByZXR1cm4gc2VsZjo6VmVuZG9yczsKICAgIH0KfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/IE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7Cgp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxWZW5kb3I7CgpjbGFzcyBJRSBleHRlbmRzIFZlbmRvciB7CiAgICBwcm90ZWN0ZWQgc3RhdGljICRSVUxFX1BST1BFUlRZID0gYXJyYXkoCiAgICAgICAgJ2ZsZXgnID0+ICctbXMtZmxleCcsCiAgICAgICAgJ2ZsZXgtd3JhcCcgPT4gJy1tcy1mbGV4LXdyYXAnLAogICAgICAgICdmbGV4LWJhc2lzJyA9PiAnLW1zLWZsZXgtcHJlZmVycmVkLXNpemUnLAogICAgICAgICdmbGV4LWdyb3cnID0+ICctbXMtZmxleC1wb3NpdGl2ZScsCiAgICAgICAgJ2ZsZXgtZmxvdycgPT4gJy1tcy1mbGV4LWZsb3cnLAogICAgICAgICdmbGV4LWRpcmVjdGlvbicgPT4gJy1tcy1mbGV4LWRpcmVjdGlvbicsCiAgICAgICAgJ2ZsZXgtc2hyaW5rJyA9PiAnLW1zLWZsZXgtbmVnYXRpdmUnLAogICAgICAgICdmbG93LWZyb20nID0+ICctbXMtZmxvdy1mcm9tJywKICAgICAgICAnZmxvdy1pbnRvJyA9PiAnLW1zLWZsb3ctaW50bycsCiAgICAgICAgJ2FsaWduLWl0ZW1zJyA9PiAnLW1zLWZsZXgtYWxpZ24nLAogICAgICAgICdhbGlnbi1jb250ZW50JyA9PiAnLW1zLWZsZXgtbGluZS1wYWNrJywKICAgICAgICAnYWxpZ24tc2VsZicgPT4gJy1tcy1mbGV4LWl0ZW0tYWxpZ24nLAogICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnID0+ICctbXMtZmxleC1wYWNrJywKICAgICAgICAnb3JkZXInID0+ICctbXMtZmxleC1vcmRlcicsCiAgICAgICAgJ3VzZXItc2VsZWN0JyA9PiAnLW1zLXVzZXItc2VsZWN0JywKICAgICAgICAnaHlwaGVucycgPT4gJy1tcy1oeXBoZW5zJywKICAgICAgICAnd29yZC1icmVhaycgPT4gJy1tcy13b3JkLWJyZWFrJywKICAgICAgICAndHJhbnNmb3JtJyAgPT4gJy1tcy10cmFuc2Zvcm0nLAogICAgICAgICd0cmFuc2Zvcm0tb3JpZ2luJyAgPT4gJy1tcy10cmFuc2Zvcm0tb3JpZ2luJwogICAgKTsKICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyAkUlVMRV9WQUxVRSA9IGFycmF5KAogICAgICAgICdkaXNwbGF5JyA9PiBhcnJheSgKICAgICAgICAgICAgJ2ZsZXgnID0+ICctbXMtZmxleGJveCcsCiAgICAgICAgICAgICdpbmxpbmUtZmxleCcgPT4gJy1tcy1pbmxpbmUtZmxleGJveCcsCiAgICAgICAgICAgICdncmlkJyA9PiAnLW1zLWdyaWQnLAogICAgICAgICksCiAgICAgICAgJy1tcy1mbGV4LWFsaWduJyA9PiBhcnJheSgnZmxleC1zdGFydCcgPT4gJ3N0YXJ0JywgJ2ZsZXgtZW5kJyA9PiAnZW5kJyksCiAgICAgICAgJy1tcy1mbGV4LWxpbmUtcGFjaycgPT4gYXJyYXkoJ2ZsZXgtc3RhcnQnID0+ICdzdGFydCcsICdmbGV4LWVuZCcgPT4gJ2VuZCcsICdzcGFjZS1iZXR3ZWVuJyA9PiAnanVzdGlmeScsICdzcGFjZS1hcm91bmQnID0+ICdkaXN0cmlidXRlJyksCiAgICAgICAgJy1tcy1mbGV4LWl0ZW0tYWxpZ24nID0+IGFycmF5KCdmbGV4LXN0YXJ0JyA9PiAnc3RhcnQnLCAnZmxleC1lbmQnID0+ICdlbmQnLCAnc3BhY2UtYmV0d2VlbicgPT4gJ2p1c3RpZnknLCAnc3BhY2UtYXJvdW5kJyA9PiAnZGlzdHJpYnV0ZScpLAogICAgICAgICctbXMtZmxleC1wYWNrJyA9PiBhcnJheSgnc3BhY2UtYmV0d2VlbicgPT4gJ2p1c3RpZnknLCAnZmxleC1zdGFydCcgPT4gJ3N0YXJ0JywgJ2ZsZXgtZW5kJyA9PiAnZW5kJywgJ3NwYWNlLWFyb3VuZCcgPT4gJ2Rpc3RyaWJ1dGUnKSwKICAgICAgICAKICAgICk7CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgJFBTRVVETyA9IGFycmF5KAogICAgICAgICc6OnBsYWNlaG9sZGVyJyA9PiAnOjotbXMtaW5wdXQtcGxhY2Vob2xkZXInLAogICAgKTsKfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/Mozilla.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7Cgp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxWZW5kb3I7CgpjbGFzcyBNb3ppbGxhIGV4dGVuZHMgVmVuZG9yIHsKICAgIHByb3RlY3RlZCBzdGF0aWMgJFJVTEVfUFJPUEVSVFkgPSBhcnJheSgKICAgICAgICAnY29sdW1uLWNvdW50JyA9PiAnLW1vei1jb2x1bW4tY291bnQnLAogICAgICAgICdjb2x1bW4tZ2FwJyA9PiAnLW1vei1jb2x1bW4tZ2FwJywKICAgICAgICAnY29sdW1uLXJ1bGUnID0+ICctbW96LWNvbHVtbi1ydWxlJywKICAgICAgICAndXNlci1zZWxlY3QnID0+ICctbW96LXVzZXItc2VsZWN0JywKICAgICAgICAnYXBwZWFyYW5jZScgPT4gJy1tb3otYXBwZWFyYW5jZScsCiAgICAgICAgJ2ZvbnQtZmVhdHVyZS1zZXR0aW5ncycgPT4gJy1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzJywKICAgICAgICAnaHlwaGVucycgPT4gJy1tb3otaHlwaGVucycsCiAgICAgICAgCiAgICApOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRQU0VVRE8gPSBhcnJheSgKICAgICAgICAnOjpwbGFjZWhvbGRlcicgPT4gJzo6LW1vei1wbGFjZWhvbGRlcicsCiAgICApOwp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/Vendor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7CgphYnN0cmFjdCBjbGFzcyBWZW5kb3IgewogICAgcHJvdGVjdGVkIHN0YXRpYyAkUlVMRV9QUk9QRVJUWSA9IGFycmF5KCk7CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgJFJVTEVfVkFMVUUgPSBhcnJheSgpOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRQU0VVRE8gPSBhcnJheSgpOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRBVF9SVUxFID0gYXJyYXkoKTsKICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSdWxlUHJvcGVydHkoKXsKICAgICAgICByZXR1cm4gc3RhdGljOjokUlVMRV9QUk9QRVJUWTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSdWxlVmFsdWUoKXsKICAgICAgICByZXR1cm4gc3RhdGljOjokUlVMRV9WQUxVRTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQc2V1ZG8oKXsKICAgICAgICByZXR1cm4gc3RhdGljOjokUFNFVURPOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEFUUnVsZSgpewogICAgICAgIHJldHVybiBzdGF0aWM6OiRBVF9SVUxFOwogICAgfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/src/Vendor/Webkit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBhZGFsaXlhamF5XFBIUEF1dG9wcmVmaXhlclxWZW5kb3I7Cgp1c2UgUGFkYWxpeWFqYXlcUEhQQXV0b3ByZWZpeGVyXFZlbmRvclxWZW5kb3I7CgpjbGFzcyBXZWJraXQgZXh0ZW5kcyBWZW5kb3IgewogICAgcHJvdGVjdGVkIHN0YXRpYyAkUlVMRV9QUk9QRVJUWSA9IGFycmF5KAogICAgICAgICdib3gtcmVmbGVjdCcgPT4gJy13ZWJraXQtYm94LXJlZmxlY3QnLAogICAgICAgICdjb2x1bW4tY291bnQnID0+ICctd2Via2l0LWNvbHVtbi1jb3VudCcsCiAgICAgICAgJ2NvbHVtbi1nYXAnID0+ICctd2Via2l0LWNvbHVtbi1nYXAnLAogICAgICAgICdjb2x1bW4tcnVsZScgPT4gJy13ZWJraXQtY29sdW1uLXJ1bGUnLAogICAgICAgICdjbGlwLXBhdGgnID0+ICctd2Via2l0LWNsaXAtcGF0aCcsCiAgICAgICAgJ3VzZXItc2VsZWN0JyA9PiAnLXdlYmtpdC11c2VyLXNlbGVjdCcsCiAgICAgICAgJ2FwcGVhcmFuY2UnID0+ICctd2Via2l0LWFwcGVhcmFuY2UnLAogICAgICAgICdhbmltYXRpb24nID0+ICctd2Via2l0LWFuaW1hdGlvbicsCiAgICAgICAgJ3RyYW5zaXRpb24nID0+ICctd2Via2l0LXRyYW5zaXRpb24nLAogICAgICAgICd0cmFuc2Zvcm0nID0+ICctd2Via2l0LXRyYW5zZm9ybScsCiAgICAgICAgJ3RyYW5zZm9ybS1vcmlnaW4nID0+ICctd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4nLAogICAgICAgICdiYWNrZmFjZS12aXNpYmlsaXR5JyA9PiAnLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5JywKICAgICAgICAncGVyc3BlY3RpdmUnID0+ICctd2Via2l0LXBlcnNwZWN0aXZlJywKICAgICAgICAnYmFja2dyb3VuZC1jbGlwJyA9PiAnLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXAnLAogICAgICAgICdmaWx0ZXInID0+ICctd2Via2l0LWZpbHRlcicsCiAgICAgICAgJ2ZvbnQtZmVhdHVyZS1zZXR0aW5ncycgPT4gJy13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzJywKICAgICAgICAnZmxvdy1mcm9tJyA9PiAnLXdlYmtpdC1mbG93LWZyb20nLAogICAgICAgICdmbG93LWludG8nID0+ICctd2Via2l0LWZsb3ctaW50bycsCiAgICAgICAgJ2h5cGhlbnMnID0+ICctd2Via2l0LWh5cGhlbnMnLAogICAgICAgICdtYXNrLWltYWdlJyA9PiAnLXdlYmtpdC1tYXNrLWltYWdlJywKICAgICk7CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgJFJVTEVfVkFMVUUgPSBhcnJheSgKICAgICAgICAnZGlzcGxheScgPT4gYXJyYXkoCiAgICAgICAgICAgICdmbGV4JyA9PiAnLXdlYmtpdC1mbGV4JywKICAgICAgICAgICAgJ2lubGluZS1mbGV4JyA9PiAnLXdlYmtpdC1pbmxpbmUtZmxleCcsCiAgICAgICAgKSwKICAgICAgICAncG9zaXRpb24nID0+IGFycmF5KCdzdGlja3knID0+ICctd2Via2l0LXN0aWNreScpCiAgICApOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRQU0VVRE8gPSBhcnJheSgKICAgICAgICAnOjpwbGFjZWhvbGRlcicgPT4gJzo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcicsCiAgICApOwogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljICRBVF9SVUxFID0gYXJyYXkoJ2tleWZyYW1lcycgPT4gJy13ZWJraXQta2V5ZnJhbWVzJyk7Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiaHAvdGVzdCIsCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlciI6ICJeMS4wIgogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/nbproject/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/nbproject/project.properties</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aW5jbHVkZS5wYXRoPSR7cGhwLmdsb2JhbC5pbmNsdWRlLnBhdGh9DQpwaHAudmVyc2lvbj1QSFBfNTYNCnNvdXJjZS5lbmNvZGluZz1VVEYtOA0Kc3JjLmRpcj0uDQp0YWdzLmFzcD1mYWxzZQ0KdGFncy5zaG9ydD1mYWxzZQ0Kd2ViLnJvb3Q9Lg0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/nbproject/project.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxwcm9qZWN0IHhtbG5zPSJodHRwOi8vd3d3Lm5ldGJlYW5zLm9yZy9ucy9wcm9qZWN0LzEiPg0KICAgIDx0eXBlPm9yZy5uZXRiZWFucy5tb2R1bGVzLnBocC5wcm9qZWN0PC90eXBlPg0KICAgIDxjb25maWd1cmF0aW9uPg0KICAgICAgICA8ZGF0YSB4bWxucz0iaHR0cDovL3d3dy5uZXRiZWFucy5vcmcvbnMvcGhwLXByb2plY3QvMSI+DQogICAgICAgICAgICA8bmFtZT50ZXN0PC9uYW1lPg0KICAgICAgICA8L2RhdGE+DQogICAgPC9jb25maWd1cmF0aW9uPg0KPC9wcm9qZWN0Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/orignal-bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2NC4xLjMgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pCiAqIENvcHlyaWdodCAyMDExLTIwMTggVGhlIEJvb3RzdHJhcCBBdXRob3JzCiAqIENvcHlyaWdodCAyMDExLTIwMTggVHdpdHRlciwgSW5jLgogKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKQogKi8KOnJvb3QgewogIC0tYmx1ZTogIzAwN2JmZjsKICAtLWluZGlnbzogIzY2MTBmMjsKICAtLXB1cnBsZTogIzZmNDJjMTsKICAtLXBpbms6ICNlODNlOGM7CiAgLS1yZWQ6ICNkYzM1NDU7CiAgLS1vcmFuZ2U6ICNmZDdlMTQ7CiAgLS15ZWxsb3c6ICNmZmMxMDc7CiAgLS1ncmVlbjogIzI4YTc0NTsKICAtLXRlYWw6ICMyMGM5OTc7CiAgLS1jeWFuOiAjMTdhMmI4OwogIC0td2hpdGU6ICNmZmY7CiAgLS1ncmF5OiAjNmM3NTdkOwogIC0tZ3JheS1kYXJrOiAjMzQzYTQwOwogIC0tcHJpbWFyeTogIzAwN2JmZjsKICAtLXNlY29uZGFyeTogIzZjNzU3ZDsKICAtLXN1Y2Nlc3M6ICMyOGE3NDU7CiAgLS1pbmZvOiAjMTdhMmI4OwogIC0td2FybmluZzogI2ZmYzEwNzsKICAtLWRhbmdlcjogI2RjMzU0NTsKICAtLWxpZ2h0OiAjZjhmOWZhOwogIC0tZGFyazogIzM0M2E0MDsKICAtLWJyZWFrcG9pbnQteHM6IDA7CiAgLS1icmVha3BvaW50LXNtOiA1NzZweDsKICAtLWJyZWFrcG9pbnQtbWQ6IDc2OHB4OwogIC0tYnJlYWtwb2ludC1sZzogOTkycHg7CiAgLS1icmVha3BvaW50LXhsOiAxMjAwcHg7CiAgLS1mb250LWZhbWlseS1zYW5zLXNlcmlmOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7CiAgLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkxpYmVyYXRpb24gTW9ubyIsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsKfQoKKiwKKjo6YmVmb3JlLAoqOjphZnRlciB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKaHRtbCB7CiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CiAgbGluZS1oZWlnaHQ6IDEuMTU7CiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogc2Nyb2xsYmFyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQoKQC1tcy12aWV3cG9ydCB7CiAgd2lkdGg6IGRldmljZS13aWR0aDsKfQoKYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHsKICBkaXNwbGF5OiBibG9jazsKfQoKYm9keSB7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7CiAgZm9udC1zaXplOiAxcmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzIxMjUyOTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KClt0YWJpbmRleD0iLTEiXTpmb2N1cyB7CiAgb3V0bGluZTogMCAhaW1wb3J0YW50Owp9CgpociB7CiAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgaGVpZ2h0OiAwOwogIG92ZXJmbG93OiB2aXNpYmxlOwp9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKfQoKcCB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9CgphYmJyW3RpdGxlXSwKYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQgOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsKICBjdXJzb3I6IGhlbHA7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoKYWRkcmVzcyB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCm9sLAp1bCwKZGwgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKfQoKb2wgb2wsCnVsIHVsLApvbCB1bCwKdWwgb2wgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KCmR0IHsKICBmb250LXdlaWdodDogNzAwOwp9CgpkZCB7CiAgbWFyZ2luLWJvdHRvbTogLjVyZW07CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCmJsb2NrcXVvdGUgewogIG1hcmdpbjogMCAwIDFyZW07Cn0KCmRmbiB7CiAgZm9udC1zdHlsZTogaXRhbGljOwp9CgpiLApzdHJvbmcgewogIGZvbnQtd2VpZ2h0OiBib2xkZXI7Cn0KCnNtYWxsIHsKICBmb250LXNpemU6IDgwJTsKfQoKc3ViLApzdXAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmb250LXNpemU6IDc1JTsKICBsaW5lLWhlaWdodDogMDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KCnN1YiB7CiAgYm90dG9tOiAtLjI1ZW07Cn0KCnN1cCB7CiAgdG9wOiAtLjVlbTsKfQoKYSB7CiAgY29sb3I6ICMwMDdiZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7Cn0KCmE6aG92ZXIgewogIGNvbG9yOiAjMDA1NmIzOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKSB7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpob3ZlciwgYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMgewogIGNvbG9yOiBpbmhlcml0OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6Zm9jdXMgewogIG91dGxpbmU6IDA7Cn0KCnByZSwKY29kZSwKa2JkLApzYW1wIHsKICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMWVtOwp9CgpwcmUgewogIG1hcmdpbi10b3A6IDA7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBvdmVyZmxvdzogYXV0bzsKICAtbXMtb3ZlcmZsb3ctc3R5bGU6IHNjcm9sbGJhcjsKfQoKZmlndXJlIHsKICBtYXJnaW46IDAgMCAxcmVtOwp9CgppbWcgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgYm9yZGVyLXN0eWxlOiBub25lOwp9CgpzdmcgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKdGFibGUgewogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Cn0KCmNhcHRpb24gewogIHBhZGRpbmctdG9wOiAwLjc1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIHRleHQtYWxpZ246IGxlZnQ7CiAgY2FwdGlvbi1zaWRlOiBib3R0b207Cn0KCnRoIHsKICB0ZXh0LWFsaWduOiBpbmhlcml0Owp9CgpsYWJlbCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKfQoKYnV0dG9uIHsKICBib3JkZXItcmFkaXVzOiAwOwp9CgpidXR0b246Zm9jdXMgewogIG91dGxpbmU6IDFweCBkb3R0ZWQ7CiAgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yOwp9CgppbnB1dCwKYnV0dG9uLApzZWxlY3QsCm9wdGdyb3VwLAp0ZXh0YXJlYSB7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKfQoKYnV0dG9uLAppbnB1dCB7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmJ1dHRvbiwKc2VsZWN0IHsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQoKYnV0dG9uLApodG1sIFt0eXBlPSJidXR0b24iXSwKW3R5cGU9InJlc2V0Il0sClt0eXBlPSJzdWJtaXQiXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247Cn0KCmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwKW3R5cGU9ImJ1dHRvbiJdOjotbW96LWZvY3VzLWlubmVyLApbdHlwZT0icmVzZXQiXTo6LW1vei1mb2N1cy1pbm5lciwKW3R5cGU9InN1Ym1pdCJdOjotbW96LWZvY3VzLWlubmVyIHsKICBwYWRkaW5nOiAwOwogIGJvcmRlci1zdHlsZTogbm9uZTsKfQoKaW5wdXRbdHlwZT0icmFkaW8iXSwKaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBwYWRkaW5nOiAwOwp9CgppbnB1dFt0eXBlPSJkYXRlIl0sCmlucHV0W3R5cGU9InRpbWUiXSwKaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSwKaW5wdXRbdHlwZT0ibW9udGgiXSB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94Owp9Cgp0ZXh0YXJlYSB7CiAgb3ZlcmZsb3c6IGF1dG87CiAgcmVzaXplOiB2ZXJ0aWNhbDsKfQoKZmllbGRzZXQgewogIG1pbi13aWR0aDogMDsKICBwYWRkaW5nOiAwOwogIG1hcmdpbjogMDsKICBib3JkZXI6IDA7Cn0KCmxlZ2VuZCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgbWF4LXdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luLWJvdHRvbTogLjVyZW07CiAgZm9udC1zaXplOiAxLjVyZW07CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgY29sb3I6IGluaGVyaXQ7CiAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKfQoKcHJvZ3Jlc3MgewogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKW3R5cGU9Im51bWJlciJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLApbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogIGhlaWdodDogYXV0bzsKfQoKW3R5cGU9InNlYXJjaCJdIHsKICBvdXRsaW5lLW9mZnNldDogLTJweDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KClt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwKW3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewogIGZvbnQ6IGluaGVyaXQ7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247Cn0KCm91dHB1dCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgpzdW1tYXJ5IHsKICBkaXNwbGF5OiBsaXN0LWl0ZW07CiAgY3Vyc29yOiBwb2ludGVyOwp9Cgp0ZW1wbGF0ZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKW2hpZGRlbl0gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwKLmgxLCAuaDIsIC5oMywgLmg0LCAuaDUsIC5oNiB7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKICBjb2xvcjogaW5oZXJpdDsKfQoKaDEsIC5oMSB7CiAgZm9udC1zaXplOiAyLjVyZW07Cn0KCmgyLCAuaDIgewogIGZvbnQtc2l6ZTogMnJlbTsKfQoKaDMsIC5oMyB7CiAgZm9udC1zaXplOiAxLjc1cmVtOwp9CgpoNCwgLmg0IHsKICBmb250LXNpemU6IDEuNXJlbTsKfQoKaDUsIC5oNSB7CiAgZm9udC1zaXplOiAxLjI1cmVtOwp9CgpoNiwgLmg2IHsKICBmb250LXNpemU6IDFyZW07Cn0KCi5sZWFkIHsKICBmb250LXNpemU6IDEuMjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKfQoKLmRpc3BsYXktMSB7CiAgZm9udC1zaXplOiA2cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQoKLmRpc3BsYXktMiB7CiAgZm9udC1zaXplOiA1LjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBsaW5lLWhlaWdodDogMS4yOwp9CgouZGlzcGxheS0zIHsKICBmb250LXNpemU6IDQuNXJlbTsKICBmb250LXdlaWdodDogMzAwOwogIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KCi5kaXNwbGF5LTQgewogIGZvbnQtc2l6ZTogMy41cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQoKaHIgewogIG1hcmdpbi10b3A6IDFyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTsKfQoKc21hbGwsCi5zbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7CiAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKbWFyaywKLm1hcmsgewogIHBhZGRpbmc6IDAuMmVtOwogIGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7Cn0KCi5saXN0LXVuc3R5bGVkIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lLWl0ZW0gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07Cn0KCi5pbml0aWFsaXNtIHsKICBmb250LXNpemU6IDkwJTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CgouYmxvY2txdW90ZSB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07Cn0KCi5ibG9ja3F1b3RlLWZvb3RlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1zaXplOiA4MCU7CiAgY29sb3I6ICM2Yzc1N2Q7Cn0KCi5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHsKICBjb250ZW50OiAiXDIwMTQgXDAwQTAiOwp9CgouaW1nLWZsdWlkIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9CgouaW1nLXRodW1ibmFpbCB7CiAgcGFkZGluZzogMC4yNXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9CgouZmlndXJlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5maWd1cmUtaW1nIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgbGluZS1oZWlnaHQ6IDE7Cn0KCi5maWd1cmUtY2FwdGlvbiB7CiAgZm9udC1zaXplOiA5MCU7CiAgY29sb3I6ICM2Yzc1N2Q7Cn0KCmNvZGUgewogIGZvbnQtc2l6ZTogODcuNSU7CiAgY29sb3I6ICNlODNlOGM7CiAgd29yZC1icmVhazogYnJlYWstd29yZDsKfQoKYSA+IGNvZGUgewogIGNvbG9yOiBpbmhlcml0Owp9CgprYmQgewogIHBhZGRpbmc6IDAuMnJlbSAwLjRyZW07CiAgZm9udC1zaXplOiA4Ny41JTsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQoKa2JkIGtiZCB7CiAgcGFkZGluZzogMDsKICBmb250LXNpemU6IDEwMCU7CiAgZm9udC13ZWlnaHQ6IDcwMDsKfQoKcHJlIHsKICBkaXNwbGF5OiBibG9jazsKICBmb250LXNpemU6IDg3LjUlOwogIGNvbG9yOiAjMjEyNTI5Owp9CgpwcmUgY29kZSB7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGNvbG9yOiBpbmhlcml0OwogIHdvcmQtYnJlYWs6IG5vcm1hbDsKfQoKLnByZS1zY3JvbGxhYmxlIHsKICBtYXgtaGVpZ2h0OiAzNDBweDsKICBvdmVyZmxvdy15OiBzY3JvbGw7Cn0KCi5jb250YWluZXIgewogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctcmlnaHQ6IDE1cHg7CiAgcGFkZGluZy1sZWZ0OiAxNXB4OwogIG1hcmdpbi1yaWdodDogYXV0bzsKICBtYXJnaW4tbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDU0MHB4OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDcyMHB4OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDk2MHB4OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiAxMTQwcHg7CiAgfQp9CgouY29udGFpbmVyLWZsdWlkIHsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5yb3cgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICBtYXJnaW4tbGVmdDogLTE1cHg7Cn0KCi5uby1ndXR0ZXJzIHsKICBtYXJnaW4tcmlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5uby1ndXR0ZXJzID4gLmNvbCwKLm5vLWd1dHRlcnMgPiBbY2xhc3MqPSJjb2wtIl0gewogIHBhZGRpbmctcmlnaHQ6IDA7CiAgcGFkZGluZy1sZWZ0OiAwOwp9CgouY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLAouY29sLWF1dG8sIC5jb2wtc20tMSwgLmNvbC1zbS0yLCAuY29sLXNtLTMsIC5jb2wtc20tNCwgLmNvbC1zbS01LCAuY29sLXNtLTYsIC5jb2wtc20tNywgLmNvbC1zbS04LCAuY29sLXNtLTksIC5jb2wtc20tMTAsIC5jb2wtc20tMTEsIC5jb2wtc20tMTIsIC5jb2wtc20sCi5jb2wtc20tYXV0bywgLmNvbC1tZC0xLCAuY29sLW1kLTIsIC5jb2wtbWQtMywgLmNvbC1tZC00LCAuY29sLW1kLTUsIC5jb2wtbWQtNiwgLmNvbC1tZC03LCAuY29sLW1kLTgsIC5jb2wtbWQtOSwgLmNvbC1tZC0xMCwgLmNvbC1tZC0xMSwgLmNvbC1tZC0xMiwgLmNvbC1tZCwKLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLAouY29sLWxnLWF1dG8sIC5jb2wteGwtMSwgLmNvbC14bC0yLCAuY29sLXhsLTMsIC5jb2wteGwtNCwgLmNvbC14bC01LCAuY29sLXhsLTYsIC5jb2wteGwtNywgLmNvbC14bC04LCAuY29sLXhsLTksIC5jb2wteGwtMTAsIC5jb2wteGwtMTEsIC5jb2wteGwtMTIsIC5jb2wteGwsCi5jb2wteGwtYXV0byB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKfQoKLmNvbCB7CiAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7CiAgZmxleC1iYXNpczogMDsKICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICBmbGV4LWdyb3c6IDE7CiAgbWF4LXdpZHRoOiAxMDAlOwp9CgouY29sLWF1dG8gewogIC1tcy1mbGV4OiAwIDAgYXV0bzsKICBmbGV4OiAwIDAgYXV0bzsKICB3aWR0aDogYXV0bzsKICBtYXgtd2lkdGg6IG5vbmU7Cn0KCi5jb2wtMSB7CiAgLW1zLWZsZXg6IDAgMCA4LjMzMzMzMyU7CiAgZmxleDogMCAwIDguMzMzMzMzJTsKICBtYXgtd2lkdGg6IDguMzMzMzMzJTsKfQoKLmNvbC0yIHsKICAtbXMtZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgbWF4LXdpZHRoOiAxNi42NjY2NjclOwp9CgouY29sLTMgewogIC1tcy1mbGV4OiAwIDAgMjUlOwogIGZsZXg6IDAgMCAyNSU7CiAgbWF4LXdpZHRoOiAyNSU7Cn0KCi5jb2wtNCB7CiAgLW1zLWZsZXg6IDAgMCAzMy4zMzMzMzMlOwogIGZsZXg6IDAgMCAzMy4zMzMzMzMlOwogIG1heC13aWR0aDogMzMuMzMzMzMzJTsKfQoKLmNvbC01IHsKICAtbXMtZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgbWF4LXdpZHRoOiA0MS42NjY2NjclOwp9CgouY29sLTYgewogIC1tcy1mbGV4OiAwIDAgNTAlOwogIGZsZXg6IDAgMCA1MCU7CiAgbWF4LXdpZHRoOiA1MCU7Cn0KCi5jb2wtNyB7CiAgLW1zLWZsZXg6IDAgMCA1OC4zMzMzMzMlOwogIGZsZXg6IDAgMCA1OC4zMzMzMzMlOwogIG1heC13aWR0aDogNTguMzMzMzMzJTsKfQoKLmNvbC04IHsKICAtbXMtZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgbWF4LXdpZHRoOiA2Ni42NjY2NjclOwp9CgouY29sLTkgewogIC1tcy1mbGV4OiAwIDAgNzUlOwogIGZsZXg6IDAgMCA3NSU7CiAgbWF4LXdpZHRoOiA3NSU7Cn0KCi5jb2wtMTAgewogIC1tcy1mbGV4OiAwIDAgODMuMzMzMzMzJTsKICBmbGV4OiAwIDAgODMuMzMzMzMzJTsKICBtYXgtd2lkdGg6IDgzLjMzMzMzMyU7Cn0KCi5jb2wtMTEgewogIC1tcy1mbGV4OiAwIDAgOTEuNjY2NjY3JTsKICBmbGV4OiAwIDAgOTEuNjY2NjY3JTsKICBtYXgtd2lkdGg6IDkxLjY2NjY2NyU7Cn0KCi5jb2wtMTIgewogIC1tcy1mbGV4OiAwIDAgMTAwJTsKICBmbGV4OiAwIDAgMTAwJTsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KCi5vcmRlci1maXJzdCB7CiAgLW1zLWZsZXgtb3JkZXI6IC0xOwogIG9yZGVyOiAtMTsKfQoKLm9yZGVyLWxhc3QgewogIC1tcy1mbGV4LW9yZGVyOiAxMzsKICBvcmRlcjogMTM7Cn0KCi5vcmRlci0wIHsKICAtbXMtZmxleC1vcmRlcjogMDsKICBvcmRlcjogMDsKfQoKLm9yZGVyLTEgewogIC1tcy1mbGV4LW9yZGVyOiAxOwogIG9yZGVyOiAxOwp9Cgoub3JkZXItMiB7CiAgLW1zLWZsZXgtb3JkZXI6IDI7CiAgb3JkZXI6IDI7Cn0KCi5vcmRlci0zIHsKICAtbXMtZmxleC1vcmRlcjogMzsKICBvcmRlcjogMzsKfQoKLm9yZGVyLTQgewogIC1tcy1mbGV4LW9yZGVyOiA0OwogIG9yZGVyOiA0Owp9Cgoub3JkZXItNSB7CiAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgb3JkZXI6IDU7Cn0KCi5vcmRlci02IHsKICAtbXMtZmxleC1vcmRlcjogNjsKICBvcmRlcjogNjsKfQoKLm9yZGVyLTcgewogIC1tcy1mbGV4LW9yZGVyOiA3OwogIG9yZGVyOiA3Owp9Cgoub3JkZXItOCB7CiAgLW1zLWZsZXgtb3JkZXI6IDg7CiAgb3JkZXI6IDg7Cn0KCi5vcmRlci05IHsKICAtbXMtZmxleC1vcmRlcjogOTsKICBvcmRlcjogOTsKfQoKLm9yZGVyLTEwIHsKICAtbXMtZmxleC1vcmRlcjogMTA7CiAgb3JkZXI6IDEwOwp9Cgoub3JkZXItMTEgewogIC1tcy1mbGV4LW9yZGVyOiAxMTsKICBvcmRlcjogMTE7Cn0KCi5vcmRlci0xMiB7CiAgLW1zLWZsZXgtb3JkZXI6IDEyOwogIG9yZGVyOiAxMjsKfQoKLm9mZnNldC0xIHsKICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlOwp9Cgoub2Zmc2V0LTIgewogIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjclOwp9Cgoub2Zmc2V0LTMgewogIG1hcmdpbi1sZWZ0OiAyNSU7Cn0KCi5vZmZzZXQtNCB7CiAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7Cn0KCi5vZmZzZXQtNSB7CiAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NyU7Cn0KCi5vZmZzZXQtNiB7CiAgbWFyZ2luLWxlZnQ6IDUwJTsKfQoKLm9mZnNldC03IHsKICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTsKfQoKLm9mZnNldC04IHsKICBtYXJnaW4tbGVmdDogNjYuNjY2NjY3JTsKfQoKLm9mZnNldC05IHsKICBtYXJnaW4tbGVmdDogNzUlOwp9Cgoub2Zmc2V0LTEwIHsKICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTsKfQoKLm9mZnNldC0xMSB7CiAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NyU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jb2wtc20gewogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7CiAgICBmbGV4LWJhc2lzOiAwOwogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICBmbGV4LWdyb3c6IDE7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtc20tYXV0byB7CiAgICAtbXMtZmxleDogMCAwIGF1dG87CiAgICBmbGV4OiAwIDAgYXV0bzsKICAgIHdpZHRoOiBhdXRvOwogICAgbWF4LXdpZHRoOiBub25lOwogIH0KICAuY29sLXNtLTEgewogICAgLW1zLWZsZXg6IDAgMCA4LjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgOC4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4LjMzMzMzMyU7CiAgfQogIC5jb2wtc20tMiB7CiAgICAtbXMtZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgMTYuNjY2NjY3JTsKICAgIG1heC13aWR0aDogMTYuNjY2NjY3JTsKICB9CiAgLmNvbC1zbS0zIHsKICAgIC1tcy1mbGV4OiAwIDAgMjUlOwogICAgZmxleDogMCAwIDI1JTsKICAgIG1heC13aWR0aDogMjUlOwogIH0KICAuY29sLXNtLTQgewogICAgLW1zLWZsZXg6IDAgMCAzMy4zMzMzMzMlOwogICAgZmxleDogMCAwIDMzLjMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMyU7CiAgfQogIC5jb2wtc20tNSB7CiAgICAtbXMtZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgNDEuNjY2NjY3JTsKICAgIG1heC13aWR0aDogNDEuNjY2NjY3JTsKICB9CiAgLmNvbC1zbS02IHsKICAgIC1tcy1mbGV4OiAwIDAgNTAlOwogICAgZmxleDogMCAwIDUwJTsKICAgIG1heC13aWR0aDogNTAlOwogIH0KICAuY29sLXNtLTcgewogICAgLW1zLWZsZXg6IDAgMCA1OC4zMzMzMzMlOwogICAgZmxleDogMCAwIDU4LjMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMyU7CiAgfQogIC5jb2wtc20tOCB7CiAgICAtbXMtZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgNjYuNjY2NjY3JTsKICAgIG1heC13aWR0aDogNjYuNjY2NjY3JTsKICB9CiAgLmNvbC1zbS05IHsKICAgIC1tcy1mbGV4OiAwIDAgNzUlOwogICAgZmxleDogMCAwIDc1JTsKICAgIG1heC13aWR0aDogNzUlOwogIH0KICAuY29sLXNtLTEwIHsKICAgIC1tcy1mbGV4OiAwIDAgODMuMzMzMzMzJTsKICAgIGZsZXg6IDAgMCA4My4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4My4zMzMzMzMlOwogIH0KICAuY29sLXNtLTExIHsKICAgIC1tcy1mbGV4OiAwIDAgOTEuNjY2NjY3JTsKICAgIGZsZXg6IDAgMCA5MS42NjY2NjclOwogICAgbWF4LXdpZHRoOiA5MS42NjY2NjclOwogIH0KICAuY29sLXNtLTEyIHsKICAgIC1tcy1mbGV4OiAwIDAgMTAwJTsKICAgIGZsZXg6IDAgMCAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAub3JkZXItc20tZmlyc3QgewogICAgLW1zLWZsZXgtb3JkZXI6IC0xOwogICAgb3JkZXI6IC0xOwogIH0KICAub3JkZXItc20tbGFzdCB7CiAgICAtbXMtZmxleC1vcmRlcjogMTM7CiAgICBvcmRlcjogMTM7CiAgfQogIC5vcmRlci1zbS0wIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAwOwogICAgb3JkZXI6IDA7CiAgfQogIC5vcmRlci1zbS0xIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxOwogICAgb3JkZXI6IDE7CiAgfQogIC5vcmRlci1zbS0yIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAyOwogICAgb3JkZXI6IDI7CiAgfQogIC5vcmRlci1zbS0zIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAzOwogICAgb3JkZXI6IDM7CiAgfQogIC5vcmRlci1zbS00IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA0OwogICAgb3JkZXI6IDQ7CiAgfQogIC5vcmRlci1zbS01IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA1OwogICAgb3JkZXI6IDU7CiAgfQogIC5vcmRlci1zbS02IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA2OwogICAgb3JkZXI6IDY7CiAgfQogIC5vcmRlci1zbS03IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA3OwogICAgb3JkZXI6IDc7CiAgfQogIC5vcmRlci1zbS04IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA4OwogICAgb3JkZXI6IDg7CiAgfQogIC5vcmRlci1zbS05IHsKICAgIC1tcy1mbGV4LW9yZGVyOiA5OwogICAgb3JkZXI6IDk7CiAgfQogIC5vcmRlci1zbS0xMCB7CiAgICAtbXMtZmxleC1vcmRlcjogMTA7CiAgICBvcmRlcjogMTA7CiAgfQogIC5vcmRlci1zbS0xMSB7CiAgICAtbXMtZmxleC1vcmRlcjogMTE7CiAgICBvcmRlcjogMTE7CiAgfQogIC5vcmRlci1zbS0xMiB7CiAgICAtbXMtZmxleC1vcmRlcjogMTI7CiAgICBvcmRlcjogMTI7CiAgfQogIC5vZmZzZXQtc20tMCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLm9mZnNldC1zbS0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMyU7CiAgfQogIC5vZmZzZXQtc20tMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY3JTsKICB9CiAgLm9mZnNldC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAyNSU7CiAgfQogIC5vZmZzZXQtc20tNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzJTsKICB9CiAgLm9mZnNldC1zbS01IHsKICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjclOwogIH0KICAub2Zmc2V0LXNtLTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLm9mZnNldC1zbS03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTggewogICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtc20tOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlOwogIH0KICAub2Zmc2V0LXNtLTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjclOwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbC1tZCB7CiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKICAgIGZsZXgtYmFzaXM6IDA7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgIGZsZXgtZ3JvdzogMTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLmNvbC1tZC1hdXRvIHsKICAgIC1tcy1mbGV4OiAwIDAgYXV0bzsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQogIC5jb2wtbWQtMSB7CiAgICAtbXMtZmxleDogMCAwIDguMzMzMzMzJTsKICAgIGZsZXg6IDAgMCA4LjMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDguMzMzMzMzJTsKICB9CiAgLmNvbC1tZC0yIHsKICAgIC1tcy1mbGV4OiAwIDAgMTYuNjY2NjY3JTsKICAgIGZsZXg6IDAgMCAxNi42NjY2NjclOwogICAgbWF4LXdpZHRoOiAxNi42NjY2NjclOwogIH0KICAuY29sLW1kLTMgewogICAgLW1zLWZsZXg6IDAgMCAyNSU7CiAgICBmbGV4OiAwIDAgMjUlOwogICAgbWF4LXdpZHRoOiAyNSU7CiAgfQogIC5jb2wtbWQtNCB7CiAgICAtbXMtZmxleDogMCAwIDMzLjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzJTsKICAgIG1heC13aWR0aDogMzMuMzMzMzMzJTsKICB9CiAgLmNvbC1tZC01IHsKICAgIC1tcy1mbGV4OiAwIDAgNDEuNjY2NjY3JTsKICAgIGZsZXg6IDAgMCA0MS42NjY2NjclOwogICAgbWF4LXdpZHRoOiA0MS42NjY2NjclOwogIH0KICAuY29sLW1kLTYgewogICAgLW1zLWZsZXg6IDAgMCA1MCU7CiAgICBmbGV4OiAwIDAgNTAlOwogICAgbWF4LXdpZHRoOiA1MCU7CiAgfQogIC5jb2wtbWQtNyB7CiAgICAtbXMtZmxleDogMCAwIDU4LjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgNTguMzMzMzMzJTsKICAgIG1heC13aWR0aDogNTguMzMzMzMzJTsKICB9CiAgLmNvbC1tZC04IHsKICAgIC1tcy1mbGV4OiAwIDAgNjYuNjY2NjY3JTsKICAgIGZsZXg6IDAgMCA2Ni42NjY2NjclOwogICAgbWF4LXdpZHRoOiA2Ni42NjY2NjclOwogIH0KICAuY29sLW1kLTkgewogICAgLW1zLWZsZXg6IDAgMCA3NSU7CiAgICBmbGV4OiAwIDAgNzUlOwogICAgbWF4LXdpZHRoOiA3NSU7CiAgfQogIC5jb2wtbWQtMTAgewogICAgLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMlOwogICAgZmxleDogMCAwIDgzLjMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzMyU7CiAgfQogIC5jb2wtbWQtMTEgewogICAgLW1zLWZsZXg6IDAgMCA5MS42NjY2NjclOwogICAgZmxleDogMCAwIDkxLjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtMTIgewogICAgLW1zLWZsZXg6IDAgMCAxMDAlOwogICAgZmxleDogMCAwIDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5vcmRlci1tZC1maXJzdCB7CiAgICAtbXMtZmxleC1vcmRlcjogLTE7CiAgICBvcmRlcjogLTE7CiAgfQogIC5vcmRlci1tZC1sYXN0IHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxMzsKICAgIG9yZGVyOiAxMzsKICB9CiAgLm9yZGVyLW1kLTAgewogICAgLW1zLWZsZXgtb3JkZXI6IDA7CiAgICBvcmRlcjogMDsKICB9CiAgLm9yZGVyLW1kLTEgewogICAgLW1zLWZsZXgtb3JkZXI6IDE7CiAgICBvcmRlcjogMTsKICB9CiAgLm9yZGVyLW1kLTIgewogICAgLW1zLWZsZXgtb3JkZXI6IDI7CiAgICBvcmRlcjogMjsKICB9CiAgLm9yZGVyLW1kLTMgewogICAgLW1zLWZsZXgtb3JkZXI6IDM7CiAgICBvcmRlcjogMzsKICB9CiAgLm9yZGVyLW1kLTQgewogICAgLW1zLWZsZXgtb3JkZXI6IDQ7CiAgICBvcmRlcjogNDsKICB9CiAgLm9yZGVyLW1kLTUgewogICAgLW1zLWZsZXgtb3JkZXI6IDU7CiAgICBvcmRlcjogNTsKICB9CiAgLm9yZGVyLW1kLTYgewogICAgLW1zLWZsZXgtb3JkZXI6IDY7CiAgICBvcmRlcjogNjsKICB9CiAgLm9yZGVyLW1kLTcgewogICAgLW1zLWZsZXgtb3JkZXI6IDc7CiAgICBvcmRlcjogNzsKICB9CiAgLm9yZGVyLW1kLTggewogICAgLW1zLWZsZXgtb3JkZXI6IDg7CiAgICBvcmRlcjogODsKICB9CiAgLm9yZGVyLW1kLTkgewogICAgLW1zLWZsZXgtb3JkZXI6IDk7CiAgICBvcmRlcjogOTsKICB9CiAgLm9yZGVyLW1kLTEwIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxMDsKICAgIG9yZGVyOiAxMDsKICB9CiAgLm9yZGVyLW1kLTExIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxMTsKICAgIG9yZGVyOiAxMTsKICB9CiAgLm9yZGVyLW1kLTEyIHsKICAgIC1tcy1mbGV4LW9yZGVyOiAxMjsKICAgIG9yZGVyOiAxMjsKICB9CiAgLm9mZnNldC1tZC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAub2Zmc2V0LW1kLTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzJTsKICB9CiAgLm9mZnNldC1tZC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjclOwogIH0KICAub2Zmc2V0LW1kLTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLm9mZnNldC1tZC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMlOwogIH0KICAub2Zmc2V0LW1kLTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbWQtNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlOwogIH0KICAub2Zmc2V0LW1kLTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY3JTsKICB9CiAgLm9mZnNldC1tZC05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5vZmZzZXQtbWQtMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtMTEgewogICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NyU7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuY29sLWxnIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwogICAgZmxleC1iYXNpczogMDsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAuY29sLWxnLWF1dG8gewogICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgZmxleDogMCAwIGF1dG87CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogbm9uZTsKICB9CiAgLmNvbC1sZy0xIHsKICAgIC1tcy1mbGV4OiAwIDAgOC4zMzMzMzMlOwogICAgZmxleDogMCAwIDguMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMlOwogIH0KICAuY29sLWxnLTIgewogICAgLW1zLWZsZXg6IDAgMCAxNi42NjY2NjclOwogICAgZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7CiAgfQogIC5jb2wtbGctMyB7CiAgICAtbXMtZmxleDogMCAwIDI1JTsKICAgIGZsZXg6IDAgMCAyNSU7CiAgICBtYXgtd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1sZy00IHsKICAgIC1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzJTsKICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlOwogIH0KICAuY29sLWxnLTUgewogICAgLW1zLWZsZXg6IDAgMCA0MS42NjY2NjclOwogICAgZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NyU7CiAgfQogIC5jb2wtbGctNiB7CiAgICAtbXMtZmxleDogMCAwIDUwJTsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1sZy03IHsKICAgIC1tcy1mbGV4OiAwIDAgNTguMzMzMzMzJTsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMlOwogIH0KICAuY29sLWxnLTggewogICAgLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjclOwogICAgZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NyU7CiAgfQogIC5jb2wtbGctOSB7CiAgICAtbXMtZmxleDogMCAwIDc1JTsKICAgIGZsZXg6IDAgMCA3NSU7CiAgICBtYXgtd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1sZy0xMCB7CiAgICAtbXMtZmxleDogMCAwIDgzLjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgODMuMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzJTsKICB9CiAgLmNvbC1sZy0xMSB7CiAgICAtbXMtZmxleDogMCAwIDkxLjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgOTEuNjY2NjY3JTsKICAgIG1heC13aWR0aDogOTEuNjY2NjY3JTsKICB9CiAgLmNvbC1sZy0xMiB7CiAgICAtbXMtZmxleDogMCAwIDEwMCU7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLWxnLWZpcnN0IHsKICAgIC1tcy1mbGV4LW9yZGVyOiAtMTsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLWxnLWxhc3QgewogICAgLW1zLWZsZXgtb3JkZXI6IDEzOwogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXItbGctMCB7CiAgICAtbXMtZmxleC1vcmRlcjogMDsKICAgIG9yZGVyOiAwOwogIH0KICAub3JkZXItbGctMSB7CiAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgIG9yZGVyOiAxOwogIH0KICAub3JkZXItbGctMiB7CiAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXItbGctMyB7CiAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgIG9yZGVyOiAzOwogIH0KICAub3JkZXItbGctNCB7CiAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgIG9yZGVyOiA0OwogIH0KICAub3JkZXItbGctNSB7CiAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXItbGctNiB7CiAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgIG9yZGVyOiA2OwogIH0KICAub3JkZXItbGctNyB7CiAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgIG9yZGVyOiA3OwogIH0KICAub3JkZXItbGctOCB7CiAgICAtbXMtZmxleC1vcmRlcjogODsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXItbGctOSB7CiAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgIG9yZGVyOiA5OwogIH0KICAub3JkZXItbGctMTAgewogICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgb3JkZXI6IDEwOwogIH0KICAub3JkZXItbGctMTEgewogICAgLW1zLWZsZXgtb3JkZXI6IDExOwogICAgb3JkZXI6IDExOwogIH0KICAub3JkZXItbGctMTIgewogICAgLW1zLWZsZXgtb3JkZXI6IDEyOwogICAgb3JkZXI6IDEyOwogIH0KICAub2Zmc2V0LWxnLTAgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5vZmZzZXQtbGctMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlOwogIH0KICAub2Zmc2V0LWxnLTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbGctMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LWxnLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbGctNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTsKICB9CiAgLm9mZnNldC1sZy02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5vZmZzZXQtbGctNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclOwogIH0KICAub2Zmc2V0LWxnLTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLm9mZnNldC1sZy0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuY29sLXhsIHsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwogICAgZmxleC1iYXNpczogMDsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAuY29sLXhsLWF1dG8gewogICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgZmxleDogMCAwIGF1dG87CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogbm9uZTsKICB9CiAgLmNvbC14bC0xIHsKICAgIC1tcy1mbGV4OiAwIDAgOC4zMzMzMzMlOwogICAgZmxleDogMCAwIDguMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMlOwogIH0KICAuY29sLXhsLTIgewogICAgLW1zLWZsZXg6IDAgMCAxNi42NjY2NjclOwogICAgZmxleDogMCAwIDE2LjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NyU7CiAgfQogIC5jb2wteGwtMyB7CiAgICAtbXMtZmxleDogMCAwIDI1JTsKICAgIGZsZXg6IDAgMCAyNSU7CiAgICBtYXgtd2lkdGg6IDI1JTsKICB9CiAgLmNvbC14bC00IHsKICAgIC1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzJTsKICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMlOwogIH0KICAuY29sLXhsLTUgewogICAgLW1zLWZsZXg6IDAgMCA0MS42NjY2NjclOwogICAgZmxleDogMCAwIDQxLjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NyU7CiAgfQogIC5jb2wteGwtNiB7CiAgICAtbXMtZmxleDogMCAwIDUwJTsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC14bC03IHsKICAgIC1tcy1mbGV4OiAwIDAgNTguMzMzMzMzJTsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMlOwogICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMlOwogIH0KICAuY29sLXhsLTggewogICAgLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjclOwogICAgZmxleDogMCAwIDY2LjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NyU7CiAgfQogIC5jb2wteGwtOSB7CiAgICAtbXMtZmxleDogMCAwIDc1JTsKICAgIGZsZXg6IDAgMCA3NSU7CiAgICBtYXgtd2lkdGg6IDc1JTsKICB9CiAgLmNvbC14bC0xMCB7CiAgICAtbXMtZmxleDogMCAwIDgzLjMzMzMzMyU7CiAgICBmbGV4OiAwIDAgODMuMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzJTsKICB9CiAgLmNvbC14bC0xMSB7CiAgICAtbXMtZmxleDogMCAwIDkxLjY2NjY2NyU7CiAgICBmbGV4OiAwIDAgOTEuNjY2NjY3JTsKICAgIG1heC13aWR0aDogOTEuNjY2NjY3JTsKICB9CiAgLmNvbC14bC0xMiB7CiAgICAtbXMtZmxleDogMCAwIDEwMCU7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLXhsLWZpcnN0IHsKICAgIC1tcy1mbGV4LW9yZGVyOiAtMTsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLXhsLWxhc3QgewogICAgLW1zLWZsZXgtb3JkZXI6IDEzOwogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXIteGwtMCB7CiAgICAtbXMtZmxleC1vcmRlcjogMDsKICAgIG9yZGVyOiAwOwogIH0KICAub3JkZXIteGwtMSB7CiAgICAtbXMtZmxleC1vcmRlcjogMTsKICAgIG9yZGVyOiAxOwogIH0KICAub3JkZXIteGwtMiB7CiAgICAtbXMtZmxleC1vcmRlcjogMjsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXIteGwtMyB7CiAgICAtbXMtZmxleC1vcmRlcjogMzsKICAgIG9yZGVyOiAzOwogIH0KICAub3JkZXIteGwtNCB7CiAgICAtbXMtZmxleC1vcmRlcjogNDsKICAgIG9yZGVyOiA0OwogIH0KICAub3JkZXIteGwtNSB7CiAgICAtbXMtZmxleC1vcmRlcjogNTsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXIteGwtNiB7CiAgICAtbXMtZmxleC1vcmRlcjogNjsKICAgIG9yZGVyOiA2OwogIH0KICAub3JkZXIteGwtNyB7CiAgICAtbXMtZmxleC1vcmRlcjogNzsKICAgIG9yZGVyOiA3OwogIH0KICAub3JkZXIteGwtOCB7CiAgICAtbXMtZmxleC1vcmRlcjogODsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXIteGwtOSB7CiAgICAtbXMtZmxleC1vcmRlcjogOTsKICAgIG9yZGVyOiA5OwogIH0KICAub3JkZXIteGwtMTAgewogICAgLW1zLWZsZXgtb3JkZXI6IDEwOwogICAgb3JkZXI6IDEwOwogIH0KICAub3JkZXIteGwtMTEgewogICAgLW1zLWZsZXgtb3JkZXI6IDExOwogICAgb3JkZXI6IDExOwogIH0KICAub3JkZXIteGwtMTIgewogICAgLW1zLWZsZXgtb3JkZXI6IDEyOwogICAgb3JkZXI6IDEyOwogIH0KICAub2Zmc2V0LXhsLTAgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5vZmZzZXQteGwtMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMlOwogIH0KICAub2Zmc2V0LXhsLTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NyU7CiAgfQogIC5vZmZzZXQteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LXhsLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMyU7CiAgfQogIC5vZmZzZXQteGwtNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY3JTsKICB9CiAgLm9mZnNldC14bC02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5vZmZzZXQteGwtNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjclOwogIH0KICAub2Zmc2V0LXhsLTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLm9mZnNldC14bC0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY3JTsKICB9Cn0KCi50YWJsZSB7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLnRhYmxlIHRoLAoudGFibGUgdGQgewogIHBhZGRpbmc6IDAuNzVyZW07CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNjsKfQoKLnRhYmxlIHRoZWFkIHRoIHsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGJvZHkgKyB0Ym9keSB7CiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZSAudGFibGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi50YWJsZS1zbSB0aCwKLnRhYmxlLXNtIHRkIHsKICBwYWRkaW5nOiAwLjNyZW07Cn0KCi50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKfQoKLnRhYmxlLWJvcmRlcmVkIHRoLAoudGFibGUtYm9yZGVyZWQgdGQgewogIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aGVhZCB0aCwKLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRkIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KCi50YWJsZS1ib3JkZXJsZXNzIHRoLAoudGFibGUtYm9yZGVybGVzcyB0ZCwKLnRhYmxlLWJvcmRlcmxlc3MgdGhlYWQgdGgsCi50YWJsZS1ib3JkZXJsZXNzIHRib2R5ICsgdGJvZHkgewogIGJvcmRlcjogMDsKfQoKLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTsKfQoKLnRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoKLnRhYmxlLXByaW1hcnksCi50YWJsZS1wcmltYXJ5ID4gdGgsCi50YWJsZS1wcmltYXJ5ID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzlmY2RmZjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOwp9CgoudGFibGUtc2Vjb25kYXJ5LAoudGFibGUtc2Vjb25kYXJ5ID4gdGgsCi50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1zZWNvbmRhcnk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNjOGNiY2Y7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNjOGNiY2Y7Cn0KCi50YWJsZS1zdWNjZXNzLAoudGFibGUtc3VjY2VzcyA+IHRoLAoudGFibGUtc3VjY2VzcyA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlNmNiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNiMWRmYmI7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLnRhYmxlLWluZm8sCi50YWJsZS1pbmZvID4gdGgsCi50YWJsZS1pbmZvID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNiZWU1ZWI7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9CgoudGFibGUtd2FybmluZywKLnRhYmxlLXdhcm5pbmcgPiB0aCwKLnRhYmxlLXdhcm5pbmcgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmZmU4YTE7Cn0KCi50YWJsZS1kYW5nZXIsCi50YWJsZS1kYW5nZXIgPiB0aCwKLnRhYmxlLWRhbmdlciA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNzsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNzsKfQoKLnRhYmxlLWxpZ2h0LAoudGFibGUtbGlnaHQgPiB0aCwKLnRhYmxlLWxpZ2h0ID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNmZGZkZmU7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNlY2VjZjY7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2Y2Owp9CgoudGFibGUtZGFyaywKLnRhYmxlLWRhcmsgPiB0aCwKLnRhYmxlLWRhcmsgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNiOWJiYmU7Cn0KCi50YWJsZS1hY3RpdmUsCi50YWJsZS1hY3RpdmUgPiB0aCwKLnRhYmxlLWFjdGl2ZSA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1hY3RpdmU6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoKLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwogIGJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoKLnRhYmxlIC50aGVhZC1saWdodCB0aCB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KCi50YWJsZS1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5Owp9CgoudGFibGUtZGFyayB0aCwKLnRhYmxlLWRhcmsgdGQsCi50YWJsZS1kYXJrIHRoZWFkIHRoIHsKICBib3JkZXItY29sb3I6ICMzMjM4M2U7Cn0KCi50YWJsZS1kYXJrLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDA7Cn0KCi50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKfQoKLnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNzUpOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1zbSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1zbSA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1tZCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1sZyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1sZyA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLnRhYmxlLXJlc3BvbnNpdmUteGwgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUteGwgPiAudGFibGUtYm9yZGVyZWQgewogICAgYm9yZGVyOiAwOwogIH0KfQoKLnRhYmxlLXJlc3BvbnNpdmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG92ZXJmbG93LXg6IGF1dG87CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwp9CgoudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAwOwp9CgouZm9ybS1jb250cm9sIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsKICBmb250LXNpemU6IDFyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwogIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mb3JtLWNvbnRyb2wgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmQgewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKfQoKLmZvcm0tY29udHJvbDpmb2N1cyB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICM4MGJkZmY7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KCi5mb3JtLWNvbnRyb2w6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjNmM3NTdkOwogIG9wYWNpdHk6IDE7Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tb3otcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjNmM3NTdkOwogIG9wYWNpdHk6IDE7Cn0KCi5mb3JtLWNvbnRyb2w6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzZjNzU3ZDsKICBvcGFjaXR5OiAxOwp9CgouZm9ybS1jb250cm9sOjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogIGNvbG9yOiAjNmM3NTdkOwogIG9wYWNpdHk6IDE7Cn0KCi5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzZjNzU3ZDsKICBvcGFjaXR5OiAxOwp9CgouZm9ybS1jb250cm9sOmRpc2FibGVkLCAuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBvcGFjaXR5OiAxOwp9CgpzZWxlY3QuZm9ybS1jb250cm9sOmZvY3VzOjotbXMtdmFsdWUgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5mb3JtLWNvbnRyb2wtZmlsZSwKLmZvcm0tY29udHJvbC1yYW5nZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7Cn0KCi5jb2wtZm9ybS1sYWJlbCB7CiAgcGFkZGluZy10b3A6IGNhbGMoMC4zNzVyZW0gKyAxcHgpOwogIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuMzc1cmVtICsgMXB4KTsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBsaW5lLWhlaWdodDogMS41Owp9CgouY29sLWZvcm0tbGFiZWwtbGcgewogIHBhZGRpbmctdG9wOiBjYWxjKDAuNXJlbSArIDFweCk7CiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC41cmVtICsgMXB4KTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKLmNvbC1mb3JtLWxhYmVsLXNtIHsKICBwYWRkaW5nLXRvcDogY2FsYygwLjI1cmVtICsgMXB4KTsKICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjI1cmVtICsgMXB4KTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLXRvcDogMC4zNzVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci13aWR0aDogMXB4IDA7Cn0KCi5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1zbSwgLmZvcm0tY29udHJvbC1wbGFpbnRleHQuZm9ybS1jb250cm9sLWxnIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQoKLmZvcm0tY29udHJvbC1zbSB7CiAgaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQoKLmZvcm0tY29udHJvbC1sZyB7CiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAwLjNyZW07Cn0KCnNlbGVjdC5mb3JtLWNvbnRyb2xbc2l6ZV0sIHNlbGVjdC5mb3JtLWNvbnRyb2xbbXVsdGlwbGVdIHsKICBoZWlnaHQ6IGF1dG87Cn0KCnRleHRhcmVhLmZvcm0tY29udHJvbCB7CiAgaGVpZ2h0OiBhdXRvOwp9CgouZm9ybS1ncm91cCB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKfQoKLmZvcm0tdGV4dCB7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luLXRvcDogMC4yNXJlbTsKfQoKLmZvcm0tcm93IHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgZmxleC13cmFwOiB3cmFwOwogIG1hcmdpbi1yaWdodDogLTVweDsKICBtYXJnaW4tbGVmdDogLTVweDsKfQoKLmZvcm0tcm93ID4gLmNvbCwKLmZvcm0tcm93ID4gW2NsYXNzKj0iY29sLSJdIHsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7CiAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KCi5mb3JtLWNoZWNrIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZy1sZWZ0OiAxLjI1cmVtOwp9CgouZm9ybS1jaGVjay1pbnB1dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIG1hcmdpbi10b3A6IDAuM3JlbTsKICBtYXJnaW4tbGVmdDogLTEuMjVyZW07Cn0KCi5mb3JtLWNoZWNrLWlucHV0OmRpc2FibGVkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjNmM3NTdkOwp9CgouZm9ybS1jaGVjay1sYWJlbCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmZvcm0tY2hlY2staW5saW5lIHsKICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07Cn0KCi5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1yaWdodDogMC4zMTI1cmVtOwogIG1hcmdpbi1sZWZ0OiAwOwp9CgoudmFsaWQtZmVlZGJhY2sgewogIGRpc3BsYXk6IG5vbmU7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLXRvcDogMC4yNXJlbTsKICBmb250LXNpemU6IDgwJTsKICBjb2xvcjogIzI4YTc0NTsKfQoKLnZhbGlkLXRvb2x0aXAgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgei1pbmRleDogNTsKICBkaXNwbGF5OiBub25lOwogIG1heC13aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTsKICBtYXJnaW4tdG9wOiAuMXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0MCwgMTY3LCA2OSwgMC45KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkLCAud2FzLXZhbGlkYXRlZAouY3VzdG9tLXNlbGVjdDp2YWxpZCwKLmN1c3RvbS1zZWxlY3QuaXMtdmFsaWQgewogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy12YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQKLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsCi5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi5mb3JtLWNvbnRyb2wuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLndhcy12YWxpZGF0ZWQKLmN1c3RvbS1zZWxlY3Q6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi53YXMtdmFsaWRhdGVkCi5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsCi5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouZm9ybS1jb250cm9sLWZpbGUuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjMjhhNzQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzcxZGQ4YTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLAouY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICMzNGNlNTc7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwgLmN1c3RvbS1maWxlLWlucHV0LmlzLXZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssCi5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTsKfQoKLmludmFsaWQtZmVlZGJhY2sgewogIGRpc3BsYXk6IG5vbmU7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLXRvcDogMC4yNXJlbTsKICBmb250LXNpemU6IDgwJTsKICBjb2xvcjogI2RjMzU0NTsKfQoKLmludmFsaWQtdG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICB6LWluZGV4OiA1OwogIGRpc3BsYXk6IG5vbmU7CiAgbWF4LXdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtOwogIG1hcmdpbi10b3A6IC4xcmVtOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIyMCwgNTMsIDY5LCAwLjkpOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCwgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLCAud2FzLXZhbGlkYXRlZAouY3VzdG9tLXNlbGVjdDppbnZhbGlkLAouY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzLCAud2FzLXZhbGlkYXRlZAouY3VzdG9tLXNlbGVjdDppbnZhbGlkOmZvY3VzLAouY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuMjUpOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC53YXMtdmFsaWRhdGVkCi5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLndhcy12YWxpZGF0ZWQKLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsCi5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNvbnRyb2wtZmlsZS5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi5mb3JtLWNvbnRyb2wtZmlsZS5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKICBjb2xvcjogI2RjMzU0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAouZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlZmEyYTk7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywKLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLAoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssCi5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuMjUpOwp9CgouZm9ybS1pbmxpbmUgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CiAgZmxleC1mbG93OiByb3cgd3JhcDsKICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7CiAgd2lkdGg6IDEwMCU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5mb3JtLWlubGluZSBsYWJlbCB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwIHsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC1tcy1mbGV4OiAwIDAgYXV0bzsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwOwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogYXV0bzsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgfQogIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAsCiAgLmZvcm0taW5saW5lIC5jdXN0b20tc2VsZWN0IHsKICAgIHdpZHRoOiBhdXRvOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2sgewogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdpZHRoOiBhdXRvOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2staW5wdXQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgbWFyZ2luLXRvcDogMDsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbTsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmN1c3RvbS1jb250cm9sIHsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgfQogIC5mb3JtLWlubGluZSAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KCi5idG4gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXdlaWdodDogNDAwOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIGZvbnQtc2l6ZTogMXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5idG4gewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KCi5idG46aG92ZXIsIC5idG46Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmJ0bjpmb2N1cywgLmJ0bi5mb2N1cyB7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KCi5idG4uZGlzYWJsZWQsIC5idG46ZGlzYWJsZWQgewogIG9wYWNpdHk6IDAuNjU7Cn0KCi5idG46bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewogIGN1cnNvcjogcG9pbnRlcjsKfQoKYS5idG4uZGlzYWJsZWQsCmZpZWxkc2V0OmRpc2FibGVkIGEuYnRuIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmJ0bi1wcmltYXJ5IHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQoKLmJ0bi1wcmltYXJ5OmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2OWQ5OwogIGJvcmRlci1jb2xvcjogIzAwNjJjYzsKfQoKLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9CgouYnRuLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYzsKICBib3JkZXItY29sb3I6ICMwMDVjYmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5IHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwogIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1zZWNvbmRhcnk6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM1YTYyNjg7CiAgYm9yZGVyLWNvbG9yOiAjNTQ1YjYyOwp9CgouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MjsKICBib3JkZXItY29sb3I6ICM0ZTU1NWI7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTA4LCAxMTcsIDEyNSwgMC41KTsKfQoKLmJ0bi1zdWNjZXNzIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLmJ0bi1zdWNjZXNzOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE4ODM4OwogIGJvcmRlci1jb2xvcjogIzFlN2UzNDsKfQoKLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9CgouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tc3VjY2VzczpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNDsKICBib3JkZXItY29sb3I6ICMxYzc0MzA7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuNSk7Cn0KCi5idG4taW5mbyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4taW5mbzpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzEzODQ5NjsKICBib3JkZXItY29sb3I6ICMxMTdhOGI7Cn0KCi5idG4taW5mbzpmb2N1cywgLmJ0bi1pbmZvLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KCi5idG4taW5mby5kaXNhYmxlZCwgLmJ0bi1pbmZvOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiOwogIGJvcmRlci1jb2xvcjogIzEwNzA3ZjsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KCi5idG4td2FybmluZyB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KCi5idG4td2FybmluZzpob3ZlciB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwYTgwMDsKICBib3JkZXItY29sb3I6ICNkMzllMDA7Cn0KCi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQoKLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7CiAgYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNkMzllMDA7CiAgYm9yZGVyLWNvbG9yOiAjYzY5NTAwOwp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOwp9CgouYnRuLWRhbmdlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tZGFuZ2VyOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzgyMzMzOwogIGJvcmRlci1jb2xvcjogI2JkMjEzMDsKfQoKLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQoKLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1OwogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwOwogIGJvcmRlci1jb2xvcjogI2IyMWYyZDsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQoKLmJ0bi1saWdodCB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tbGlnaHQ6aG92ZXIgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNlMmU2ZWE7CiAgYm9yZGVyLWNvbG9yOiAjZGFlMGU1Owp9CgouYnRuLWxpZ2h0OmZvY3VzLCAuYnRuLWxpZ2h0LmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9CgouYnRuLWxpZ2h0LmRpc2FibGVkLCAuYnRuLWxpZ2h0OmRpc2FibGVkIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwogIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1OwogIGJvcmRlci1jb2xvcjogI2QzZDlkZjsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9CgouYnRuLWRhcmsgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyMzI3MmI7CiAgYm9yZGVyLWNvbG9yOiAjMWQyMTI0Owp9CgouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQoKLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQ7CiAgYm9yZGVyLWNvbG9yOiAjMTcxYTFkOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5IHsKICBjb2xvcjogIzAwN2JmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQoKLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXByaW1hcnk6ZGlzYWJsZWQgewogIGNvbG9yOiAjMDA3YmZmOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKICBib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KCi5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1zZWNvbmRhcnkuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6ZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzIHsKICBjb2xvcjogIzI4YTc0NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtc3VjY2Vzcy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6ZGlzYWJsZWQgewogIGNvbG9yOiAjMjhhNzQ1OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtaW5mbyB7CiAgY29sb3I6ICMxN2EyYjg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4tb3V0bGluZS1pbmZvOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1vdXRsaW5lLWluZm86Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1pbmZvLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtaW5mbzpkaXNhYmxlZCB7CiAgY29sb3I6ICMxN2EyYjg7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLAouc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLAouc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZyB7CiAgY29sb3I6ICNmZmMxMDc7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KCi5idG4tb3V0bGluZS13YXJuaW5nOmhvdmVyIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsIC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmYzEwNzsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlciB7CiAgY29sb3I6ICNkYzM1NDU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9CgouYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlci5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhbmdlcjpkaXNhYmxlZCB7CiAgY29sb3I6ICNkYzM1NDU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwKLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywKLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodCB7CiAgY29sb3I6ICNmOGY5ZmE7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpob3ZlciB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpmb2N1cywgLmJ0bi1vdXRsaW5lLWxpZ2h0LmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9CgouYnRuLW91dGxpbmUtbGlnaHQuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1saWdodDpkaXNhYmxlZCB7CiAgY29sb3I6ICNmOGY5ZmE7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKICBib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhcmsgewogIGNvbG9yOiAjMzQzYTQwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLW91dGxpbmUtZGFyazpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KCi5idG4tb3V0bGluZS1kYXJrOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyay5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhcmsuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1kYXJrOmRpc2FibGVkIHsKICBjb2xvcjogIzM0M2E0MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwogIGJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsCi5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpOwp9CgouYnRuLWxpbmsgewogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgY29sb3I6ICMwMDdiZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tbGluazpob3ZlciB7CiAgY29sb3I6ICMwMDU2YjM7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1saW5rOmZvY3VzLCAuYnRuLWxpbmsuZm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogbm9uZTsKfQoKLmJ0bi1saW5rOmRpc2FibGVkLCAuYnRuLWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7CiAgcGFkZGluZzogMC41cmVtIDFyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwp9CgouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQoKLmJ0bi1ibG9jayB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7Cn0KCi5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHsKICBtYXJnaW4tdG9wOiAwLjVyZW07Cn0KCmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywKaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssCmlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7CiAgd2lkdGg6IDEwMCU7Cn0KCi5mYWRlIHsKICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mYWRlIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgouZmFkZTpub3QoLnNob3cpIHsKICBvcGFjaXR5OiAwOwp9CgouY29sbGFwc2U6bm90KC5zaG93KSB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmNvbGxhcHNpbmcgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0cmFuc2l0aW9uOiBoZWlnaHQgMC4zNXMgZWFzZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jb2xsYXBzaW5nIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgouZHJvcHVwLAouZHJvcHJpZ2h0LAouZHJvcGRvd24sCi5kcm9wbGVmdCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tbGVmdDogMC4yNTVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZDsKICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50Owp9CgouZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kcm9wZG93bi1tZW51IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMDAlOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAwMDsKICBkaXNwbGF5OiBub25lOwogIGZsb2F0OiBsZWZ0OwogIG1pbi13aWR0aDogMTByZW07CiAgcGFkZGluZzogMC41cmVtIDA7CiAgbWFyZ2luOiAwLjEyNXJlbSAwIDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjE1KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgouZHJvcGRvd24tbWVudS1yaWdodCB7CiAgcmlnaHQ6IDA7CiAgbGVmdDogYXV0bzsKfQoKLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7CiAgdG9wOiBhdXRvOwogIGJvdHRvbTogMTAwJTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtOwp9CgouZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAwLjI1NWVtOwogIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtOwogIGNvbnRlbnQ6ICIiOwogIGJvcmRlci10b3A6IDA7CiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZDsKICBib3JkZXItbGVmdDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgewogIG1hcmdpbi1sZWZ0OiAwOwp9CgouZHJvcHJpZ2h0IC5kcm9wZG93bi1tZW51IHsKICB0b3A6IDA7CiAgcmlnaHQ6IGF1dG87CiAgbGVmdDogMTAwJTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1sZWZ0OiAwLjEyNXJlbTsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tbGVmdDogMC4yNTVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDA7CiAgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkOwp9CgouZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgdmVydGljYWwtYWxpZ246IDA7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tbWVudSB7CiAgdG9wOiAwOwogIHJpZ2h0OiAxMDAlOwogIGxlZnQ6IGF1dG87CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuMTI1cmVtOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmJlZm9yZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAwOwogIGhlaWdodDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7CiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZDsKICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmJlZm9yZSB7CiAgdmVydGljYWwtYWxpZ246IDA7Cn0KCi5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0idG9wIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0icmlnaHQiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJib3R0b20iXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJsZWZ0Il0gewogIHJpZ2h0OiBhdXRvOwogIGJvdHRvbTogYXV0bzsKfQoKLmRyb3Bkb3duLWRpdmlkZXIgewogIGhlaWdodDogMDsKICBtYXJnaW46IDAuNXJlbSAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOWVjZWY7Cn0KCi5kcm9wZG93bi1pdGVtIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwLjI1cmVtIDEuNXJlbTsKICBjbGVhcjogYm90aDsKICBmb250LXdlaWdodDogNDAwOwogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDA7Cn0KCi5kcm9wZG93bi1pdGVtOmhvdmVyLCAuZHJvcGRvd24taXRlbTpmb2N1cyB7CiAgY29sb3I6ICMxNjE4MWI7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cn0KCi5kcm9wZG93bi1pdGVtLmFjdGl2ZSwgLmRyb3Bkb3duLWl0ZW06YWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoKLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsIC5kcm9wZG93bi1pdGVtOmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmRyb3Bkb3duLW1lbnUuc2hvdyB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi5kcm9wZG93bi1oZWFkZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuNXJlbSAxLjVyZW07CiAgbWFyZ2luLWJvdHRvbTogMDsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5kcm9wZG93bi1pdGVtLXRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9CgouYnRuLWdyb3VwLAouYnRuLWdyb3VwLXZlcnRpY2FsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC1tcy1mbGV4OiAwIDEgYXV0bzsKICBmbGV4OiAwIDEgYXV0bzsKfQoKLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmhvdmVyIHsKICB6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOmZvY3VzLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjphY3RpdmUsCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7CiAgei1pbmRleDogMTsKfQoKLmJ0bi1ncm91cCAuYnRuICsgLmJ0biwKLmJ0bi1ncm91cCAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwICsgLmJ0biwKLmJ0bi1ncm91cCAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuICsgLmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3VwICsgLmJ0biwKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3VwICsgLmJ0bi1ncm91cCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5idG4tdG9vbGJhciB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cn0KCi5idG4tdG9vbGJhciAuaW5wdXQtZ3JvdXAgewogIHdpZHRoOiBhdXRvOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLAouYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC41NjI1cmVtOwogIHBhZGRpbmctbGVmdDogMC41NjI1cmVtOwp9CgouZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwKLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjpiZWZvcmUgewogIG1hcmdpbi1yaWdodDogMDsKfQoKLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtc20gPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC4zNzVyZW07CiAgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbTsKfQoKLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtbGcgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC43NXJlbTsKICBwYWRkaW5nLWxlZnQ6IDAuNzVyZW07Cn0KCi5idG4tZ3JvdXAtdmVydGljYWwgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgewogIHdpZHRoOiAxMDAlOwp9CgouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4sCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuICsgLmJ0bi1ncm91cCwKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLAouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9CgouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwKLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuIGlucHV0W3R5cGU9ImNoZWNrYm94Il0sCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwKLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmlucHV0LWdyb3VwIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICB3aWR0aDogMTAwJTsKfQoKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC1tcy1mbGV4OiAxIDEgYXV0bzsKICBmbGV4OiAxIDEgYXV0bzsKICB3aWR0aDogMSU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5mb3JtLWNvbnRyb2wsCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgKyAuY3VzdG9tLXNlbGVjdCwKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5jdXN0b20tZmlsZSwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuZm9ybS1jb250cm9sLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tc2VsZWN0LAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tZmlsZSwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1zZWxlY3QsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tZmlsZSB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6Zm9jdXMsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0OmZvY3VzLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKICB6LWluZGV4OiAzOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHsKICB6LWluZGV4OiA0Owp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6bGFzdC1jaGlsZCksCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0Om5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLAouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpmaXJzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5pbnB1dC1ncm91cC1wcmVwZW5kLAouaW5wdXQtZ3JvdXAtYXBwZW5kIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4Owp9CgouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLAouaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwp9CgouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuICsgLmJ0biwKLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5idG4sCi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sCi5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgewogIG1hcmdpbi1yaWdodDogLTFweDsKfQoKLmlucHV0LWdyb3VwLWFwcGVuZCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KCi5pbnB1dC1ncm91cC10ZXh0IHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoKLmlucHV0LWdyb3VwLXRleHQgaW5wdXRbdHlwZT0icmFkaW8iXSwKLmlucHV0LWdyb3VwLXRleHQgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgbWFyZ2luLXRvcDogMDsKfQoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKICBoZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoKLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogMC4ycmVtOwp9CgouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4sCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bm90KDpsYXN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuaW5wdXQtZ3JvdXAtdGV4dDpub3QoOmxhc3QtY2hpbGQpIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LAouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmN1c3RvbS1jb250cm9sIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgbWluLWhlaWdodDogMS41cmVtOwogIHBhZGRpbmctbGVmdDogMS41cmVtOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5saW5lIHsKICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgbWFyZ2luLXJpZ2h0OiAxcmVtOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKICBvcGFjaXR5OiAwOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0OmFjdGl2ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogIGNvbG9yOiAjNmM3NTdkOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDAuMjVyZW07CiAgbGVmdDogLTEuNXJlbTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgY29udGVudDogIiI7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2Owp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwLjI1cmVtOwogIGxlZnQ6IC0xLjVyZW07CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDFyZW07CiAgaGVpZ2h0OiAxcmVtOwogIGNvbnRlbnQ6ICIiOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDUwJSA1MCU7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nJTIzZmZmJyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRSIpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9Jy00IC00IDggOCclM0UlM0NjaXJjbGUgcj0nMycgZmlsbD0nJTIzZmZmJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsKfQoKLmN1c3RvbS1zZWxlY3QgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4zNzVyZW0gMS43NXJlbSAwLjM3NXJlbSAwLjc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICM0OTUwNTc7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBiYWNrZ3JvdW5kOiAjZmZmIHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgNCA1JyUzRSUzQ3BhdGggZmlsbD0nJTIzMzQzYTQwJyBkPSdNMiAwTDAgMmg0em0wIDVMMCAzaDR6Jy8lM0UlM0Mvc3ZnJTNFIikgbm8tcmVwZWF0IHJpZ2h0IDAuNzVyZW0gY2VudGVyOwogIGJhY2tncm91bmQtc2l6ZTogOHB4IDEwcHg7CiAgYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKfQoKLmN1c3RvbS1zZWxlY3Q6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogIzgwYmRmZjsKICBvdXRsaW5lOiAwOwogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEyOCwgMTg5LCAyNTUsIDAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5jdXN0b20tc2VsZWN0W211bHRpcGxlXSwgLmN1c3RvbS1zZWxlY3Rbc2l6ZV06bm90KFtzaXplPSIxIl0pIHsKICBoZWlnaHQ6IGF1dG87CiAgcGFkZGluZy1yaWdodDogMC43NXJlbTsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpkaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQoKLmN1c3RvbS1zZWxlY3Q6Oi1tcy1leHBhbmQgewogIG9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tc2VsZWN0LXNtIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKICBwYWRkaW5nLXRvcDogMC4zNzVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtOwogIGZvbnQtc2l6ZTogNzUlOwp9CgouY3VzdG9tLXNlbGVjdC1sZyB7CiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTsKICBwYWRkaW5nLXRvcDogMC4zNzVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtOwogIGZvbnQtc2l6ZTogMTI1JTsKfQoKLmN1c3RvbS1maWxlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBtYXJnaW4tYm90dG9tOiAwOwp9CgouY3VzdG9tLWZpbGUtaW5wdXQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBtYXJnaW46IDA7CiAgb3BhY2l0eTogMDsKfQoKLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKICBib3JkZXItY29sb3I6ICM4MGJkZmY7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9CgouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKICBib3JkZXItY29sb3I6ICM4MGJkZmY7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQoKLmN1c3RvbS1maWxlLWlucHV0OmxhbmcoZW4pIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgY29udGVudDogIkJyb3dzZSI7Cn0KCi5jdXN0b20tZmlsZS1sYWJlbCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDE7CiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoKLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgei1pbmRleDogMzsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDIuMjVyZW07CiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjNDk1MDU3OwogIGNvbnRlbnQ6ICJCcm93c2UiOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2VkNGRhOwogIGJvcmRlci1yYWRpdXM6IDAgMC4yNXJlbSAwLjI1cmVtIDA7Cn0KCi5jdXN0b20tcmFuZ2UgewogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctbGVmdDogMDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXMgewogIG91dGxpbmU6IG5vbmU7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9CgouY3VzdG9tLXJhbmdlOmZvY3VzOjotbW96LXJhbmdlLXRodW1iIHsKICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9CgouY3VzdG9tLXJhbmdlOmZvY3VzOjotbXMtdGh1bWIgewogIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otZm9jdXMtb3V0ZXIgewogIGJvcmRlcjogMDsKfQoKLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBtYXJnaW4tdG9wOiAtMC4yNXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlcjogMDsKICBib3JkZXItcmFkaXVzOiAxcmVtOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgYXBwZWFyYW5jZTogbm9uZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXJ1bm5hYmxlLXRyYWNrIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDAuNXJlbTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAxcmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iIHsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgouY3VzdG9tLXJhbmdlOjotbW96LXJhbmdlLXRodW1iOmFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IzZDdmZjsKfQoKLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10cmFjayB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAwLjVyZW07CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iIHsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tcmlnaHQ6IDAuMnJlbTsKICBtYXJnaW4tbGVmdDogMC4ycmVtOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1yYWRpdXM6IDFyZW07CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0OwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAwLjVyZW07CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci13aWR0aDogMC41cmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC1sb3dlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKICBib3JkZXItcmFkaXVzOiAxcmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC11cHBlciB7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsCi5jdXN0b20tZmlsZS1sYWJlbCwKLmN1c3RvbS1zZWxlY3QgewogIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLAogIC5jdXN0b20tZmlsZS1sYWJlbCwKICAuY3VzdG9tLXNlbGVjdCB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQoKLm5hdiB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2LWxpbmsgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwp9CgoubmF2LWxpbms6aG92ZXIsIC5uYXYtbGluazpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgoubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwp9CgoubmF2LXRhYnMgewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoubmF2LXRhYnMgLm5hdi1pdGVtIHsKICBtYXJnaW4tYm90dG9tOiAtMXB4Owp9CgoubmF2LXRhYnMgLm5hdi1saW5rIHsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9CgoubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyLCAubmF2LXRhYnMgLm5hdi1saW5rOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICNlOWVjZWYgI2U5ZWNlZiAjZGVlMmU2Owp9CgoubmF2LXRhYnMgLm5hdi1saW5rLmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgoubmF2LXRhYnMgLm5hdi1saW5rLmFjdGl2ZSwKLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTYgI2RlZTJlNiAjZmZmOwp9CgoubmF2LXRhYnMgLmRyb3Bkb3duLW1lbnUgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKfQoKLm5hdi1waWxscyAubmF2LWxpbmsgewogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KCi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwKLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoKLm5hdi1maWxsIC5uYXYtaXRlbSB7CiAgLW1zLWZsZXg6IDEgMSBhdXRvOwogIGZsZXg6IDEgMSBhdXRvOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIHsKICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKICBmbGV4LWJhc2lzOiAwOwogIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogIGZsZXgtZ3JvdzogMTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi50YWItY29udGVudCA+IC50YWItcGFuZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKLnRhYi1jb250ZW50ID4gLmFjdGl2ZSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi5uYXZiYXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgZmxleC13cmFwOiB3cmFwOwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKfQoKLm5hdmJhciA+IC5jb250YWluZXIsCi5uYXZiYXIgPiAuY29udGFpbmVyLWZsdWlkIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgZmxleC13cmFwOiB3cmFwOwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKfQoKLm5hdmJhci1icmFuZCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctdG9wOiAwLjMxMjVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzEyNXJlbTsKICBtYXJnaW4tcmlnaHQ6IDFyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLm5hdmJhci1uYXYgewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2YmFyLW5hdiAubmF2LWxpbmsgewogIHBhZGRpbmctcmlnaHQ6IDA7CiAgcGFkZGluZy1sZWZ0OiAwOwp9CgoubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBmbG9hdDogbm9uZTsKfQoKLm5hdmJhci10ZXh0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy10b3A6IDAuNXJlbTsKICBwYWRkaW5nLWJvdHRvbTogMC41cmVtOwp9CgoubmF2YmFyLWNvbGxhcHNlIHsKICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMTAwJTsKICBmbGV4LWJhc2lzOiAxMDAlOwogIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogIGZsZXgtZ3JvdzogMTsKICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlciB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgoubmF2YmFyLXRvZ2dsZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewogIGN1cnNvcjogcG9pbnRlcjsKfQoKLm5hdmJhci10b2dnbGVyLWljb24gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMS41ZW07CiAgaGVpZ2h0OiAxLjVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGNvbnRlbnQ6ICIiOwogIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyOwogIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsCiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSB7CiAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lciwKICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIsCiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1tZCB7CiAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lciwKICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsCiAgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAubmF2YmFyLWV4cGFuZC1sZyB7CiAgICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwKICAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItZmx1aWQgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLAogIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5uYXZiYXItZXhwYW5kLXhsIHsKICAgIC1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7CiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgfQogIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLAogIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CiAgICBmbGV4LWJhc2lzOiBhdXRvOwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLXRvZ2dsZXIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KCi5uYXZiYXItZXhwYW5kIHsKICAtbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwogIGZsZXgtZmxvdzogcm93IG5vd3JhcDsKICAtbXMtZmxleC1wYWNrOiBzdGFydDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cn0KCi5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lciwKLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLWZsdWlkIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQoKLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogIGZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgcGFkZGluZy1yaWdodDogMC41cmVtOwogIHBhZGRpbmctbGVmdDogMC41cmVtOwp9CgoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsCi5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogIGZsZXgtd3JhcDogbm93cmFwOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLWNvbGxhcHNlIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKICBmbGV4LWJhc2lzOiBhdXRvOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXIgewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZCB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpob3ZlciwgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjMpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5zaG93ID4gLm5hdi1saW5rLAoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5hY3RpdmUgPiAubmF2LWxpbmssCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXIgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10b2dnbGVyLWljb24gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMwIDMwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBzdHJva2U9J3JnYmEoMCwgMCwgMCwgMC41KScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzRSUzQy9zdmclM0UiKTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGE6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kIHsKICBjb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluazpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cyB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLAoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlciB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlci1pY29uIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPSdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYSB7CiAgY29sb3I6ICNmZmY7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKfQoKLmNhcmQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgbWluLXdpZHRoOiAwOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgouY2FyZCA+IGhyIHsKICBtYXJnaW4tcmlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KCi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKfQoKLmNhcmQgPiAubGlzdC1ncm91cDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKfQoKLmNhcmQtYm9keSB7CiAgLW1zLWZsZXg6IDEgMSBhdXRvOwogIGZsZXg6IDEgMSBhdXRvOwogIHBhZGRpbmc6IDEuMjVyZW07Cn0KCi5jYXJkLXRpdGxlIHsKICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwp9CgouY2FyZC1zdWJ0aXRsZSB7CiAgbWFyZ2luLXRvcDogLTAuMzc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5jYXJkLXRleHQ6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLmNhcmQtbGluazpob3ZlciB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouY2FyZC1saW5rICsgLmNhcmQtbGluayB7CiAgbWFyZ2luLWxlZnQ6IDEuMjVyZW07Cn0KCi5jYXJkLWhlYWRlciB7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KCi5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpIDAgMDsKfQoKLmNhcmQtaGVhZGVyICsgLmxpc3QtZ3JvdXAgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcDogMDsKfQoKLmNhcmQtZm9vdGVyIHsKICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KCi5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHsKICBib3JkZXItcmFkaXVzOiAwIDAgY2FsYygwLjI1cmVtIC0gMXB4KSBjYWxjKDAuMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1oZWFkZXItdGFicyB7CiAgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07CiAgbWFyZ2luLWJvdHRvbTogLTAuNzVyZW07CiAgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTsKICBib3JkZXItYm90dG9tOiAwOwp9CgouY2FyZC1oZWFkZXItcGlsbHMgewogIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtOwogIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07Cn0KCi5jYXJkLWltZy1vdmVybGF5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHBhZGRpbmc6IDEuMjVyZW07Cn0KCi5jYXJkLWltZyB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtaW1nLXRvcCB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtaW1nLWJvdHRvbSB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtZGVjayB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgouY2FyZC1kZWNrIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY2FyZC1kZWNrIHsKICAgIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwOwogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgfQogIC5jYXJkLWRlY2sgLmNhcmQgewogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLW1zLWZsZXg6IDEgMCAwJTsKICAgIGZsZXg6IDEgMCAwJTsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICBtYXJnaW4tbGVmdDogMTVweDsKICB9Cn0KCi5jYXJkLWdyb3VwIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWdyb3VwID4gLmNhcmQgewogIG1hcmdpbi1ib3R0b206IDE1cHg7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jYXJkLWdyb3VwIHsKICAgIC1tcy1mbGV4LWZsb3c6IHJvdyB3cmFwOwogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CiAgICAtbXMtZmxleDogMSAwIDAlOwogICAgZmxleDogMSAwIDAlOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZCArIC5jYXJkIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgYm9yZGVyLWxlZnQ6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1pbWctdG9wLAogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaGVhZGVyIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy10b3AsCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWhlYWRlciB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwKICAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtZm9vdGVyIHsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCB7CiAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaW1nLXRvcCwKICAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaGVhZGVyIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWZvb3RlciB7CiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIC5jYXJkLWltZy10b3AsCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSwKICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1oZWFkZXIsCiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtZm9vdGVyIHsKICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgfQp9CgouY2FyZC1jb2x1bW5zIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY2FyZC1jb2x1bW5zIHsKICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOwogICAgLW1vei1jb2x1bW4tY291bnQ6IDM7CiAgICBjb2x1bW4tY291bnQ6IDM7CiAgICAtd2Via2l0LWNvbHVtbi1nYXA6IDEuMjVyZW07CiAgICAtbW96LWNvbHVtbi1nYXA6IDEuMjVyZW07CiAgICBjb2x1bW4tZ2FwOiAxLjI1cmVtOwogICAgb3JwaGFuczogMTsKICAgIHdpZG93czogMTsKICB9CiAgLmNhcmQtY29sdW1ucyAuY2FyZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICB9Cn0KCi5hY2NvcmRpb24gLmNhcmQ6bm90KDpmaXJzdC1vZi10eXBlKTpub3QoOmxhc3Qtb2YtdHlwZSkgewogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpIC5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpmaXJzdC1vZi10eXBlIHsKICBib3JkZXItYm90dG9tOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5hY2NvcmRpb24gLmNhcmQ6bGFzdC1vZi10eXBlIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgouYnJlYWRjcnVtYiB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC13cmFwOiB3cmFwOwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBsaXN0LXN0eWxlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW0gewogIHBhZGRpbmctbGVmdDogMC41cmVtOwp9CgouYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTo6YmVmb3JlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZy1yaWdodDogMC41cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIGNvbnRlbnQ6ICIvIjsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmUgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmJyZWFkY3J1bWItaXRlbS5hY3RpdmUgewogIGNvbG9yOiAjNmM3NTdkOwp9CgoucGFnaW5hdGlvbiB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgoucGFnZS1saW5rIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07CiAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgbGluZS1oZWlnaHQ6IDEuMjU7CiAgY29sb3I6ICMwMDdiZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoucGFnZS1saW5rOmhvdmVyIHsKICB6LWluZGV4OiAyOwogIGNvbG9yOiAjMDA1NmIzOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2UtbGluazpmb2N1cyB7CiAgei1pbmRleDogMjsKICBvdXRsaW5lOiAwOwogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQoKLnBhZ2UtbGluazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgoucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewogIG1hcmdpbi1sZWZ0OiAwOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKfQoKLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9CgoucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHsKICB6LWluZGV4OiAxOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgoucGFnZS1pdGVtLmRpc2FibGVkIC5wYWdlLWxpbmsgewogIGNvbG9yOiAjNmM3NTdkOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwogIGN1cnNvcjogYXV0bzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7CiAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuM3JlbTsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjNyZW07CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuM3JlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41Owp9CgoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMnJlbTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjJyZW07Cn0KCi5wYWdpbmF0aW9uLXNtIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4ycmVtOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjJyZW07Cn0KCi5iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDAuMjVlbSAwLjRlbTsKICBmb250LXNpemU6IDc1JTsKICBmb250LXdlaWdodDogNzAwOwogIGxpbmUtaGVpZ2h0OiAxOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgouYmFkZ2U6ZW1wdHkgewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5idG4gLmJhZGdlIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdG9wOiAtMXB4Owp9CgouYmFkZ2UtcGlsbCB7CiAgcGFkZGluZy1yaWdodDogMC42ZW07CiAgcGFkZGluZy1sZWZ0OiAwLjZlbTsKICBib3JkZXItcmFkaXVzOiAxMHJlbTsKfQoKLmJhZGdlLXByaW1hcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2UtcHJpbWFyeVtocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cn0KCi5iYWRnZS1zZWNvbmRhcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7Cn0KCi5iYWRnZS1zZWNvbmRhcnlbaHJlZl06aG92ZXIsIC5iYWRnZS1zZWNvbmRhcnlbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTQ1YjYyOwp9CgouYmFkZ2Utc3VjY2VzcyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKfQoKLmJhZGdlLXN1Y2Nlc3NbaHJlZl06aG92ZXIsIC5iYWRnZS1zdWNjZXNzW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNDsKfQoKLmJhZGdlLWluZm8gewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cn0KCi5iYWRnZS1pbmZvW2hyZWZdOmhvdmVyLCAuYmFkZ2UtaW5mb1tocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMxMTdhOGI7Cn0KCi5iYWRnZS13YXJuaW5nIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3Owp9CgouYmFkZ2Utd2FybmluZ1tocmVmXTpob3ZlciwgLmJhZGdlLXdhcm5pbmdbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwp9CgouYmFkZ2UtZGFuZ2VyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1Owp9CgouYmFkZ2UtZGFuZ2VyW2hyZWZdOmhvdmVyLCAuYmFkZ2UtZGFuZ2VyW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKfQoKLmJhZGdlLWxpZ2h0IHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIsIC5iYWRnZS1saWdodFtocmVmXTpmb2N1cyB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7Cn0KCi5iYWRnZS1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwp9CgouYmFkZ2UtZGFya1tocmVmXTpob3ZlciwgLmJhZGdlLWRhcmtbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0Owp9CgouanVtYm90cm9uIHsKICBwYWRkaW5nOiAycmVtIDFyZW07CiAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmp1bWJvdHJvbiB7CiAgICBwYWRkaW5nOiA0cmVtIDJyZW07CiAgfQp9CgouanVtYm90cm9uLWZsdWlkIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKICBib3JkZXItcmFkaXVzOiAwOwp9CgouYWxlcnQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgouYWxlcnQtaGVhZGluZyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KCi5hbGVydC1saW5rIHsKICBmb250LXdlaWdodDogNzAwOwp9CgouYWxlcnQtZGlzbWlzc2libGUgewogIHBhZGRpbmctcmlnaHQ6IDRyZW07Cn0KCi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2UgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIGNvbG9yOiBpbmhlcml0Owp9CgouYWxlcnQtcHJpbWFyeSB7CiAgY29sb3I6ICMwMDQwODU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2NjZTVmZjsKICBib3JkZXItY29sb3I6ICNiOGRhZmY7Cn0KCi5hbGVydC1wcmltYXJ5IGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjOWZjZGZmOwp9CgouYWxlcnQtcHJpbWFyeSAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwMDI3NTI7Cn0KCi5hbGVydC1zZWNvbmRhcnkgewogIGNvbG9yOiAjMzgzZDQxOwogIGJhY2tncm91bmQtY29sb3I6ICNlMmUzZTU7CiAgYm9yZGVyLWNvbG9yOiAjZDZkOGRiOwp9CgouYWxlcnQtc2Vjb25kYXJ5IGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYzhjYmNmOwp9CgouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsKICBjb2xvcjogIzIwMjMyNjsKfQoKLmFsZXJ0LXN1Y2Nlc3MgewogIGNvbG9yOiAjMTU1NzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7CiAgYm9yZGVyLWNvbG9yOiAjYzNlNmNiOwp9CgouYWxlcnQtc3VjY2VzcyBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2IxZGZiYjsKfQoKLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjMGIyZTEzOwp9CgouYWxlcnQtaW5mbyB7CiAgY29sb3I6ICMwYzU0NjA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QxZWNmMTsKICBib3JkZXItY29sb3I6ICNiZWU1ZWI7Cn0KCi5hbGVydC1pbmZvIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYWJkZGU1Owp9CgouYWxlcnQtaW5mbyAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwNjJjMzM7Cn0KCi5hbGVydC13YXJuaW5nIHsKICBjb2xvcjogIzg1NjQwNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2NkOwogIGJvcmRlci1jb2xvcjogI2ZmZWViYTsKfQoKLmFsZXJ0LXdhcm5pbmcgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNmZmU4YTE7Cn0KCi5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzUzM2YwMzsKfQoKLmFsZXJ0LWRhbmdlciB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTsKICBib3JkZXItY29sb3I6ICNmNWM2Y2I7Cn0KCi5hbGVydC1kYW5nZXIgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNmMWIwYjc7Cn0KCi5hbGVydC1kYW5nZXIgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjNDkxMjE3Owp9CgouYWxlcnQtbGlnaHQgewogIGNvbG9yOiAjODE4MTgyOwogIGJhY2tncm91bmQtY29sb3I6ICNmZWZlZmU7CiAgYm9yZGVyLWNvbG9yOiAjZmRmZGZlOwp9CgouYWxlcnQtbGlnaHQgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNlY2VjZjY7Cn0KCi5hbGVydC1saWdodCAuYWxlcnQtbGluayB7CiAgY29sb3I6ICM2ODY4Njg7Cn0KCi5hbGVydC1kYXJrIHsKICBjb2xvcjogIzFiMWUyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGQ5OwogIGJvcmRlci1jb2xvcjogI2M2YzhjYTsKfQoKLmFsZXJ0LWRhcmsgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNiOWJiYmU7Cn0KCi5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzA0MDUwNTsKfQoKQC13ZWJraXQta2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KfQoKQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7CiAgZnJvbSB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxcmVtIDA7CiAgfQogIHRvIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKICB9Cn0KCi5wcm9ncmVzcyB7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICBoZWlnaHQ6IDFyZW07CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBmb250LXNpemU6IDAuNzVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9CgoucHJvZ3Jlc3MtYmFyIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLnByb2dyZXNzLWJhciB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQoKLnByb2dyZXNzLWJhci1zdHJpcGVkIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLXNpemU6IDFyZW0gMXJlbTsKfQoKLnByb2dyZXNzLWJhci1hbmltYXRlZCB7CiAgLXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKICBhbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKfQoKLm1lZGlhIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKfQoKLm1lZGlhLWJvZHkgewogIC1tcy1mbGV4OiAxOwogIGZsZXg6IDE7Cn0KCi5saXN0LWdyb3VwIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbi1ib3R0b206IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uIHsKICB3aWR0aDogMTAwJTsKICBjb2xvcjogIzQ5NTA1NzsKICB0ZXh0LWFsaWduOiBpbmhlcml0Owp9CgoubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjNDk1MDU3OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgoubGlzdC1ncm91cC1pdGVtLWFjdGlvbjphY3RpdmUgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOwp9CgoubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9CgoubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewogIG1hcmdpbi1ib3R0b206IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4yNXJlbTsKfQoKLmxpc3QtZ3JvdXAtaXRlbTpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbTpmb2N1cyB7CiAgei1pbmRleDogMTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsIC5saXN0LWdyb3VwLWl0ZW06ZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsKICB6LWluZGV4OiAyOwogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgoubGlzdC1ncm91cC1mbHVzaCAubGlzdC1ncm91cC1pdGVtIHsKICBib3JkZXItcmlnaHQ6IDA7CiAgYm9yZGVyLWxlZnQ6IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKfQoKLmxpc3QtZ3JvdXAtZmx1c2g6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcDogMDsKfQoKLmxpc3QtZ3JvdXAtZmx1c2g6bGFzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewogIGJvcmRlci1ib3R0b206IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeSB7CiAgY29sb3I6ICMwMDQwODU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzAwNDA4NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWZjZGZmOwp9CgoubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDQwODU7CiAgYm9yZGVyLWNvbG9yOiAjMDA0MDg1Owp9CgoubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeSB7CiAgY29sb3I6ICMzODNkNDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMzODNkNDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M4Y2JjZjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzODNkNDE7CiAgYm9yZGVyLWNvbG9yOiAjMzgzZDQxOwp9CgoubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MgewogIGNvbG9yOiAjMTU1NzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMxNTU3MjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTU1NzI0OwogIGJvcmRlci1jb2xvcjogIzE1NTcyNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKICBjb2xvcjogIzBjNTQ2MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmVlNWViOwp9CgoubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjMGM1NDYwOwogIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KCi5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzBjNTQ2MDsKICBib3JkZXItY29sb3I6ICMwYzU0NjA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0td2FybmluZyB7CiAgY29sb3I6ICM4NTY0MDQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzg1NjQwNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlOGExOwp9CgoubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM4NTY0MDQ7CiAgYm9yZGVyLWNvbG9yOiAjODU2NDA0Owp9CgoubGlzdC1ncm91cC1pdGVtLWRhbmdlciB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1YzZjYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjBiNzsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM3MjFjMjQ7CiAgYm9yZGVyLWNvbG9yOiAjNzIxYzI0Owp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0IHsKICBjb2xvcjogIzgxODE4MjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGZlOwp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM4MTgxODI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWNmNjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzgxODE4MjsKICBib3JkZXItY29sb3I6ICM4MTgxODI7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tZGFyayB7CiAgY29sb3I6ICMxYjFlMjE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzFiMWUyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJlOwp9CgoubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxYjFlMjE7CiAgYm9yZGVyLWNvbG9yOiAjMWIxZTIxOwp9CgouY2xvc2UgewogIGZsb2F0OiByaWdodDsKICBmb250LXNpemU6IDEuNXJlbTsKICBmb250LXdlaWdodDogNzAwOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiAjMDAwOwogIHRleHQtc2hhZG93OiAwIDFweCAwICNmZmY7CiAgb3BhY2l0eTogLjU7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgouY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpmb2N1cyB7CiAgY29sb3I6ICMwMDA7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIG9wYWNpdHk6IC43NTsKfQoKYnV0dG9uLmNsb3NlIHsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5tb2RhbC1vcGVuIHsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgoubW9kYWwtb3BlbiAubW9kYWwgewogIG92ZXJmbG93LXg6IGhpZGRlbjsKICBvdmVyZmxvdy15OiBhdXRvOwp9CgoubW9kYWwgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTA1MDsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBoaWRkZW47CiAgb3V0bGluZTogMDsKfQoKLm1vZGFsLWRpYWxvZyB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiBhdXRvOwogIG1hcmdpbjogMC41cmVtOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgoubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0LCAtd2Via2l0LXRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTI1JSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTI1JSk7Cn0KCkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9CgoubW9kYWwuc2hvdyAubW9kYWwtZGlhbG9nIHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwp9CgoubW9kYWwtZGlhbG9nLWNlbnRlcmVkIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoMC41cmVtICogMikpOwp9CgoubW9kYWwtZGlhbG9nLWNlbnRlcmVkOjpiZWZvcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogY2FsYygxMDB2aCAtICgwLjVyZW0gKiAyKSk7CiAgY29udGVudDogIiI7Cn0KCi5tb2RhbC1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHdpZHRoOiAxMDAlOwogIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwogIG91dGxpbmU6IDA7Cn0KCi5tb2RhbC1iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDQwOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDA7Cn0KCi5tb2RhbC1iYWNrZHJvcC5mYWRlIHsKICBvcGFjaXR5OiAwOwp9CgoubW9kYWwtYmFja2Ryb3Auc2hvdyB7CiAgb3BhY2l0eTogMC41Owp9CgoubW9kYWwtaGVhZGVyIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwYWRkaW5nOiAxcmVtOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTllY2VmOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuM3JlbTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4zcmVtOwp9CgoubW9kYWwtaGVhZGVyIC5jbG9zZSB7CiAgcGFkZGluZzogMXJlbTsKICBtYXJnaW46IC0xcmVtIC0xcmVtIC0xcmVtIGF1dG87Cn0KCi5tb2RhbC10aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaW5lLWhlaWdodDogMS41Owp9CgoubW9kYWwtYm9keSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIC1tcy1mbGV4OiAxIDEgYXV0bzsKICBmbGV4OiAxIDEgYXV0bzsKICBwYWRkaW5nOiAxcmVtOwp9CgoubW9kYWwtZm9vdGVyIHsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICBwYWRkaW5nOiAxcmVtOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllY2VmOwp9CgoubW9kYWwtZm9vdGVyID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICBtYXJnaW4tbGVmdDogLjI1cmVtOwp9CgoubW9kYWwtZm9vdGVyID4gOm5vdCg6bGFzdC1jaGlsZCkgewogIG1hcmdpbi1yaWdodDogLjI1cmVtOwp9CgoubW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC05OTk5cHg7CiAgd2lkdGg6IDUwcHg7CiAgaGVpZ2h0OiA1MHB4OwogIG92ZXJmbG93OiBzY3JvbGw7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5tb2RhbC1kaWFsb2cgewogICAgbWF4LXdpZHRoOiA1MDBweDsKICAgIG1hcmdpbjogMS43NXJlbSBhdXRvOwogIH0KICAubW9kYWwtZGlhbG9nLWNlbnRlcmVkIHsKICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtICgxLjc1cmVtICogMikpOwogIH0KICAubW9kYWwtZGlhbG9nLWNlbnRlcmVkOjpiZWZvcmUgewogICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKDEuNzVyZW0gKiAyKSk7CiAgfQogIC5tb2RhbC1zbSB7CiAgICBtYXgtd2lkdGg6IDMwMHB4OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLm1vZGFsLWxnIHsKICAgIG1heC13aWR0aDogODAwcHg7CiAgfQp9CgoudG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDEwNzA7CiAgZGlzcGxheTogYmxvY2s7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHRleHQtYWxpZ246IHN0YXJ0OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0ZXh0LXNoYWRvdzogbm9uZTsKICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICBsZXR0ZXItc3BhY2luZzogbm9ybWFsOwogIHdvcmQtYnJlYWs6IG5vcm1hbDsKICB3b3JkLXNwYWNpbmc6IG5vcm1hbDsKICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogIGxpbmUtYnJlYWs6IGF1dG87CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgb3BhY2l0eTogMDsKfQoKLnRvb2x0aXAuc2hvdyB7CiAgb3BhY2l0eTogMC45Owp9CgoudG9vbHRpcCAuYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMC44cmVtOwogIGhlaWdodDogMC40cmVtOwp9CgoudG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGNvbnRlbnQ6ICIiOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKfQoKLmJzLXRvb2x0aXAtdG9wLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gewogIHBhZGRpbmc6IDAuNHJlbSAwOwp9CgouYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKICBib3R0b206IDA7Cn0KCi5icy10b29sdGlwLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlIHsKICB0b3A6IDA7CiAgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMC40cmVtIDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoKLmJzLXRvb2x0aXAtcmlnaHQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKICBwYWRkaW5nOiAwIDAuNHJlbTsKfQoKLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3cgewogIGxlZnQ6IDA7CiAgd2lkdGg6IDAuNHJlbTsKICBoZWlnaHQ6IDAuOHJlbTsKfQoKLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlIHsKICByaWdodDogMDsKICBib3JkZXItd2lkdGg6IDAuNHJlbSAwLjRyZW0gMC40cmVtIDA7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMDAwOwp9CgouYnMtdG9vbHRpcC1ib3R0b20sIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSB7CiAgcGFkZGluZzogMC40cmVtIDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewogIHRvcDogMDsKfQoKLmJzLXRvb2x0aXAtYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUgewogIGJvdHRvbTogMDsKICBib3JkZXItd2lkdGg6IDAgMC40cmVtIDAuNHJlbTsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9CgouYnMtdG9vbHRpcC1sZWZ0LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKICBwYWRkaW5nOiAwIDAuNHJlbTsKfQoKLmJzLXRvb2x0aXAtbGVmdCAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93IHsKICByaWdodDogMDsKICB3aWR0aDogMC40cmVtOwogIGhlaWdodDogMC44cmVtOwp9CgouYnMtdG9vbHRpcC1sZWZ0IC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YmVmb3JlIHsKICBsZWZ0OiAwOwogIGJvcmRlci13aWR0aDogMC40cmVtIDAgMC40cmVtIDAuNHJlbTsKICBib3JkZXItbGVmdC1jb2xvcjogIzAwMDsKfQoKLnRvb2x0aXAtaW5uZXIgewogIG1heC13aWR0aDogMjAwcHg7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDA7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoKLnBvcG92ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDYwOwogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogMjc2cHg7CiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCIsICJOb3RvIENvbG9yIEVtb2ppIjsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMS41OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1hbGlnbjogc3RhcnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRleHQtc2hhZG93OiBub25lOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgd29yZC1icmVhazogbm9ybWFsOwogIHdvcmQtc3BhY2luZzogbm9ybWFsOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgbGluZS1icmVhazogYXV0bzsKICBmb250LXNpemU6IDAuODc1cmVtOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoKLnBvcG92ZXIgLmFycm93IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDFyZW07CiAgaGVpZ2h0OiAwLjVyZW07CiAgbWFyZ2luOiAwIDAuM3JlbTsKfQoKLnBvcG92ZXIgLmFycm93OjpiZWZvcmUsIC5wb3BvdmVyIC5hcnJvdzo6YWZ0ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICBjb250ZW50OiAiIjsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1zdHlsZTogc29saWQ7Cn0KCi5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KCi5icy1wb3BvdmVyLXRvcCAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3cgewogIGJvdHRvbTogY2FsYygoMC41cmVtICsgMXB4KSAqIC0xKTsKfQoKLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjphZnRlciB7CiAgYm9yZGVyLXdpZHRoOiAwLjVyZW0gMC41cmVtIDA7Cn0KCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlIHsKICBib3R0b206IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoKCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjphZnRlciB7CiAgYm90dG9tOiAxcHg7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjsKfQoKLmJzLXBvcG92ZXItcmlnaHQsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKICBtYXJnaW4tbGVmdDogMC41cmVtOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdyB7CiAgbGVmdDogY2FsYygoMC41cmVtICsgMXB4KSAqIC0xKTsKICB3aWR0aDogMC41cmVtOwogIGhlaWdodDogMXJlbTsKICBtYXJnaW46IDAuM3JlbSAwOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwLjVyZW0gMDsKfQoKLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlIHsKICBsZWZ0OiAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQoKCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YWZ0ZXIgewogIGxlZnQ6IDFweDsKICBib3JkZXItcmlnaHQtY29sb3I6ICNmZmY7Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKICBtYXJnaW4tdG9wOiAwLjVyZW07Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewogIHRvcDogY2FsYygoMC41cmVtICsgMXB4KSAqIC0xKTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUsCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjphZnRlciB7CiAgYm9yZGVyLXdpZHRoOiAwIDAuNXJlbSAwLjVyZW0gMC41cmVtOwp9CgouYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7CiAgdG9wOiAwOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KCgouYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjphZnRlciwKLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YWZ0ZXIgewogIHRvcDogMXB4OwogIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDUwJTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBtYXJnaW4tbGVmdDogLTAuNXJlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y3ZjdmNzsKfQoKLmJzLXBvcG92ZXItbGVmdCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSB7CiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7CiAgcmlnaHQ6IGNhbGMoKDAuNXJlbSArIDFweCkgKiAtMSk7CiAgd2lkdGg6IDAuNXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgbWFyZ2luOiAwLjNyZW0gMDsKfQoKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSwKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmFmdGVyLAouYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAgMC41cmVtIDAuNXJlbTsKfQoKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSB7CiAgcmlnaHQ6IDA7CiAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KCgouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YWZ0ZXIsCi5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjphZnRlciB7CiAgcmlnaHQ6IDFweDsKICBib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoKLnBvcG92ZXItaGVhZGVyIHsKICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTsKICBtYXJnaW4tYm90dG9tOiAwOwogIGZvbnQtc2l6ZTogMXJlbTsKICBjb2xvcjogaW5oZXJpdDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGNhbGMoMC4zcmVtIC0gMXB4KTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpOwp9CgoucG9wb3Zlci1oZWFkZXI6ZW1wdHkgewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5wb3BvdmVyLWJvZHkgewogIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9CgouY2Fyb3VzZWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmNhcm91c2VsLWlubmVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmNhcm91c2VsLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBub25lOwogIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICB3aWR0aDogMTAwJTsKICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47CiAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogMTAwMHB4OwogIHBlcnNwZWN0aXZlOiAxMDAwcHg7Cn0KCi5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKLmNhcm91c2VsLWl0ZW0tbmV4dCwKLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgZGlzcGxheTogYmxvY2s7CiAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC42cyBlYXNlOwogIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjZzIGVhc2U7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNnMgZWFzZSwgLXdlYmtpdC10cmFuc2Zvcm0gMC42cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmNhcm91c2VsLWl0ZW0uYWN0aXZlLAogIC5jYXJvdXNlbC1pdGVtLW5leHQsCiAgLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwKLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKfQoKLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQsCi5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwp9CgpAc3VwcG9ydHMgKCgtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIG9yICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSkgewogIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LAogIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogIH0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwKLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7Cn0KCkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7CiAgLmNhcm91c2VsLWl0ZW0tbmV4dCwKICAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQgewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTsKICB9Cn0KCi5jYXJvdXNlbC1pdGVtLXByZXYsCi5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKfQoKQHN1cHBvcnRzICgoLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSBvciAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkpIHsKICAuY2Fyb3VzZWwtaXRlbS1wcmV2LAogIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IHsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICB9Cn0KCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtIHsKICBvcGFjaXR5OiAwOwogIHRyYW5zaXRpb24tZHVyYXRpb246IC42czsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LAouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewogIG9wYWNpdHk6IDE7Cn0KCi5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LAouY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQgewogIG9wYWNpdHk6IDA7Cn0KCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLXByZXYsCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsCi5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KCkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7CiAgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dCwKICAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LAogIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwKICAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwKICAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogIH0KfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldiwKLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHdpZHRoOiAxNSU7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG9wYWNpdHk6IDAuNTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldjpob3ZlciwgLmNhcm91c2VsLWNvbnRyb2wtcHJldjpmb2N1cywKLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpob3ZlciwKLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIG91dGxpbmU6IDA7CiAgb3BhY2l0eTogLjk7Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYgewogIGxlZnQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLW5leHQgewogIHJpZ2h0OiAwOwp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sCi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzZmZmJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41eicvJTNFJTNDL3N2ZyUzRSIpOwp9CgouY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNMi43NSAwbC0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDQtNC00LTR6Jy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAxMHB4OwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTU7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgcGFkZGluZy1sZWZ0OiAwOwogIG1hcmdpbi1yaWdodDogMTUlOwogIG1hcmdpbi1sZWZ0OiAxNSU7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAtbXMtZmxleDogMCAxIGF1dG87CiAgZmxleDogMCAxIGF1dG87CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiAzcHg7CiAgbWFyZ2luLXJpZ2h0OiAzcHg7CiAgbWFyZ2luLWxlZnQ6IDNweDsKICB0ZXh0LWluZGVudDogLTk5OXB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjpiZWZvcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IC0xMHB4OwogIGxlZnQ6IDA7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTBweDsKICBjb250ZW50OiAiIjsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYm90dG9tOiAtMTBweDsKICBsZWZ0OiAwOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwcHg7CiAgY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5jYXJvdXNlbC1jYXB0aW9uIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDE1JTsKICBib3R0b206IDIwcHg7CiAgbGVmdDogMTUlOwogIHotaW5kZXg6IDEwOwogIHBhZGRpbmctdG9wOiAyMHB4OwogIHBhZGRpbmctYm90dG9tOiAyMHB4OwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmFsaWduLWJhc2VsaW5lIHsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKfQoKLmFsaWduLXRvcCB7CiAgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9CgouYWxpZ24tbWlkZGxlIHsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1ib3R0b20gewogIHZlcnRpY2FsLWFsaWduOiBib3R0b20gIWltcG9ydGFudDsKfQoKLmFsaWduLXRleHQtYm90dG9tIHsKICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsKfQoKLmFsaWduLXRleHQtdG9wIHsKICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3AgIWltcG9ydGFudDsKfQoKLmJnLXByaW1hcnkgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsKfQoKYS5iZy1wcmltYXJ5OmhvdmVyLCBhLmJnLXByaW1hcnk6Zm9jdXMsCmJ1dHRvbi5iZy1wcmltYXJ5OmhvdmVyLApidXR0b24uYmctcHJpbWFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9CgouYmctc2Vjb25kYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7Cn0KCmEuYmctc2Vjb25kYXJ5OmhvdmVyLCBhLmJnLXNlY29uZGFyeTpmb2N1cywKYnV0dG9uLmJnLXNlY29uZGFyeTpob3ZlciwKYnV0dG9uLmJnLXNlY29uZGFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MiAhaW1wb3J0YW50Owp9CgouYmctc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CgphLmJnLXN1Y2Nlc3M6aG92ZXIsIGEuYmctc3VjY2Vzczpmb2N1cywKYnV0dG9uLmJnLXN1Y2Nlc3M6aG92ZXIsCmJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7Cn0KCi5iZy1pbmZvIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7Cn0KCmEuYmctaW5mbzpob3ZlciwgYS5iZy1pbmZvOmZvY3VzLApidXR0b24uYmctaW5mbzpob3ZlciwKYnV0dG9uLmJnLWluZm86Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoKLmJnLXdhcm5pbmcgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKYS5iZy13YXJuaW5nOmhvdmVyLCBhLmJnLXdhcm5pbmc6Zm9jdXMsCmJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLApidXR0b24uYmctd2FybmluZzpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50Owp9CgouYmctZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KCmEuYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cywKYnV0dG9uLmJnLWRhbmdlcjpob3ZlciwKYnV0dG9uLmJnLWRhbmdlcjpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMCAhaW1wb3J0YW50Owp9CgouYmctbGlnaHQgewogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQoKYS5iZy1saWdodDpob3ZlciwgYS5iZy1saWdodDpmb2N1cywKYnV0dG9uLmJnLWxpZ2h0OmhvdmVyLApidXR0b24uYmctbGlnaHQ6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoKLmJnLWRhcmsgewogIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKYS5iZy1kYXJrOmhvdmVyLCBhLmJnLWRhcms6Zm9jdXMsCmJ1dHRvbi5iZy1kYXJrOmhvdmVyLApidXR0b24uYmctZGFyazpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50Owp9CgouYmctd2hpdGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoKLmJnLXRyYW5zcGFyZW50IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9CgouYm9yZGVyIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItdG9wIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0IHsKICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGVlMmU2ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItYm90dG9tIHsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWxlZnQgewogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLTAgewogIGJvcmRlcjogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXRvcC0wIHsKICBib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItcmlnaHQtMCB7CiAgYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItYm90dG9tLTAgewogIGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsKfQoKLmJvcmRlci1sZWZ0LTAgewogIGJvcmRlci1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItcHJpbWFyeSB7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItc2Vjb25kYXJ5IHsKICBib3JkZXItY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKLmJvcmRlci1zdWNjZXNzIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDsKfQoKLmJvcmRlci1pbmZvIHsKICBib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKLmJvcmRlci13YXJuaW5nIHsKICBib3JkZXItY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKLmJvcmRlci1kYW5nZXIgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWxpZ2h0IHsKICBib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQoKLmJvcmRlci1kYXJrIHsKICBib3JkZXItY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKLmJvcmRlci13aGl0ZSB7CiAgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLXRvcCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLXJpZ2h0IHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWJvdHRvbSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWxlZnQgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWNpcmNsZSB7CiAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLTAgewogIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKfQoKLmNsZWFyZml4OjphZnRlciB7CiAgZGlzcGxheTogYmxvY2s7CiAgY2xlYXI6IGJvdGg7CiAgY29udGVudDogIiI7Cn0KCi5kLW5vbmUgewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLmQtaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWJsb2NrIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKfQoKLmQtYmxvY2sgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KCi5kLXRhYmxlIHsKICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9CgouZC10YWJsZS1yb3cgewogIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50Owp9CgouZC10YWJsZS1jZWxsIHsKICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cn0KCi5kLWZsZXggewogIGRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50Owp9CgouZC1pbmxpbmUtZmxleCB7CiAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmQtc20tbm9uZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWlubGluZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKICB9CiAgLmQtc20taW5saW5lLWJsb2NrIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1ibG9jayB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICAuZC1zbS10YWJsZSB7CiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwogIH0KICAuZC1zbS10YWJsZS1yb3cgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLXRhYmxlLWNlbGwgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1mbGV4IHsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWlubGluZS1mbGV4IHsKICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5kLW1kLW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC1tZC10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuZC1sZy1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtbGctaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1sZy1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtbGctdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWZsZXggewogICAgZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICB9CiAgLmQtbGctaW5saW5lLWZsZXggewogICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5kLXhsLW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC14bC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQteGwtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQteGwtdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQteGwtdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC14bC10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQteGwtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC14bC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgcHJpbnQgewogIC5kLXByaW50LW5vbmUgewogICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUgewogICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LWlubGluZS1ibG9jayB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtYmxvY2sgewogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtdGFibGUgewogICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtdGFibGUtcm93IHsKICAgIGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC10YWJsZS1jZWxsIHsKICAgIGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgfQp9CgouZW1iZWQtcmVzcG9uc2l2ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmVtYmVkLXJlc3BvbnNpdmU6OmJlZm9yZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7Cn0KCi5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sCi5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwKLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsCi5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwKLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMDAlOwogIGJvcmRlcjogMDsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMjFieTk6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDQyLjg1NzE0MyU7Cn0KCi5lbWJlZC1yZXNwb25zaXZlLTE2Ynk5OjpiZWZvcmUgewogIHBhZGRpbmctdG9wOiA1Ni4yNSU7Cn0KCi5lbWJlZC1yZXNwb25zaXZlLTRieTM6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDc1JTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMWJ5MTo6YmVmb3JlIHsKICBwYWRkaW5nLXRvcDogMTAwJTsKfQoKLmZsZXgtcm93IHsKICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKfQoKLmZsZXgtY29sdW1uIHsKICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKfQoKLmZsZXgtcm93LXJldmVyc2UgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtY29sdW1uLXJldmVyc2UgewogIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcCB7CiAgLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50Owp9CgouZmxleC1ub3dyYXAgewogIC1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXdyYXAtcmV2ZXJzZSB7CiAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtZmlsbCB7CiAgLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKfQoKLmZsZXgtZ3Jvdy0wIHsKICAtbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwogIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50Owp9CgouZmxleC1ncm93LTEgewogIC1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CiAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXNocmluay0wIHsKICAtbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwogIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXNocmluay0xIHsKICAtbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwogIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtc3RhcnQgewogIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHsKICAtbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50Owp9CgouanVzdGlmeS1jb250ZW50LWJldHdlZW4gewogIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1hcm91bmQgewogIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24taXRlbXMtc3RhcnQgewogIC1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1pdGVtcy1lbmQgewogIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWNlbnRlciB7CiAgLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWJhc2VsaW5lIHsKICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLXN0cmV0Y2ggewogIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtc3RhcnQgewogIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWVuZCB7CiAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1jZW50ZXIgewogIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWJldHdlZW4gewogIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwogIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtYXJvdW5kIHsKICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtc3RyZXRjaCB7CiAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1hdXRvIHsKICAtbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CiAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1zdGFydCB7CiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1zZWxmLWVuZCB7CiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CiAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtY2VudGVyIHsKICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtYmFzZWxpbmUgewogIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtc3RyZXRjaCB7CiAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwogIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmZsZXgtc20tcm93IHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWNvbHVtbiB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1yb3ctcmV2ZXJzZSB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tY29sdW1uLXJldmVyc2UgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXdyYXAgewogICAgLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLW5vd3JhcCB7CiAgICAtbXMtZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXdyYXAtcmV2ZXJzZSB7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWZpbGwgewogICAgLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1ncm93LTAgewogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDAgIWltcG9ydGFudDsKICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1ncm93LTEgewogICAgLW1zLWZsZXgtcG9zaXRpdmU6IDEgIWltcG9ydGFudDsKICAgIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1zaHJpbmstMCB7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tc2hyaW5rLTEgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDEgIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tc3RhcnQgewogICAgLW1zLWZsZXgtcGFjazogc3RhcnQgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLWVuZCB7CiAgICAtbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIgewogICAgLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLWJldHdlZW4gewogICAgLW1zLWZsZXgtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tYXJvdW5kIHsKICAgIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1zdGFydCB7CiAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1lbmQgewogICAgLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1jZW50ZXIgewogICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewogICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXNtLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLXN0YXJ0IHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1zbS1jZW50ZXIgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1zbS1iZXR3ZWVuIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1zbS1hcm91bmQgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tc3RyZXRjaCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0cmV0Y2ggIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtc20tYXV0byB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLXN0YXJ0IHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWVuZCB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWNlbnRlciB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1zbS1iYXNlbGluZSB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtc20tc3RyZXRjaCB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZmxleC1tZC1yb3cgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtY29sdW1uIHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLXJvdy1yZXZlcnNlIHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1jb2x1bW4tcmV2ZXJzZSB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtd3JhcCB7CiAgICAtbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtbm93cmFwIHsKICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtd3JhcC1yZXZlcnNlIHsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtZmlsbCB7CiAgICAtbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLWdyb3ctMCB7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwogICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLWdyb3ctMSB7CiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwogICAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLXNocmluay0wIHsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1zaHJpbmstMSB7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwogICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1zdGFydCB7CiAgICAtbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtZW5kIHsKICAgIC1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CiAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYmV0d2VlbiB7CiAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1hcm91bmQgewogICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHsKICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLWVuZCB7CiAgICAtbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLWNlbnRlciB7CiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1tZC1iYXNlbGluZSB7CiAgICAtbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtc3RyZXRjaCB7CiAgICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbWQtc3RhcnQgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1lbmQgewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWNlbnRlciB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWJldHdlZW4gewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1zdHJldGNoIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1hdXRvIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtc3RhcnQgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtZW5kIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtY2VudGVyIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1zdHJldGNoIHsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5mbGV4LWxnLXJvdyB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1jb2x1bW4gewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctcm93LXJldmVyc2UgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLWNvbHVtbi1yZXZlcnNlIHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy13cmFwIHsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1ub3dyYXAgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy13cmFwLXJldmVyc2UgewogICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1maWxsIHsKICAgIC1tcy1mbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctZ3Jvdy0wIHsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAwICFpbXBvcnRhbnQ7CiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctZ3Jvdy0xIHsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctc2hyaW5rLTAgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDAgIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLXNocmluay0xIHsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAxICFpbXBvcnRhbnQ7CiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LWxnLXN0YXJ0IHsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1lbmQgewogICAgLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVuIHsKICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LWxnLWFyb3VuZCB7CiAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctc3RhcnQgewogICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctZW5kIHsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctY2VudGVyIHsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHsKICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1sZy1zdHJldGNoIHsKICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1zdGFydCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LWxnLWVuZCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctY2VudGVyIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctYmV0d2VlbiB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LWxnLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLWF1dG8gewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1sZy1zdGFydCB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1sZy1lbmQgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1sZy1jZW50ZXIgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5mbGV4LXhsLXJvdyB7CiAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1jb2x1bW4gewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtcm93LXJldmVyc2UgewogICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLWNvbHVtbi1yZXZlcnNlIHsKICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC13cmFwIHsKICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1ub3dyYXAgewogICAgLW1zLWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC13cmFwLXJldmVyc2UgewogICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1maWxsIHsKICAgIC1tcy1mbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtZ3Jvdy0wIHsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAwICFpbXBvcnRhbnQ7CiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtZ3Jvdy0xIHsKICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtc2hyaW5rLTAgewogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDAgIWltcG9ydGFudDsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLXNocmluay0xIHsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAxICFpbXBvcnRhbnQ7CiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLXN0YXJ0IHsKICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1lbmQgewogICAgLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHsKICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1iZXR3ZWVuIHsKICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLWFyb3VuZCB7CiAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtc3RhcnQgewogICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtZW5kIHsKICAgIC1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtY2VudGVyIHsKICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwogICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy14bC1zdHJldGNoIHsKICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1zdGFydCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLWVuZCB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZCAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQteGwtY2VudGVyIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQteGwtYmV0d2VlbiB7CiAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQteGwtYXJvdW5kIHsKICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXhsLWF1dG8gewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1zdGFydCB7CiAgICAtbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1lbmQgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1jZW50ZXIgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYteGwtYmFzZWxpbmUgewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXhsLXN0cmV0Y2ggewogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwogICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KfQoKLmZsb2F0LWxlZnQgewogIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi5mbG9hdC1yaWdodCB7CiAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KCi5mbG9hdC1ub25lIHsKICBmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuZmxvYXQtc20tbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtc20tcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1zbS1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZmxvYXQtbWQtbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtbWQtcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1tZC1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuZmxvYXQtbGctbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtbGctcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1sZy1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmZsb2F0LXhsLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LXhsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQteGwtbm9uZSB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoKLnBvc2l0aW9uLXN0YXRpYyB7CiAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tcmVsYXRpdmUgewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tYWJzb2x1dGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tZml4ZWQgewogIHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tc3RpY2t5IHsKICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kgIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RpY2t5ICFpbXBvcnRhbnQ7Cn0KCi5maXhlZC10b3AgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9CgouZml4ZWQtYm90dG9tIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTAzMDsKfQoKQHN1cHBvcnRzICgocG9zaXRpb246IC13ZWJraXQtc3RpY2t5KSBvciAocG9zaXRpb246IHN0aWNreSkpIHsKICAuc3RpY2t5LXRvcCB7CiAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7CiAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgdG9wOiAwOwogICAgei1pbmRleDogMTAyMDsKICB9Cn0KCi5zci1vbmx5IHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgd2lkdGg6IDFweDsKICBoZWlnaHQ6IDFweDsKICBwYWRkaW5nOiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQoKLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICBwb3NpdGlvbjogc3RhdGljOwogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICBvdmVyZmxvdzogdmlzaWJsZTsKICBjbGlwOiBhdXRvOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KCi5zaGFkb3ctc20gewogIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDc1KSAhaW1wb3J0YW50Owp9Cgouc2hhZG93IHsKICBib3gtc2hhZG93OiAwIDAuNXJlbSAxcmVtIHJnYmEoMCwgMCwgMCwgMC4xNSkgIWltcG9ydGFudDsKfQoKLnNoYWRvdy1sZyB7CiAgYm94LXNoYWRvdzogMCAxcmVtIDNyZW0gcmdiYSgwLCAwLCAwLCAwLjE3NSkgIWltcG9ydGFudDsKfQoKLnNoYWRvdy1ub25lIHsKICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cn0KCi53LTI1IHsKICB3aWR0aDogMjUlICFpbXBvcnRhbnQ7Cn0KCi53LTUwIHsKICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7Cn0KCi53LTc1IHsKICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7Cn0KCi53LTEwMCB7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLnctYXV0byB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQoKLmgtMjUgewogIGhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5oLTUwIHsKICBoZWlnaHQ6IDUwJSAhaW1wb3J0YW50Owp9CgouaC03NSB7CiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQoKLmgtMTAwIHsKICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLmgtYXV0byB7CiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5tdy0xMDAgewogIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9CgoubWgtMTAwIHsKICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5tLTAgewogIG1hcmdpbjogMCAhaW1wb3J0YW50Owp9CgoubXQtMCwKLm15LTAgewogIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoKLm1yLTAsCi5teC0wIHsKICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLm1iLTAsCi5teS0wIHsKICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KCi5tbC0wLAoubXgtMCB7CiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKfQoKLm0tMSB7CiAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5tdC0xLAoubXktMSB7CiAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubXItMSwKLm14LTEgewogIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubWItMSwKLm15LTEgewogIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm1sLTEsCi5teC0xIHsKICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubS0yIHsKICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50Owp9CgoubXQtMiwKLm15LTIgewogIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50Owp9CgoubXItMiwKLm14LTIgewogIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi0yLAoubXktMiB7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tbC0yLAoubXgtMiB7CiAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50Owp9CgoubS0zIHsKICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsKfQoKLm10LTMsCi5teS0zIHsKICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0zLAoubXgtMyB7CiAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi0zLAoubXktMyB7CiAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMywKLm14LTMgewogIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTQgewogIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tdC00LAoubXktNCB7CiAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tci00LAoubXgtNCB7CiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTQsCi5teS00IHsKICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm1sLTQsCi5teC00IHsKICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTUgewogIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9CgoubXQtNSwKLm15LTUgewogIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKfQoKLm1yLTUsCi5teC01IHsKICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLm1iLTUsCi5teS01IHsKICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tbC01LAoubXgtNSB7CiAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLnAtMCB7CiAgcGFkZGluZzogMCAhaW1wb3J0YW50Owp9CgoucHQtMCwKLnB5LTAgewogIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5wci0wLAoucHgtMCB7CiAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50Owp9CgoucGItMCwKLnB5LTAgewogIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cn0KCi5wbC0wLAoucHgtMCB7CiAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wLTEgewogIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTEsCi5weS0xIHsKICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoucHItMSwKLnB4LTEgewogIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTEsCi5weS0xIHsKICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMSwKLnB4LTEgewogIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50Owp9CgoucC0yIHsKICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTIsCi5weS0yIHsKICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0yLAoucHgtMiB7CiAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wYi0yLAoucHktMiB7CiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMiwKLnB4LTIgewogIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTMgewogIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKfQoKLnB0LTMsCi5weS0zIHsKICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50Owp9CgoucHItMywKLnB4LTMgewogIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoKLnBiLTMsCi5weS0zIHsKICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMywKLnB4LTMgewogIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50Owp9CgoucC00IHsKICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTQsCi5weS00IHsKICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci00LAoucHgtNCB7CiAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wYi00LAoucHktNCB7CiAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtNCwKLnB4LTQgewogIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTUgewogIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKfQoKLnB0LTUsCi5weS01IHsKICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9CgoucHItNSwKLnB4LTUgewogIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLnBiLTUsCi5weS01IHsKICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50Owp9CgoucGwtNSwKLnB4LTUgewogIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9CgoubS1hdXRvIHsKICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsKfQoKLm10LWF1dG8sCi5teS1hdXRvIHsKICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5tci1hdXRvLAoubXgtYXV0byB7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5tYi1hdXRvLAoubXktYXV0byB7CiAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50Owp9CgoubWwtYXV0bywKLm14LWF1dG8gewogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5tLXNtLTAgewogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS0wLAogIC5teS1zbS0wIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTAsCiAgLm14LXNtLTAgewogICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS0wLAogIC5teS1zbS0wIHsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTAsCiAgLm14LXNtLTAgewogICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm0tc20tMSB7CiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTEsCiAgLm15LXNtLTEgewogICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tMSwKICAubXgtc20tMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTEsCiAgLm15LXNtLTEgewogICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tMSwKICAubXgtc20tMSB7CiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1zbS0yIHsKICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS0yLAogIC5teS1zbS0yIHsKICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tMiwKICAubXgtc20tMiB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMiwKICAubXktc20tMiB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTIsCiAgLm14LXNtLTIgewogICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1zbS0zIHsKICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtc20tMywKICAubXktc20tMyB7CiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS0zLAogIC5teC1zbS0zIHsKICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMywKICAubXktc20tMyB7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS0zLAogIC5teC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTQgewogICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTQsCiAgLm15LXNtLTQgewogICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS00LAogIC5teC1zbS00IHsKICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS00LAogIC5teS1zbS00IHsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tNCwKICAubXgtc20tNCB7CiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTUgewogICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS01LAogIC5teS1zbS01IHsKICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTUsCiAgLm14LXNtLTUgewogICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS01LAogIC5teS1zbS01IHsKICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTUsCiAgLm14LXNtLTUgewogICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtc20tMCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS0wLAogIC5weS1zbS0wIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS0wLAogIC5weC1zbS0wIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnBiLXNtLTAsCiAgLnB5LXNtLTAgewogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTAsCiAgLnB4LXNtLTAgewogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTEgewogICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tMSwKICAucHktc20tMSB7CiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tMSwKICAucHgtc20tMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS0xLAogIC5weS1zbS0xIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS0xLAogIC5weC1zbS0xIHsKICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS0yIHsKICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tMiwKICAucHktc20tMiB7CiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS0yLAogIC5weC1zbS0yIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItc20tMiwKICAucHktc20tMiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS0yLAogIC5weC1zbS0yIHsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTMgewogICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tMywKICAucHktc20tMyB7CiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tMywKICAucHgtc20tMyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS0zLAogIC5weS1zbS0zIHsKICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS0zLAogIC5weC1zbS0zIHsKICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS00IHsKICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tNCwKICAucHktc20tNCB7CiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS00LAogIC5weC1zbS00IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItc20tNCwKICAucHktc20tNCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS00LAogIC5weC1zbS00IHsKICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTUgewogICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tNSwKICAucHktc20tNSB7CiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tNSwKICAucHgtc20tNSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS01LAogIC5weS1zbS01IHsKICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS01LAogIC5weC1zbS01IHsKICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubS1zbS1hdXRvIHsKICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXQtc20tYXV0bywKICAubXktc20tYXV0byB7CiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS1hdXRvLAogIC5teC1zbS1hdXRvIHsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWItc20tYXV0bywKICAubXktc20tYXV0byB7CiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS1hdXRvLAogIC5teC1zbS1hdXRvIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAubS1tZC0wIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtMCwKICAubXktbWQtMCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC0wLAogIC5teC1tZC0wIHsKICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAubWItbWQtMCwKICAubXktbWQtMCB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC0wLAogIC5teC1tZC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLTEgewogICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC0xLAogIC5teS1tZC0xIHsKICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTEsCiAgLm14LW1kLTEgewogICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC0xLAogIC5teS1tZC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTEsCiAgLm14LW1kLTEgewogICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtMiB7CiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtMiwKICAubXktbWQtMiB7CiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTIsCiAgLm14LW1kLTIgewogICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTIsCiAgLm15LW1kLTIgewogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC0yLAogIC5teC1tZC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtMyB7CiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTMsCiAgLm15LW1kLTMgewogICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtMywKICAubXgtbWQtMyB7CiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTMsCiAgLm15LW1kLTMgewogICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtMywKICAubXgtbWQtMyB7CiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC00IHsKICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC00LAogIC5teS1tZC00IHsKICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtNCwKICAubXgtbWQtNCB7CiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbWQtNCwKICAubXktbWQtNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTQsCiAgLm14LW1kLTQgewogICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC01IHsKICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtNSwKICAubXktbWQtNSB7CiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC01LAogIC5teC1tZC01IHsKICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWItbWQtNSwKICAubXktbWQtNSB7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC01LAogIC5teC1tZC01IHsKICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLW1kLTAgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogIH0KICAucHQtbWQtMCwKICAucHktbWQtMCB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAucHItbWQtMCwKICAucHgtbWQtMCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1tZC0wLAogIC5weS1tZC0wIHsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1tZC0wLAogIC5weC1tZC0wIHsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAucC1tZC0xIHsKICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTEsCiAgLnB5LW1kLTEgewogICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTEsCiAgLnB4LW1kLTEgewogICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtMSwKICAucHktbWQtMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMSwKICAucHgtbWQtMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtMiB7CiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTIsCiAgLnB5LW1kLTIgewogICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItbWQtMiwKICAucHgtbWQtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTIsCiAgLnB5LW1kLTIgewogICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMiwKICAucHgtbWQtMiB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1tZC0zIHsKICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTMsCiAgLnB5LW1kLTMgewogICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTMsCiAgLnB4LW1kLTMgewogICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtMywKICAucHktbWQtMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMywKICAucHgtbWQtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtNCB7CiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTQsCiAgLnB5LW1kLTQgewogICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItbWQtNCwKICAucHgtbWQtNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTQsCiAgLnB5LW1kLTQgewogICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtNCwKICAucHgtbWQtNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1tZC01IHsKICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTUsCiAgLnB5LW1kLTUgewogICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTUsCiAgLnB4LW1kLTUgewogICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtNSwKICAucHktbWQtNSB7CiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtNSwKICAucHgtbWQtNSB7CiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtYXV0byB7CiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLWF1dG8sCiAgLm15LW1kLWF1dG8gewogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXItbWQtYXV0bywKICAubXgtbWQtYXV0byB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLWF1dG8sCiAgLm15LW1kLWF1dG8gewogICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtYXV0bywKICAubXgtbWQtYXV0byB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLm0tbGctMCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTAsCiAgLm15LWxnLTAgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAubXItbGctMCwKICAubXgtbGctMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTAsCiAgLm15LWxnLTAgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAubWwtbGctMCwKICAubXgtbGctMCB7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAubS1sZy0xIHsKICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctMSwKICAubXktbGctMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy0xLAogIC5teC1sZy0xIHsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbGctMSwKICAubXktbGctMSB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy0xLAogIC5teC1sZy0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTIsCiAgLm15LWxnLTIgewogICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy0yLAogIC5teC1sZy0yIHsKICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0yLAogIC5teS1sZy0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbGctMiwKICAubXgtbGctMiB7CiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLTMgewogICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy0zLAogIC5teS1sZy0zIHsKICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTMsCiAgLm14LWxnLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0zLAogIC5teS1sZy0zIHsKICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLTMsCiAgLm14LWxnLTMgewogICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctNCB7CiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctNCwKICAubXktbGctNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTQsCiAgLm14LWxnLTQgewogICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTQsCiAgLm15LWxnLTQgewogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy00LAogIC5teC1sZy00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTUsCiAgLm15LWxnLTUgewogICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXItbGctNSwKICAubXgtbGctNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTUsCiAgLm15LWxnLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbGctNSwKICAubXgtbGctNSB7CiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucC1sZy0wIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICB9CiAgLnB0LWxnLTAsCiAgLnB5LWxnLTAgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTAsCiAgLnB4LWxnLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGItbGctMCwKICAucHktbGctMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAucGwtbGctMCwKICAucHgtbGctMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnAtbGctMSB7CiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0xLAogIC5weS1sZy0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy0xLAogIC5weC1sZy0xIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTEsCiAgLnB5LWxnLTEgewogICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTEsCiAgLnB4LWxnLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0yLAogIC5weS1sZy0yIHsKICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTIsCiAgLnB4LWxnLTIgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy0yLAogIC5weS1sZy0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTIsCiAgLnB4LWxnLTIgewogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbGctMyB7CiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0zLAogIC5weS1sZy0zIHsKICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy0zLAogIC5weC1sZy0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTMsCiAgLnB5LWxnLTMgewogICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTMsCiAgLnB4LWxnLTMgewogICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTQgewogICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy00LAogIC5weS1sZy00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTQsCiAgLnB4LWxnLTQgewogICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy00LAogIC5weS1sZy00IHsKICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTQsCiAgLnB4LWxnLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbGctNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy01LAogIC5weS1sZy01IHsKICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy01LAogIC5weC1sZy01IHsKICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTUsCiAgLnB5LWxnLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTUsCiAgLnB4LWxnLTUgewogICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLWF1dG8gewogICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy1hdXRvLAogIC5teS1sZy1hdXRvIHsKICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLWF1dG8sCiAgLm14LWxnLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy1hdXRvLAogIC5teS1sZy1hdXRvIHsKICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLWF1dG8sCiAgLm14LWxnLWF1dG8gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAubS14bC0wIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIH0KICAubXQteGwtMCwKICAubXkteGwtMCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC0wLAogIC5teC14bC0wIHsKICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAubWIteGwtMCwKICAubXkteGwtMCB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC0wLAogIC5teC14bC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tLXhsLTEgewogICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC0xLAogIC5teS14bC0xIHsKICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTEsCiAgLm14LXhsLTEgewogICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC0xLAogIC5teS14bC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTEsCiAgLm14LXhsLTEgewogICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0teGwtMiB7CiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQteGwtMiwKICAubXkteGwtMiB7CiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTIsCiAgLm14LXhsLTIgewogICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTIsCiAgLm15LXhsLTIgewogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC0yLAogIC5teC14bC0yIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0teGwtMyB7CiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLTMsCiAgLm15LXhsLTMgewogICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtMywKICAubXgteGwtMyB7CiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTMsCiAgLm15LXhsLTMgewogICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwteGwtMywKICAubXgteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC00IHsKICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC00LAogIC5teS14bC00IHsKICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtNCwKICAubXgteGwtNCB7CiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWIteGwtNCwKICAubXkteGwtNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTQsCiAgLm14LXhsLTQgewogICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC01IHsKICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXQteGwtNSwKICAubXkteGwtNSB7CiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC01LAogIC5teC14bC01IHsKICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWIteGwtNSwKICAubXkteGwtNSB7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC01LAogIC5teC14bC01IHsKICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTAgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogIH0KICAucHQteGwtMCwKICAucHkteGwtMCB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAucHIteGwtMCwKICAucHgteGwtMCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wYi14bC0wLAogIC5weS14bC0wIHsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC0wLAogIC5weC14bC0wIHsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAucC14bC0xIHsKICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTEsCiAgLnB5LXhsLTEgewogICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTEsCiAgLnB4LXhsLTEgewogICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtMSwKICAucHkteGwtMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtMSwKICAucHgteGwtMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtMiB7CiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTIsCiAgLnB5LXhsLTIgewogICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtMiwKICAucHgteGwtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTIsCiAgLnB5LXhsLTIgewogICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtMiwKICAucHgteGwtMiB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC14bC0zIHsKICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTMsCiAgLnB5LXhsLTMgewogICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTMsCiAgLnB4LXhsLTMgewogICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtMywKICAucHkteGwtMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtMywKICAucHgteGwtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtNCB7CiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTQsCiAgLnB5LXhsLTQgewogICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtNCwKICAucHgteGwtNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTQsCiAgLnB5LXhsLTQgewogICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtNCwKICAucHgteGwtNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC14bC01IHsKICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTUsCiAgLnB5LXhsLTUgewogICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTUsCiAgLnB4LXhsLTUgewogICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtNSwKICAucHkteGwtNSB7CiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtNSwKICAucHgteGwtNSB7CiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm0teGwtYXV0byB7CiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLWF1dG8sCiAgLm15LXhsLWF1dG8gewogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXIteGwtYXV0bywKICAubXgteGwtYXV0byB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLWF1dG8sCiAgLm15LXhsLWF1dG8gewogICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWwteGwtYXV0bywKICAubXgteGwtYXV0byB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIH0KfQoKLnRleHQtbW9ub3NwYWNlIHsKICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9CgoudGV4dC1qdXN0aWZ5IHsKICB0ZXh0LWFsaWduOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LW5vd3JhcCB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50Owp9CgoudGV4dC10cnVuY2F0ZSB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgoudGV4dC1sZWZ0IHsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXJpZ2h0IHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50Owp9CgoudGV4dC1jZW50ZXIgewogIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAudGV4dC1zbS1sZWZ0IHsKICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtc20tcmlnaHQgewogICAgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKICB9CiAgLnRleHQtc20tY2VudGVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogIH0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLnRleHQtbWQtbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LW1kLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LW1kLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC50ZXh0LWxnLWxlZnQgewogICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwogIH0KICAudGV4dC1sZy1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwogIH0KICAudGV4dC1sZy1jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLnRleHQteGwtbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXhsLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXhsLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KCi50ZXh0LWxvd2VyY2FzZSB7CiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSAhaW1wb3J0YW50Owp9CgoudGV4dC11cHBlcmNhc2UgewogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtY2FwaXRhbGl6ZSB7CiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemUgIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LWxpZ2h0IHsKICBmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnQ7Cn0KCi5mb250LXdlaWdodC1ub3JtYWwgewogIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LWJvbGQgewogIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsKfQoKLmZvbnQtaXRhbGljIHsKICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsKfQoKLnRleHQtd2hpdGUgewogIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXByaW1hcnkgewogIGNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1wcmltYXJ5OmhvdmVyLCBhLnRleHQtcHJpbWFyeTpmb2N1cyB7CiAgY29sb3I6ICMwMDYyY2MgIWltcG9ydGFudDsKfQoKLnRleHQtc2Vjb25kYXJ5IHsKICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgphLnRleHQtc2Vjb25kYXJ5OmhvdmVyLCBhLnRleHQtc2Vjb25kYXJ5OmZvY3VzIHsKICBjb2xvcjogIzU0NWI2MiAhaW1wb3J0YW50Owp9CgoudGV4dC1zdWNjZXNzIHsKICBjb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CgphLnRleHQtc3VjY2Vzczpob3ZlciwgYS50ZXh0LXN1Y2Nlc3M6Zm9jdXMgewogIGNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWluZm8gewogIGNvbG9yOiAjMTdhMmI4ICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1pbmZvOmhvdmVyLCBhLnRleHQtaW5mbzpmb2N1cyB7CiAgY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoKLnRleHQtd2FybmluZyB7CiAgY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKYS50ZXh0LXdhcm5pbmc6aG92ZXIsIGEudGV4dC13YXJuaW5nOmZvY3VzIHsKICBjb2xvcjogI2QzOWUwMCAhaW1wb3J0YW50Owp9CgoudGV4dC1kYW5nZXIgewogIGNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1kYW5nZXI6aG92ZXIsIGEudGV4dC1kYW5nZXI6Zm9jdXMgewogIGNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWxpZ2h0IHsKICBjb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50Owp9CgphLnRleHQtbGlnaHQ6aG92ZXIsIGEudGV4dC1saWdodDpmb2N1cyB7CiAgY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoKLnRleHQtZGFyayB7CiAgY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKYS50ZXh0LWRhcms6aG92ZXIsIGEudGV4dC1kYXJrOmZvY3VzIHsKICBjb2xvcjogIzFkMjEyNCAhaW1wb3J0YW50Owp9CgoudGV4dC1ib2R5IHsKICBjb2xvcjogIzIxMjUyOSAhaW1wb3J0YW50Owp9CgoudGV4dC1tdXRlZCB7CiAgY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKLnRleHQtYmxhY2stNTAgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSkgIWltcG9ydGFudDsKfQoKLnRleHQtd2hpdGUtNTAgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgIWltcG9ydGFudDsKfQoKLnRleHQtaGlkZSB7CiAgZm9udDogMC8wIGE7CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIHRleHQtc2hhZG93OiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKfQoKLnZpc2libGUgewogIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKfQoKLmludmlzaWJsZSB7CiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSBwcmludCB7CiAgKiwKICAqOjpiZWZvcmUsCiAgKjo6YWZ0ZXIgewogICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgYTpub3QoLmJ0bikgewogICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgfQogIGFiYnJbdGl0bGVdOjphZnRlciB7CiAgICBjb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKICB9CiAgcHJlIHsKICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcCAhaW1wb3J0YW50OwogIH0KICBwcmUsCiAgYmxvY2txdW90ZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWRiNWJkOwogICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwogIH0KICB0aGVhZCB7CiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7CiAgfQogIHRyLAogIGltZyB7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgfQogIHAsCiAgaDIsCiAgaDMgewogICAgb3JwaGFuczogMzsKICAgIHdpZG93czogMzsKICB9CiAgaDIsCiAgaDMgewogICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgfQogIEBwYWdlIHsKICAgIHNpemU6IGEzOwogIH0KICBib2R5IHsKICAgIG1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDsKICB9CiAgLmNvbnRhaW5lciB7CiAgICBtaW4td2lkdGg6IDk5MnB4ICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLmJhZGdlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgfQogIC50YWJsZSB7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7CiAgfQogIC50YWJsZSB0ZCwKICAudGFibGUgdGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIH0KICAudGFibGUtYm9yZGVyZWQgdGgsCiAgLnRhYmxlLWJvcmRlcmVkIHRkIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWRhcmsgewogICAgY29sb3I6IGluaGVyaXQ7CiAgfQogIC50YWJsZS1kYXJrIHRoLAogIC50YWJsZS1kYXJrIHRkLAogIC50YWJsZS1kYXJrIHRoZWFkIHRoLAogIC50YWJsZS1kYXJrIHRib2R5ICsgdGJvZHkgewogICAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2OwogIH0KICAudGFibGUgLnRoZWFkLWRhcmsgdGggewogICAgY29sb3I6IGluaGVyaXQ7CiAgICBib3JkZXItY29sb3I6ICNkZWUyZTY7CiAgfQp9Ci8qIyBzb3VyY2VNYXBwaW5nVVJMPWJvb3RzdHJhcC5jc3MubWFwICov]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/prefixed-bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjpyb290IHsKCS0tYmx1ZTogIzAwN2JmZjsKCS0taW5kaWdvOiAjNjYxMGYyOwoJLS1wdXJwbGU6ICM2ZjQyYzE7CgktLXBpbms6ICNlODNlOGM7CgktLXJlZDogI2RjMzU0NTsKCS0tb3JhbmdlOiAjZmQ3ZTE0OwoJLS15ZWxsb3c6ICNmZmMxMDc7CgktLWdyZWVuOiAjMjhhNzQ1OwoJLS10ZWFsOiAjMjBjOTk3OwoJLS1jeWFuOiAjMTdhMmI4OwoJLS13aGl0ZTogI2ZmZjsKCS0tZ3JheTogIzZjNzU3ZDsKCS0tZ3JheS1kYXJrOiAjMzQzYTQwOwoJLS1wcmltYXJ5OiAjMDA3YmZmOwoJLS1zZWNvbmRhcnk6ICM2Yzc1N2Q7CgktLXN1Y2Nlc3M6ICMyOGE3NDU7CgktLWluZm86ICMxN2EyYjg7CgktLXdhcm5pbmc6ICNmZmMxMDc7CgktLWRhbmdlcjogI2RjMzU0NTsKCS0tbGlnaHQ6ICNmOGY5ZmE7CgktLWRhcms6ICMzNDNhNDA7CgktLWJyZWFrcG9pbnQteHM6IDA7CgktLWJyZWFrcG9pbnQtc206IDU3NnB4OwoJLS1icmVha3BvaW50LW1kOiA3NjhweDsKCS0tYnJlYWtwb2ludC1sZzogOTkycHg7CgktLWJyZWFrcG9pbnQteGw6IDEyMDBweDsKCS0tZm9udC1mYW1pbHktc2Fucy1zZXJpZjogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBTZWdvZSBVSSwgUm9ib3RvLCBIZWx2ZXRpY2EgTmV1ZSwgQXJpYWwsIHNhbnMtc2VyaWYsIEFwcGxlIENvbG9yIEVtb2ppLCBTZWdvZSBVSSBFbW9qaSwgU2Vnb2UgVUkgU3ltYm9sLCBOb3RvIENvbG9yIEVtb2ppOwoJLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgTGliZXJhdGlvbiBNb25vLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlOwp9CgoqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCmh0bWwgewoJZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CglsaW5lLWhlaWdodDogMS4xNTsKCS13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKCS1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwoJLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7Cgktd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7Cn0KCkAtbXMtdmlld3BvcnQgewoJd2lkdGg6IGRldmljZS13aWR0aDsKfQoKYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgpib2R5IHsKCW1hcmdpbjogMDsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7Cglmb250LXNpemU6IDFyZW07Cglmb250LXdlaWdodDogNDAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjMjEyNTI5OwoJdGV4dC1hbGlnbjogbGVmdDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KClt0YWJpbmRleD0iLTEiXTpmb2N1cyB7CglvdXRsaW5lOiAwICFpbXBvcnRhbnQ7Cn0KCmhyIHsKCWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwoJaGVpZ2h0OiAwOwoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYgewoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgpwIHsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAxcmVtOwp9CgphYmJyW3RpdGxlXSwgYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsKCWN1cnNvcjogaGVscDsKCWJvcmRlci1ib3R0b206IDA7Cn0KCmFkZHJlc3MgewoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CgpvbCwgdWwsIGRsIHsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAxcmVtOwp9CgpvbCBvbCwgdWwgdWwsIG9sIHVsLCB1bCBvbCB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgpkdCB7Cglmb250LXdlaWdodDogNzAwOwp9CgpkZCB7CgltYXJnaW4tYm90dG9tOiAuNXJlbTsKCW1hcmdpbi1sZWZ0OiAwOwp9CgpibG9ja3F1b3RlIHsKCW1hcmdpbjogMCAwIDFyZW07Cn0KCmRmbiB7Cglmb250LXN0eWxlOiBpdGFsaWM7Cn0KCmIsIHN0cm9uZyB7Cglmb250LXdlaWdodDogYm9sZGVyOwp9CgpzbWFsbCB7Cglmb250LXNpemU6IDgwJTsKfQoKc3ViLCBzdXAgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZm9udC1zaXplOiA3NSU7CglsaW5lLWhlaWdodDogMDsKCXZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKc3ViIHsKCWJvdHRvbTogLS4yNWVtOwp9CgpzdXAgewoJdG9wOiAtLjVlbTsKfQoKYSB7Cgljb2xvcjogIzAwN2JmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsKfQoKYTpob3ZlciB7Cgljb2xvcjogIzAwNTZiMzsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKSB7Cgljb2xvcjogaW5oZXJpdDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXIsIGE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmZvY3VzIHsKCWNvbG9yOiBpbmhlcml0OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7CglvdXRsaW5lOiAwOwp9CgpwcmUsIGNvZGUsIGtiZCwgc2FtcCB7Cglmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwoJZm9udC1zaXplOiAxZW07Cn0KCnByZSB7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCW92ZXJmbG93OiBhdXRvOwoJLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7Cn0KCmZpZ3VyZSB7CgltYXJnaW46IDAgMCAxcmVtOwp9CgppbWcgewoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWJvcmRlci1zdHlsZTogbm9uZTsKfQoKc3ZnIHsKCW92ZXJmbG93OiBoaWRkZW47Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Cgp0YWJsZSB7Cglib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9CgpjYXB0aW9uIHsKCXBhZGRpbmctdG9wOiAuNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjc1cmVtOwoJY29sb3I6ICM2Yzc1N2Q7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJY2FwdGlvbi1zaWRlOiBib3R0b207Cn0KCnRoIHsKCXRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCmxhYmVsIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgpidXR0b24gewoJYm9yZGVyLXJhZGl1czogMDsKfQoKYnV0dG9uOmZvY3VzIHsKCW91dGxpbmU6IDFweCBkb3R0ZWQ7CglvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7Cn0KCmlucHV0LCBidXR0b24sIHNlbGVjdCwgb3B0Z3JvdXAsIHRleHRhcmVhIHsKCW1hcmdpbjogMDsKCWZvbnQtZmFtaWx5OiBpbmhlcml0OwoJZm9udC1zaXplOiBpbmhlcml0OwoJbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCmJ1dHRvbiwgaW5wdXQgewoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmJ1dHRvbiwgc2VsZWN0IHsKCXRleHQtdHJhbnNmb3JtOiBub25lOwp9CgpidXR0b24sIGh0bWwgW3R5cGU9ImJ1dHRvbiJdLCBbdHlwZT0icmVzZXQiXSwgW3R5cGU9InN1Ym1pdCJdIHsKCS13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CgpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsIFt0eXBlPSJidXR0b24iXTo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9InJlc2V0Il06Oi1tb3otZm9jdXMtaW5uZXIsIFt0eXBlPSJzdWJtaXQiXTo6LW1vei1mb2N1cy1pbm5lciB7CglwYWRkaW5nOiAwOwoJYm9yZGVyLXN0eWxlOiBub25lOwp9CgppbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7CglwYWRkaW5nOiAwOwp9CgppbnB1dFt0eXBlPSJkYXRlIl0sIGlucHV0W3R5cGU9InRpbWUiXSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSwgaW5wdXRbdHlwZT0ibW9udGgiXSB7Cgktd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7Cn0KCnRleHRhcmVhIHsKCW92ZXJmbG93OiBhdXRvOwoJcmVzaXplOiB2ZXJ0aWNhbDsKfQoKZmllbGRzZXQgewoJbWluLXdpZHRoOiAwOwoJcGFkZGluZzogMDsKCW1hcmdpbjogMDsKCWJvcmRlcjogMDsKfQoKbGVnZW5kIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7CgltYXgtd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAwOwoJbWFyZ2luLWJvdHRvbTogLjVyZW07Cglmb250LXNpemU6IDEuNXJlbTsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0OwoJY29sb3I6IGluaGVyaXQ7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Cgpwcm9ncmVzcyB7Cgl2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KClt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwgW3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKCWhlaWdodDogYXV0bzsKfQoKW3R5cGU9InNlYXJjaCJdIHsKCW91dGxpbmUtb2Zmc2V0OiAtMnB4OwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgpbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sIFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewoJZm9udDogaW5oZXJpdDsKCS13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CgpvdXRwdXQgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgpzdW1tYXJ5IHsKCWRpc3BsYXk6IGxpc3QtaXRlbTsKCWN1cnNvcjogcG9pbnRlcjsKfQoKdGVtcGxhdGUgewoJZGlzcGxheTogbm9uZTsKfQoKW2hpZGRlbl0gewoJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAuaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwoJZm9udC1mYW1pbHk6IGluaGVyaXQ7Cglmb250LXdlaWdodDogNTAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKCWNvbG9yOiBpbmhlcml0Owp9CgpoMSwgLmgxIHsKCWZvbnQtc2l6ZTogMi41cmVtOwp9CgpoMiwgLmgyIHsKCWZvbnQtc2l6ZTogMnJlbTsKfQoKaDMsIC5oMyB7Cglmb250LXNpemU6IDEuNzVyZW07Cn0KCmg0LCAuaDQgewoJZm9udC1zaXplOiAxLjVyZW07Cn0KCmg1LCAuaDUgewoJZm9udC1zaXplOiAxLjI1cmVtOwp9CgpoNiwgLmg2IHsKCWZvbnQtc2l6ZTogMXJlbTsKfQoKLmxlYWQgewoJZm9udC1zaXplOiAxLjI1cmVtOwoJZm9udC13ZWlnaHQ6IDMwMDsKfQoKLmRpc3BsYXktMSB7Cglmb250LXNpemU6IDZyZW07Cglmb250LXdlaWdodDogMzAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKfQoKLmRpc3BsYXktMiB7Cglmb250LXNpemU6IDUuNXJlbTsKCWZvbnQtd2VpZ2h0OiAzMDA7CglsaW5lLWhlaWdodDogMS4yOwp9CgouZGlzcGxheS0zIHsKCWZvbnQtc2l6ZTogNC41cmVtOwoJZm9udC13ZWlnaHQ6IDMwMDsKCWxpbmUtaGVpZ2h0OiAxLjI7Cn0KCi5kaXNwbGF5LTQgewoJZm9udC1zaXplOiAzLjVyZW07Cglmb250LXdlaWdodDogMzAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKfQoKaHIgewoJbWFyZ2luLXRvcDogMXJlbTsKCW1hcmdpbi1ib3R0b206IDFyZW07Cglib3JkZXI6IDA7Cglib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMSk7Cn0KCnNtYWxsLCAuc21hbGwgewoJZm9udC1zaXplOiA4MCU7Cglmb250LXdlaWdodDogNDAwOwp9CgptYXJrLCAubWFyayB7CglwYWRkaW5nOiAuMmVtOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoKLmxpc3QtdW5zdHlsZWQgewoJcGFkZGluZy1sZWZ0OiAwOwoJbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lIHsKCXBhZGRpbmctbGVmdDogMDsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5saXN0LWlubGluZS1pdGVtIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CgltYXJnaW4tcmlnaHQ6IC41cmVtOwp9CgouaW5pdGlhbGlzbSB7Cglmb250LXNpemU6IDkwJTsKCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi5ibG9ja3F1b3RlIHsKCW1hcmdpbi1ib3R0b206IDFyZW07Cglmb250LXNpemU6IDEuMjVyZW07Cn0KCi5ibG9ja3F1b3RlLWZvb3RlciB7CglkaXNwbGF5OiBibG9jazsKCWZvbnQtc2l6ZTogODAlOwoJY29sb3I6ICM2Yzc1N2Q7Cn0KCi5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHsKCWNvbnRlbnQ6ICLigJTCoCI7Cn0KCi5pbWctZmx1aWQgewoJbWF4LXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBhdXRvOwp9CgouaW1nLXRodW1ibmFpbCB7CglwYWRkaW5nOiAuMjVyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKCW1heC13aWR0aDogMTAwJTsKCWhlaWdodDogYXV0bzsKfQoKLmZpZ3VyZSB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5maWd1cmUtaW1nIHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwoJbGluZS1oZWlnaHQ6IDE7Cn0KCi5maWd1cmUtY2FwdGlvbiB7Cglmb250LXNpemU6IDkwJTsKCWNvbG9yOiAjNmM3NTdkOwp9Cgpjb2RlIHsKCWZvbnQtc2l6ZTogODcuNSU7Cgljb2xvcjogI2U4M2U4YzsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KCmEgPiBjb2RlIHsKCWNvbG9yOiBpbmhlcml0Owp9CgprYmQgewoJcGFkZGluZzogLjJyZW0gLjRyZW07Cglmb250LXNpemU6IDg3LjUlOwoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCmtiZCBrYmQgewoJcGFkZGluZzogMDsKCWZvbnQtc2l6ZTogMTAwJTsKCWZvbnQtd2VpZ2h0OiA3MDA7Cn0KCnByZSB7CglkaXNwbGF5OiBibG9jazsKCWZvbnQtc2l6ZTogODcuNSU7Cgljb2xvcjogIzIxMjUyOTsKfQoKcHJlIGNvZGUgewoJZm9udC1zaXplOiBpbmhlcml0OwoJY29sb3I6IGluaGVyaXQ7Cgl3b3JkLWJyZWFrOiBub3JtYWw7Cn0KCi5wcmUtc2Nyb2xsYWJsZSB7CgltYXgtaGVpZ2h0OiAzNDBweDsKCW92ZXJmbG93LXk6IHNjcm9sbDsKfQoKLmNvbnRhaW5lciB7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmctcmlnaHQ6IDE1cHg7CglwYWRkaW5nLWxlZnQ6IDE1cHg7CgltYXJnaW4tcmlnaHQ6IGF1dG87CgltYXJnaW4tbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY29udGFpbmVyIHsKCQltYXgtd2lkdGg6IDU0MHB4OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5jb250YWluZXIgewoJCW1heC13aWR0aDogNzIwcHg7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmNvbnRhaW5lciB7CgkJbWF4LXdpZHRoOiA5NjBweDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLmNvbnRhaW5lciB7CgkJbWF4LXdpZHRoOiAxMTQwcHg7Cgl9Cn0KCi5jb250YWluZXItZmx1aWQgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nLXJpZ2h0OiAxNXB4OwoJcGFkZGluZy1sZWZ0OiAxNXB4OwoJbWFyZ2luLXJpZ2h0OiBhdXRvOwoJbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5yb3cgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCW1hcmdpbi1yaWdodDogLTE1cHg7CgltYXJnaW4tbGVmdDogLTE1cHg7Cn0KCi5uby1ndXR0ZXJzIHsKCW1hcmdpbi1yaWdodDogMDsKCW1hcmdpbi1sZWZ0OiAwOwp9Cgoubm8tZ3V0dGVycyA+IC5jb2wsIC5uby1ndXR0ZXJzID4gW2NsYXNzKj0iY29sLSJdIHsKCXBhZGRpbmctcmlnaHQ6IDA7CglwYWRkaW5nLWxlZnQ6IDA7Cn0KCi5jb2wtMSwgLmNvbC0yLCAuY29sLTMsIC5jb2wtNCwgLmNvbC01LCAuY29sLTYsIC5jb2wtNywgLmNvbC04LCAuY29sLTksIC5jb2wtMTAsIC5jb2wtMTEsIC5jb2wtMTIsIC5jb2wsIC5jb2wtYXV0bywgLmNvbC1zbS0xLCAuY29sLXNtLTIsIC5jb2wtc20tMywgLmNvbC1zbS00LCAuY29sLXNtLTUsIC5jb2wtc20tNiwgLmNvbC1zbS03LCAuY29sLXNtLTgsIC5jb2wtc20tOSwgLmNvbC1zbS0xMCwgLmNvbC1zbS0xMSwgLmNvbC1zbS0xMiwgLmNvbC1zbSwgLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLCAuY29sLW1kLWF1dG8sIC5jb2wtbGctMSwgLmNvbC1sZy0yLCAuY29sLWxnLTMsIC5jb2wtbGctNCwgLmNvbC1sZy01LCAuY29sLWxnLTYsIC5jb2wtbGctNywgLmNvbC1sZy04LCAuY29sLWxnLTksIC5jb2wtbGctMTAsIC5jb2wtbGctMTEsIC5jb2wtbGctMTIsIC5jb2wtbGcsIC5jb2wtbGctYXV0bywgLmNvbC14bC0xLCAuY29sLXhsLTIsIC5jb2wteGwtMywgLmNvbC14bC00LCAuY29sLXhsLTUsIC5jb2wteGwtNiwgLmNvbC14bC03LCAuY29sLXhsLTgsIC5jb2wteGwtOSwgLmNvbC14bC0xMCwgLmNvbC14bC0xMSwgLmNvbC14bC0xMiwgLmNvbC14bCwgLmNvbC14bC1hdXRvIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXdpZHRoOiAxMDAlOwoJbWluLWhlaWdodDogMXB4OwoJcGFkZGluZy1yaWdodDogMTVweDsKCXBhZGRpbmctbGVmdDogMTVweDsKfQoKLmNvbCB7CgktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCWZsZXgtYmFzaXM6IDA7CgktbXMtZmxleC1wb3NpdGl2ZTogMTsKCWZsZXgtZ3JvdzogMTsKCW1heC13aWR0aDogMTAwJTsKfQoKLmNvbC1hdXRvIHsKCS1tcy1mbGV4OiAwIDAgYXV0bzsKCWZsZXg6IDAgMCBhdXRvOwoJd2lkdGg6IGF1dG87CgltYXgtd2lkdGg6IG5vbmU7Cn0KCi5jb2wtMSB7CgktbXMtZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CglmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCW1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKfQoKLmNvbC0yIHsKCS1tcy1mbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwp9CgouY29sLTMgewoJLW1zLWZsZXg6IDAgMCAyNSU7CglmbGV4OiAwIDAgMjUlOwoJbWF4LXdpZHRoOiAyNSU7Cn0KCi5jb2wtNCB7CgktbXMtZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKfQoKLmNvbC01IHsKCS1tcy1mbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwp9CgouY29sLTYgewoJLW1zLWZsZXg6IDAgMCA1MCU7CglmbGV4OiAwIDAgNTAlOwoJbWF4LXdpZHRoOiA1MCU7Cn0KCi5jb2wtNyB7CgktbXMtZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKfQoKLmNvbC04IHsKCS1tcy1mbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwp9CgouY29sLTkgewoJLW1zLWZsZXg6IDAgMCA3NSU7CglmbGV4OiAwIDAgNzUlOwoJbWF4LXdpZHRoOiA3NSU7Cn0KCi5jb2wtMTAgewoJLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCW1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7Cn0KCi5jb2wtMTEgewoJLW1zLWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCW1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7Cn0KCi5jb2wtMTIgewoJLW1zLWZsZXg6IDAgMCAxMDAlOwoJZmxleDogMCAwIDEwMCU7CgltYXgtd2lkdGg6IDEwMCU7Cn0KCi5vcmRlci1maXJzdCB7CgktbXMtZmxleC1vcmRlcjogLTE7CglvcmRlcjogLTE7Cn0KCi5vcmRlci1sYXN0IHsKCS1tcy1mbGV4LW9yZGVyOiAxMzsKCW9yZGVyOiAxMzsKfQoKLm9yZGVyLTAgewoJLW1zLWZsZXgtb3JkZXI6IDA7CglvcmRlcjogMDsKfQoKLm9yZGVyLTEgewoJLW1zLWZsZXgtb3JkZXI6IDE7CglvcmRlcjogMTsKfQoKLm9yZGVyLTIgewoJLW1zLWZsZXgtb3JkZXI6IDI7CglvcmRlcjogMjsKfQoKLm9yZGVyLTMgewoJLW1zLWZsZXgtb3JkZXI6IDM7CglvcmRlcjogMzsKfQoKLm9yZGVyLTQgewoJLW1zLWZsZXgtb3JkZXI6IDQ7CglvcmRlcjogNDsKfQoKLm9yZGVyLTUgewoJLW1zLWZsZXgtb3JkZXI6IDU7CglvcmRlcjogNTsKfQoKLm9yZGVyLTYgewoJLW1zLWZsZXgtb3JkZXI6IDY7CglvcmRlcjogNjsKfQoKLm9yZGVyLTcgewoJLW1zLWZsZXgtb3JkZXI6IDc7CglvcmRlcjogNzsKfQoKLm9yZGVyLTggewoJLW1zLWZsZXgtb3JkZXI6IDg7CglvcmRlcjogODsKfQoKLm9yZGVyLTkgewoJLW1zLWZsZXgtb3JkZXI6IDk7CglvcmRlcjogOTsKfQoKLm9yZGVyLTEwIHsKCS1tcy1mbGV4LW9yZGVyOiAxMDsKCW9yZGVyOiAxMDsKfQoKLm9yZGVyLTExIHsKCS1tcy1mbGV4LW9yZGVyOiAxMTsKCW9yZGVyOiAxMTsKfQoKLm9yZGVyLTEyIHsKCS1tcy1mbGV4LW9yZGVyOiAxMjsKCW9yZGVyOiAxMjsKfQoKLm9mZnNldC0xIHsKCW1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwp9Cgoub2Zmc2V0LTIgewoJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwp9Cgoub2Zmc2V0LTMgewoJbWFyZ2luLWxlZnQ6IDI1JTsKfQoKLm9mZnNldC00IHsKCW1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKfQoKLm9mZnNldC01IHsKCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKfQoKLm9mZnNldC02IHsKCW1hcmdpbi1sZWZ0OiA1MCU7Cn0KCi5vZmZzZXQtNyB7CgltYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cn0KCi5vZmZzZXQtOCB7CgltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cn0KCi5vZmZzZXQtOSB7CgltYXJnaW4tbGVmdDogNzUlOwp9Cgoub2Zmc2V0LTEwIHsKCW1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKfQoKLm9mZnNldC0xMSB7CgltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewoJLmNvbC1zbSB7CgkJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7CgkJZmxleC1iYXNpczogMDsKCQktbXMtZmxleC1wb3NpdGl2ZTogMTsKCQlmbGV4LWdyb3c6IDE7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkuY29sLXNtLWF1dG8gewoJCS1tcy1mbGV4OiAwIDAgYXV0bzsKCQlmbGV4OiAwIDAgYXV0bzsKCQl3aWR0aDogYXV0bzsKCQltYXgtd2lkdGg6IG5vbmU7Cgl9CgkKCS5jb2wtc20tMSB7CgkJLW1zLWZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS0yIHsKCQktbXMtZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTMgewoJCS1tcy1mbGV4OiAwIDAgMjUlOwoJCWZsZXg6IDAgMCAyNSU7CgkJbWF4LXdpZHRoOiAyNSU7Cgl9CgkKCS5jb2wtc20tNCB7CgkJLW1zLWZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS01IHsKCQktbXMtZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTYgewoJCS1tcy1mbGV4OiAwIDAgNTAlOwoJCWZsZXg6IDAgMCA1MCU7CgkJbWF4LXdpZHRoOiA1MCU7Cgl9CgkKCS5jb2wtc20tNyB7CgkJLW1zLWZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS04IHsKCQktbXMtZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTkgewoJCS1tcy1mbGV4OiAwIDAgNzUlOwoJCWZsZXg6IDAgMCA3NSU7CgkJbWF4LXdpZHRoOiA3NSU7Cgl9CgkKCS5jb2wtc20tMTAgewoJCS1tcy1mbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtc20tMTEgewoJCS1tcy1mbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtc20tMTIgewoJCS1tcy1mbGV4OiAwIDAgMTAwJTsKCQlmbGV4OiAwIDAgMTAwJTsKCQltYXgtd2lkdGg6IDEwMCU7Cgl9CgkKCS5vcmRlci1zbS1maXJzdCB7CgkJLW1zLWZsZXgtb3JkZXI6IC0xOwoJCW9yZGVyOiAtMTsKCX0KCQoJLm9yZGVyLXNtLWxhc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAxMzsKCQlvcmRlcjogMTM7Cgl9CgkKCS5vcmRlci1zbS0wIHsKCQktbXMtZmxleC1vcmRlcjogMDsKCQlvcmRlcjogMDsKCX0KCQoJLm9yZGVyLXNtLTEgewoJCS1tcy1mbGV4LW9yZGVyOiAxOwoJCW9yZGVyOiAxOwoJfQoJCgkub3JkZXItc20tMiB7CgkJLW1zLWZsZXgtb3JkZXI6IDI7CgkJb3JkZXI6IDI7Cgl9CgkKCS5vcmRlci1zbS0zIHsKCQktbXMtZmxleC1vcmRlcjogMzsKCQlvcmRlcjogMzsKCX0KCQoJLm9yZGVyLXNtLTQgewoJCS1tcy1mbGV4LW9yZGVyOiA0OwoJCW9yZGVyOiA0OwoJfQoJCgkub3JkZXItc20tNSB7CgkJLW1zLWZsZXgtb3JkZXI6IDU7CgkJb3JkZXI6IDU7Cgl9CgkKCS5vcmRlci1zbS02IHsKCQktbXMtZmxleC1vcmRlcjogNjsKCQlvcmRlcjogNjsKCX0KCQoJLm9yZGVyLXNtLTcgewoJCS1tcy1mbGV4LW9yZGVyOiA3OwoJCW9yZGVyOiA3OwoJfQoJCgkub3JkZXItc20tOCB7CgkJLW1zLWZsZXgtb3JkZXI6IDg7CgkJb3JkZXI6IDg7Cgl9CgkKCS5vcmRlci1zbS05IHsKCQktbXMtZmxleC1vcmRlcjogOTsKCQlvcmRlcjogOTsKCX0KCQoJLm9yZGVyLXNtLTEwIHsKCQktbXMtZmxleC1vcmRlcjogMTA7CgkJb3JkZXI6IDEwOwoJfQoJCgkub3JkZXItc20tMTEgewoJCS1tcy1mbGV4LW9yZGVyOiAxMTsKCQlvcmRlcjogMTE7Cgl9CgkKCS5vcmRlci1zbS0xMiB7CgkJLW1zLWZsZXgtb3JkZXI6IDEyOwoJCW9yZGVyOiAxMjsKCX0KCQoJLm9mZnNldC1zbS0wIHsKCQltYXJnaW4tbGVmdDogMDsKCX0KCQoJLm9mZnNldC1zbS0xIHsKCQltYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1zbS0yIHsKCQltYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtc20tMyB7CgkJbWFyZ2luLWxlZnQ6IDI1JTsKCX0KCQoJLm9mZnNldC1zbS00IHsKCQltYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtc20tNSB7CgkJbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LXNtLTYgewoJCW1hcmdpbi1sZWZ0OiA1MCU7Cgl9CgkKCS5vZmZzZXQtc20tNyB7CgkJbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXNtLTggewoJCW1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1zbS05IHsKCQltYXJnaW4tbGVmdDogNzUlOwoJfQoJCgkub2Zmc2V0LXNtLTEwIHsKCQltYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtc20tMTEgewoJCW1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkuY29sLW1kIHsKCQktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCQlmbGV4LWJhc2lzOiAwOwoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxOwoJCWZsZXgtZ3JvdzogMTsKCQltYXgtd2lkdGg6IDEwMCU7Cgl9CgkKCS5jb2wtbWQtYXV0byB7CgkJLW1zLWZsZXg6IDAgMCBhdXRvOwoJCWZsZXg6IDAgMCBhdXRvOwoJCXdpZHRoOiBhdXRvOwoJCW1heC13aWR0aDogbm9uZTsKCX0KCQoJLmNvbC1tZC0xIHsKCQktbXMtZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA4LjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTIgewoJCS1tcy1mbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogMTYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtMyB7CgkJLW1zLWZsZXg6IDAgMCAyNSU7CgkJZmxleDogMCAwIDI1JTsKCQltYXgtd2lkdGg6IDI1JTsKCX0KCQoJLmNvbC1tZC00IHsKCQktbXMtZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTUgewoJCS1tcy1mbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogNDEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtNiB7CgkJLW1zLWZsZXg6IDAgMCA1MCU7CgkJZmxleDogMCAwIDUwJTsKCQltYXgtd2lkdGg6IDUwJTsKCX0KCQoJLmNvbC1tZC03IHsKCQktbXMtZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDU4LjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTggewoJCS1tcy1mbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtOSB7CgkJLW1zLWZsZXg6IDAgMCA3NSU7CgkJZmxleDogMCAwIDc1JTsKCQltYXgtd2lkdGg6IDc1JTsKCX0KCQoJLmNvbC1tZC0xMCB7CgkJLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA4My4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1tZC0xMSB7CgkJLW1zLWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA5MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1tZC0xMiB7CgkJLW1zLWZsZXg6IDAgMCAxMDAlOwoJCWZsZXg6IDAgMCAxMDAlOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLm9yZGVyLW1kLWZpcnN0IHsKCQktbXMtZmxleC1vcmRlcjogLTE7CgkJb3JkZXI6IC0xOwoJfQoJCgkub3JkZXItbWQtbGFzdCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEzOwoJCW9yZGVyOiAxMzsKCX0KCQoJLm9yZGVyLW1kLTAgewoJCS1tcy1mbGV4LW9yZGVyOiAwOwoJCW9yZGVyOiAwOwoJfQoJCgkub3JkZXItbWQtMSB7CgkJLW1zLWZsZXgtb3JkZXI6IDE7CgkJb3JkZXI6IDE7Cgl9CgkKCS5vcmRlci1tZC0yIHsKCQktbXMtZmxleC1vcmRlcjogMjsKCQlvcmRlcjogMjsKCX0KCQoJLm9yZGVyLW1kLTMgewoJCS1tcy1mbGV4LW9yZGVyOiAzOwoJCW9yZGVyOiAzOwoJfQoJCgkub3JkZXItbWQtNCB7CgkJLW1zLWZsZXgtb3JkZXI6IDQ7CgkJb3JkZXI6IDQ7Cgl9CgkKCS5vcmRlci1tZC01IHsKCQktbXMtZmxleC1vcmRlcjogNTsKCQlvcmRlcjogNTsKCX0KCQoJLm9yZGVyLW1kLTYgewoJCS1tcy1mbGV4LW9yZGVyOiA2OwoJCW9yZGVyOiA2OwoJfQoJCgkub3JkZXItbWQtNyB7CgkJLW1zLWZsZXgtb3JkZXI6IDc7CgkJb3JkZXI6IDc7Cgl9CgkKCS5vcmRlci1tZC04IHsKCQktbXMtZmxleC1vcmRlcjogODsKCQlvcmRlcjogODsKCX0KCQoJLm9yZGVyLW1kLTkgewoJCS1tcy1mbGV4LW9yZGVyOiA5OwoJCW9yZGVyOiA5OwoJfQoJCgkub3JkZXItbWQtMTAgewoJCS1tcy1mbGV4LW9yZGVyOiAxMDsKCQlvcmRlcjogMTA7Cgl9CgkKCS5vcmRlci1tZC0xMSB7CgkJLW1zLWZsZXgtb3JkZXI6IDExOwoJCW9yZGVyOiAxMTsKCX0KCQoJLm9yZGVyLW1kLTEyIHsKCQktbXMtZmxleC1vcmRlcjogMTI7CgkJb3JkZXI6IDEyOwoJfQoJCgkub2Zmc2V0LW1kLTAgewoJCW1hcmdpbi1sZWZ0OiAwOwoJfQoJCgkub2Zmc2V0LW1kLTEgewoJCW1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LW1kLTIgewoJCW1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1tZC0zIHsKCQltYXJnaW4tbGVmdDogMjUlOwoJfQoJCgkub2Zmc2V0LW1kLTQgewoJCW1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1tZC01IHsKCQltYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtbWQtNiB7CgkJbWFyZ2luLWxlZnQ6IDUwJTsKCX0KCQoJLm9mZnNldC1tZC03IHsKCQltYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtbWQtOCB7CgkJbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LW1kLTkgewoJCW1hcmdpbi1sZWZ0OiA3NSU7Cgl9CgkKCS5vZmZzZXQtbWQtMTAgewoJCW1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1tZC0xMSB7CgkJbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclOwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKCS5jb2wtbGcgewoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwoJCWZsZXgtYmFzaXM6IDA7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDE7CgkJZmxleC1ncm93OiAxOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLmNvbC1sZy1hdXRvIHsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJd2lkdGg6IGF1dG87CgkJbWF4LXdpZHRoOiBub25lOwoJfQoJCgkuY29sLWxnLTEgewoJCS1tcy1mbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctMiB7CgkJLW1zLWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy0zIHsKCQktbXMtZmxleDogMCAwIDI1JTsKCQlmbGV4OiAwIDAgMjUlOwoJCW1heC13aWR0aDogMjUlOwoJfQoJCgkuY29sLWxnLTQgewoJCS1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctNSB7CgkJLW1zLWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy02IHsKCQktbXMtZmxleDogMCAwIDUwJTsKCQlmbGV4OiAwIDAgNTAlOwoJCW1heC13aWR0aDogNTAlOwoJfQoJCgkuY29sLWxnLTcgewoJCS1tcy1mbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctOCB7CgkJLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy05IHsKCQktbXMtZmxleDogMCAwIDc1JTsKCQlmbGV4OiAwIDAgNzUlOwoJCW1heC13aWR0aDogNzUlOwoJfQoJCgkuY29sLWxnLTEwIHsKCQktbXMtZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLWxnLTExIHsKCQktbXMtZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLWxnLTEyIHsKCQktbXMtZmxleDogMCAwIDEwMCU7CgkJZmxleDogMCAwIDEwMCU7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkub3JkZXItbGctZmlyc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAtMTsKCQlvcmRlcjogLTE7Cgl9CgkKCS5vcmRlci1sZy1sYXN0IHsKCQktbXMtZmxleC1vcmRlcjogMTM7CgkJb3JkZXI6IDEzOwoJfQoJCgkub3JkZXItbGctMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDA7CgkJb3JkZXI6IDA7Cgl9CgkKCS5vcmRlci1sZy0xIHsKCQktbXMtZmxleC1vcmRlcjogMTsKCQlvcmRlcjogMTsKCX0KCQoJLm9yZGVyLWxnLTIgewoJCS1tcy1mbGV4LW9yZGVyOiAyOwoJCW9yZGVyOiAyOwoJfQoJCgkub3JkZXItbGctMyB7CgkJLW1zLWZsZXgtb3JkZXI6IDM7CgkJb3JkZXI6IDM7Cgl9CgkKCS5vcmRlci1sZy00IHsKCQktbXMtZmxleC1vcmRlcjogNDsKCQlvcmRlcjogNDsKCX0KCQoJLm9yZGVyLWxnLTUgewoJCS1tcy1mbGV4LW9yZGVyOiA1OwoJCW9yZGVyOiA1OwoJfQoJCgkub3JkZXItbGctNiB7CgkJLW1zLWZsZXgtb3JkZXI6IDY7CgkJb3JkZXI6IDY7Cgl9CgkKCS5vcmRlci1sZy03IHsKCQktbXMtZmxleC1vcmRlcjogNzsKCQlvcmRlcjogNzsKCX0KCQoJLm9yZGVyLWxnLTggewoJCS1tcy1mbGV4LW9yZGVyOiA4OwoJCW9yZGVyOiA4OwoJfQoJCgkub3JkZXItbGctOSB7CgkJLW1zLWZsZXgtb3JkZXI6IDk7CgkJb3JkZXI6IDk7Cgl9CgkKCS5vcmRlci1sZy0xMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEwOwoJCW9yZGVyOiAxMDsKCX0KCQoJLm9yZGVyLWxnLTExIHsKCQktbXMtZmxleC1vcmRlcjogMTE7CgkJb3JkZXI6IDExOwoJfQoJCgkub3JkZXItbGctMTIgewoJCS1tcy1mbGV4LW9yZGVyOiAxMjsKCQlvcmRlcjogMTI7Cgl9CgkKCS5vZmZzZXQtbGctMCB7CgkJbWFyZ2luLWxlZnQ6IDA7Cgl9CgkKCS5vZmZzZXQtbGctMSB7CgkJbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtbGctMiB7CgkJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LWxnLTMgewoJCW1hcmdpbi1sZWZ0OiAyNSU7Cgl9CgkKCS5vZmZzZXQtbGctNCB7CgkJbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LWxnLTUgewoJCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1sZy02IHsKCQltYXJnaW4tbGVmdDogNTAlOwoJfQoJCgkub2Zmc2V0LWxnLTcgewoJCW1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1sZy04IHsKCQltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtbGctOSB7CgkJbWFyZ2luLWxlZnQ6IDc1JTsKCX0KCQoJLm9mZnNldC1sZy0xMCB7CgkJbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LWxnLTExIHsKCQltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKCS5jb2wteGwgewoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwoJCWZsZXgtYmFzaXM6IDA7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDE7CgkJZmxleC1ncm93OiAxOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLmNvbC14bC1hdXRvIHsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJd2lkdGg6IGF1dG87CgkJbWF4LXdpZHRoOiBub25lOwoJfQoJCgkuY29sLXhsLTEgewoJCS1tcy1mbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtMiB7CgkJLW1zLWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC0zIHsKCQktbXMtZmxleDogMCAwIDI1JTsKCQlmbGV4OiAwIDAgMjUlOwoJCW1heC13aWR0aDogMjUlOwoJfQoJCgkuY29sLXhsLTQgewoJCS1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtNSB7CgkJLW1zLWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC02IHsKCQktbXMtZmxleDogMCAwIDUwJTsKCQlmbGV4OiAwIDAgNTAlOwoJCW1heC13aWR0aDogNTAlOwoJfQoJCgkuY29sLXhsLTcgewoJCS1tcy1mbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtOCB7CgkJLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC05IHsKCQktbXMtZmxleDogMCAwIDc1JTsKCQlmbGV4OiAwIDAgNzUlOwoJCW1heC13aWR0aDogNzUlOwoJfQoJCgkuY29sLXhsLTEwIHsKCQktbXMtZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLXhsLTExIHsKCQktbXMtZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXhsLTEyIHsKCQktbXMtZmxleDogMCAwIDEwMCU7CgkJZmxleDogMCAwIDEwMCU7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkub3JkZXIteGwtZmlyc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAtMTsKCQlvcmRlcjogLTE7Cgl9CgkKCS5vcmRlci14bC1sYXN0IHsKCQktbXMtZmxleC1vcmRlcjogMTM7CgkJb3JkZXI6IDEzOwoJfQoJCgkub3JkZXIteGwtMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDA7CgkJb3JkZXI6IDA7Cgl9CgkKCS5vcmRlci14bC0xIHsKCQktbXMtZmxleC1vcmRlcjogMTsKCQlvcmRlcjogMTsKCX0KCQoJLm9yZGVyLXhsLTIgewoJCS1tcy1mbGV4LW9yZGVyOiAyOwoJCW9yZGVyOiAyOwoJfQoJCgkub3JkZXIteGwtMyB7CgkJLW1zLWZsZXgtb3JkZXI6IDM7CgkJb3JkZXI6IDM7Cgl9CgkKCS5vcmRlci14bC00IHsKCQktbXMtZmxleC1vcmRlcjogNDsKCQlvcmRlcjogNDsKCX0KCQoJLm9yZGVyLXhsLTUgewoJCS1tcy1mbGV4LW9yZGVyOiA1OwoJCW9yZGVyOiA1OwoJfQoJCgkub3JkZXIteGwtNiB7CgkJLW1zLWZsZXgtb3JkZXI6IDY7CgkJb3JkZXI6IDY7Cgl9CgkKCS5vcmRlci14bC03IHsKCQktbXMtZmxleC1vcmRlcjogNzsKCQlvcmRlcjogNzsKCX0KCQoJLm9yZGVyLXhsLTggewoJCS1tcy1mbGV4LW9yZGVyOiA4OwoJCW9yZGVyOiA4OwoJfQoJCgkub3JkZXIteGwtOSB7CgkJLW1zLWZsZXgtb3JkZXI6IDk7CgkJb3JkZXI6IDk7Cgl9CgkKCS5vcmRlci14bC0xMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEwOwoJCW9yZGVyOiAxMDsKCX0KCQoJLm9yZGVyLXhsLTExIHsKCQktbXMtZmxleC1vcmRlcjogMTE7CgkJb3JkZXI6IDExOwoJfQoJCgkub3JkZXIteGwtMTIgewoJCS1tcy1mbGV4LW9yZGVyOiAxMjsKCQlvcmRlcjogMTI7Cgl9CgkKCS5vZmZzZXQteGwtMCB7CgkJbWFyZ2luLWxlZnQ6IDA7Cgl9CgkKCS5vZmZzZXQteGwtMSB7CgkJbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQteGwtMiB7CgkJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LXhsLTMgewoJCW1hcmdpbi1sZWZ0OiAyNSU7Cgl9CgkKCS5vZmZzZXQteGwtNCB7CgkJbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXhsLTUgewoJCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC14bC02IHsKCQltYXJnaW4tbGVmdDogNTAlOwoJfQoJCgkub2Zmc2V0LXhsLTcgewoJCW1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC14bC04IHsKCQltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQteGwtOSB7CgkJbWFyZ2luLWxlZnQ6IDc1JTsKCX0KCQoJLm9mZnNldC14bC0xMCB7CgkJbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXhsLTExIHsKCQltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cgl9Cn0KCi50YWJsZSB7Cgl3aWR0aDogMTAwJTsKCW1hcmdpbi1ib3R0b206IDFyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLnRhYmxlIHRoLCAudGFibGUgdGQgewoJcGFkZGluZzogLjc1cmVtOwoJdmVydGljYWwtYWxpZ246IHRvcDsKCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGhlYWQgdGggewoJdmVydGljYWwtYWxpZ246IGJvdHRvbTsKCWJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGJvZHkgKyB0Ym9keSB7Cglib3JkZXItdG9wOiAycHggc29saWQgI2RlZTJlNjsKfQoKLnRhYmxlIC50YWJsZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoudGFibGUtc20gdGgsIC50YWJsZS1zbSB0ZCB7CglwYWRkaW5nOiAuM3JlbTsKfQoKLnRhYmxlLWJvcmRlcmVkIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRkIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRkIHsKCWJvcmRlci1ib3R0b20td2lkdGg6IDJweDsKfQoKLnRhYmxlLWJvcmRlcmxlc3MgdGgsIC50YWJsZS1ib3JkZXJsZXNzIHRkLCAudGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmxlc3MgdGJvZHkgKyB0Ym9keSB7Cglib3JkZXI6IDA7Cn0KCi50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDUpOwp9CgoudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDc1KTsKfQoKLnRhYmxlLXByaW1hcnksIC50YWJsZS1wcmltYXJ5ID4gdGgsIC50YWJsZS1wcmltYXJ5ID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOWVjZGZmOwp9CgoudGFibGUtc2Vjb25kYXJ5LCAudGFibGUtc2Vjb25kYXJ5ID4gdGgsIC50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGRiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzhjY2NmOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KCi50YWJsZS1zdWNjZXNzLCAudGFibGUtc3VjY2VzcyA+IHRoLCAudGFibGUtc3VjY2VzcyA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1zdWNjZXNzOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLnRhYmxlLWluZm8sIC50YWJsZS1pbmZvID4gdGgsIC50YWJsZS1pbmZvID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9CgoudGFibGUtd2FybmluZywgLnRhYmxlLXdhcm5pbmcgPiB0aCwgLnRhYmxlLXdhcm5pbmcgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZWJhOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmU3YTA7Cn0KCi50YWJsZS1kYW5nZXIsIC50YWJsZS1kYW5nZXIgPiB0aCwgLnRhYmxlLWRhbmdlciA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNmMWIxYjc7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoKLnRhYmxlLWxpZ2h0LCAudGFibGUtbGlnaHQgPiB0aCwgLnRhYmxlLWxpZ2h0ID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoudGFibGUtZGFyaywgLnRhYmxlLWRhcmsgPiB0aCwgLnRhYmxlLWRhcmsgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzZjOGNhOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNiOWJiYmQ7Cn0KCi50YWJsZS1hY3RpdmUsIC50YWJsZS1hY3RpdmUgPiB0aCwgLnRhYmxlLWFjdGl2ZSA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA3NSk7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA3NSk7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDc1KTsKfQoKLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKCWJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoKLnRhYmxlIC50aGVhZC1saWdodCB0aCB7Cgljb2xvcjogIzQ5NTA1NzsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KCi50YWJsZS1kYXJrIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKfQoKLnRhYmxlLWRhcmsgdGgsIC50YWJsZS1kYXJrIHRkLCAudGFibGUtZGFyayB0aGVhZCB0aCB7Cglib3JkZXItY29sb3I6ICMzMjM4M2U7Cn0KCi50YWJsZS1kYXJrLnRhYmxlLWJvcmRlcmVkIHsKCWJvcmRlcjogMDsKfQoKLnRhYmxlLWRhcmsudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA1KTsKfQoKLnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDc1KTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7CgkudGFibGUtcmVzcG9uc2l2ZS1zbSB7CgkJZGlzcGxheTogYmxvY2s7CgkJd2lkdGg6IDEwMCU7CgkJb3ZlcmZsb3cteDogYXV0bzsKCQktd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CgkJLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7Cgl9CgkKCS50YWJsZS1yZXNwb25zaXZlLXNtID4gLnRhYmxlLWJvcmRlcmVkIHsKCQlib3JkZXI6IDA7Cgl9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewoJLnRhYmxlLXJlc3BvbnNpdmUtbWQgewoJCWRpc3BsYXk6IGJsb2NrOwoJCXdpZHRoOiAxMDAlOwoJCW92ZXJmbG93LXg6IGF1dG87CgkJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoJCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwoJfQoJCgkudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7CgkJYm9yZGVyOiAwOwoJfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKCS50YWJsZS1yZXNwb25zaXZlLWxnIHsKCQlkaXNwbGF5OiBibG9jazsKCQl3aWR0aDogMTAwJTsKCQlvdmVyZmxvdy14OiBhdXRvOwoJCS13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCQktbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKCX0KCQoJLnRhYmxlLXJlc3BvbnNpdmUtbGcgPiAudGFibGUtYm9yZGVyZWQgewoJCWJvcmRlcjogMDsKCX0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewoJLnRhYmxlLXJlc3BvbnNpdmUteGwgewoJCWRpc3BsYXk6IGJsb2NrOwoJCXdpZHRoOiAxMDAlOwoJCW92ZXJmbG93LXg6IGF1dG87CgkJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoJCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwoJfQoJCgkudGFibGUtcmVzcG9uc2l2ZS14bCA+IC50YWJsZS1ib3JkZXJlZCB7CgkJYm9yZGVyOiAwOwoJfQp9CgoudGFibGUtcmVzcG9uc2l2ZSB7CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxMDAlOwoJb3ZlcmZsb3cteDogYXV0bzsKCS13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwp9CgoudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7Cglib3JkZXI6IDA7Cn0KCi5mb3JtLWNvbnRyb2wgewoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJZm9udC1zaXplOiAxcmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCS13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKCWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Cglib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmZvcm0tY29udHJvbCB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmQgewoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXI6IDA7Cn0KCi5mb3JtLWNvbnRyb2w6Zm9jdXMgewoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyLWNvbG9yOiAjODBiZGZmOwoJb3V0bGluZTogMDsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIgewoJY29sb3I6ICM2Yzc1N2Q7CglvcGFjaXR5OiAxOwp9CgouZm9ybS1jb250cm9sOmRpc2FibGVkLCAuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwoJb3BhY2l0eTogMTsKfQoKc2VsZWN0LmZvcm0tY29udHJvbDpmb2N1czo6LW1zLXZhbHVlIHsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmZvcm0tY29udHJvbC1maWxlLCAuZm9ybS1jb250cm9sLXJhbmdlIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7Cn0KCi5jb2wtZm9ybS1sYWJlbCB7CglwYWRkaW5nLXRvcDogY2FsYyguMzc1cmVtICsgMXB4KTsKCXBhZGRpbmctYm90dG9tOiBjYWxjKC4zNzVyZW0gKyAxcHgpOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogaW5oZXJpdDsKCWxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5jb2wtZm9ybS1sYWJlbC1sZyB7CglwYWRkaW5nLXRvcDogY2FsYyguNXJlbSArIDFweCk7CglwYWRkaW5nLWJvdHRvbTogY2FsYyguNXJlbSArIDFweCk7Cglmb250LXNpemU6IDEuMjVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgouY29sLWZvcm0tbGFiZWwtc20gewoJcGFkZGluZy10b3A6IGNhbGMoLjI1cmVtICsgMXB4KTsKCXBhZGRpbmctYm90dG9tOiBjYWxjKC4yNXJlbSArIDFweCk7Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgouZm9ybS1jb250cm9sLXBsYWludGV4dCB7CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxMDAlOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCW1hcmdpbi1ib3R0b206IDA7CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItd2lkdGg6IDFweCAwOwp9CgouZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc20sIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZyB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwp9CgouZm9ybS1jb250cm9sLXNtIHsKCWhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjI1cmVtIC41cmVtOwoJZm9udC1zaXplOiAuODc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4ycmVtOwp9CgouZm9ybS1jb250cm9sLWxnIHsKCWhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgpzZWxlY3QuZm9ybS1jb250cm9sW3NpemVdLCBzZWxlY3QuZm9ybS1jb250cm9sW211bHRpcGxlXSB7CgloZWlnaHQ6IGF1dG87Cn0KCnRleHRhcmVhLmZvcm0tY29udHJvbCB7CgloZWlnaHQ6IGF1dG87Cn0KCi5mb3JtLWdyb3VwIHsKCW1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5mb3JtLXRleHQgewoJZGlzcGxheTogYmxvY2s7CgltYXJnaW4tdG9wOiAuMjVyZW07Cn0KCi5mb3JtLXJvdyB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJbWFyZ2luLXJpZ2h0OiAtNXB4OwoJbWFyZ2luLWxlZnQ6IC01cHg7Cn0KCi5mb3JtLXJvdyA+IC5jb2wsIC5mb3JtLXJvdyA+IFtjbGFzcyo9ImNvbC0iXSB7CglwYWRkaW5nLXJpZ2h0OiA1cHg7CglwYWRkaW5nLWxlZnQ6IDVweDsKfQoKLmZvcm0tY2hlY2sgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nLWxlZnQ6IDEuMjVyZW07Cn0KCi5mb3JtLWNoZWNrLWlucHV0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCW1hcmdpbi10b3A6IC4zcmVtOwoJbWFyZ2luLWxlZnQ6IC0xLjI1cmVtOwp9CgouZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKCWNvbG9yOiAjNmM3NTdkOwp9CgouZm9ybS1jaGVjay1sYWJlbCB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouZm9ybS1jaGVjay1pbmxpbmUgewoJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKCWRpc3BsYXk6IGlubGluZS1mbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CglwYWRkaW5nLWxlZnQ6IDA7CgltYXJnaW4tcmlnaHQ6IC43NXJlbTsKfQoKLmZvcm0tY2hlY2staW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKCXBvc2l0aW9uOiBzdGF0aWM7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLXJpZ2h0OiAuMzEyNXJlbTsKCW1hcmdpbi1sZWZ0OiAwOwp9CgoudmFsaWQtZmVlZGJhY2sgewoJZGlzcGxheTogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogLjI1cmVtOwoJZm9udC1zaXplOiA4MCU7Cgljb2xvcjogIzI4YTc0NTsKfQoKLnZhbGlkLXRvb2x0aXAgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAxMDAlOwoJei1pbmRleDogNTsKCWRpc3BsYXk6IG5vbmU7CgltYXgtd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07CgltYXJnaW4tdG9wOiAuMXJlbTsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCWxpbmUtaGVpZ2h0OiAxLjU7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoNDAsIDE2NywgNjksIC45KTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewoJY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNzFkZDhhOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMzNGNlNTc7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cglib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjI1KTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjI1KTsKfQoKLmludmFsaWQtZmVlZGJhY2sgewoJZGlzcGxheTogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogLjI1cmVtOwoJZm9udC1zaXplOiA4MCU7Cgljb2xvcjogI2RjMzU0NTsKfQoKLmludmFsaWQtdG9vbHRpcCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDEwMCU7Cgl6LWluZGV4OiA1OwoJZGlzcGxheTogbm9uZTsKCW1heC13aWR0aDogMTAwJTsKCXBhZGRpbmc6IC4yNXJlbSAuNXJlbTsKCW1hcmdpbi10b3A6IC4xcmVtOwoJZm9udC1zaXplOiAuODc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDUzLCA2OSwgLjkpOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQsIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCwgLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLWZpbGUuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKCWNvbG9yOiAjZGMzNTQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2VmYTJhOTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAuMjUpOwp9CgouZm9ybS1pbmxpbmUgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CglmbGV4LWZsb3c6IHJvdyB3cmFwOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7Cgl3aWR0aDogMTAwJTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuZm9ybS1pbmxpbmUgbGFiZWwgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCQlkaXNwbGF5OiBmbGV4OwoJCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CgkJYWxpZ24taXRlbXM6IGNlbnRlcjsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXI7CgkJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CgkJZmxleC1mbG93OiByb3cgd3JhcDsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCQl3aWR0aDogYXV0bzsKCQl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJfQoJCgkuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbC1wbGFpbnRleHQgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCX0KCQoJLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCwgLmZvcm0taW5saW5lIC5jdXN0b20tc2VsZWN0IHsKCQl3aWR0aDogYXV0bzsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgkJLW1zLWZsZXgtcGFjazogY2VudGVyOwoJCWp1c3RpZnktY29udGVudDogY2VudGVyOwoJCXdpZHRoOiBhdXRvOwoJCXBhZGRpbmctbGVmdDogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKCQlwb3NpdGlvbjogcmVsYXRpdmU7CgkJbWFyZ2luLXRvcDogMDsKCQltYXJnaW4tcmlnaHQ6IC4yNXJlbTsKCQltYXJnaW4tbGVmdDogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbCB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCQlhbGlnbi1pdGVtczogY2VudGVyOwoJCS1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCX0KCQoJLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbC1sYWJlbCB7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KfQoKLmJ0biB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cglmb250LXdlaWdodDogNDAwOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgktbXMtdXNlci1zZWxlY3Q6IG5vbmU7CgktbW96LXVzZXItc2VsZWN0OiBub25lOwoJLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKCXVzZXItc2VsZWN0OiBub25lOwoJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CglwYWRkaW5nOiAuMzc1cmVtIC43NXJlbTsKCWZvbnQtc2l6ZTogMXJlbTsKCWxpbmUtaGVpZ2h0OiAxLjU7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cgktd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKCXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmJ0biB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5idG46aG92ZXIsIC5idG46Zm9jdXMgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouYnRuOmZvY3VzLCAuYnRuLmZvY3VzIHsKCW91dGxpbmU6IDA7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouYnRuLmRpc2FibGVkLCAuYnRuOmRpc2FibGVkIHsKCW9wYWNpdHk6IC42NTsKfQoKLmJ0bjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCmEuYnRuLmRpc2FibGVkLCBmaWVsZHNldDpkaXNhYmxlZCBhLmJ0biB7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmJ0bi1wcmltYXJ5IHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKCWJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQoKLmJ0bi1wcmltYXJ5OmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwNjlkOTsKCWJvcmRlci1jb2xvcjogIzAwNjJjYzsKfQoKLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouYnRuLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cglib3JkZXItY29sb3I6ICMwMDVjYmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5IHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1zZWNvbmRhcnk6aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNWE2MjY4OwoJYm9yZGVyLWNvbG9yOiAjNTQ1YjYyOwp9CgouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7Cglib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7Cglib3JkZXItY29sb3I6ICM0ZTU1NWI7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIC41KTsKfQoKLmJ0bi1zdWNjZXNzIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLmJ0bi1zdWNjZXNzOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODsKCWJvcmRlci1jb2xvcjogIzFlN2UzNDsKfQoKLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjUpOwp9CgouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tc3VjY2VzczpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cglib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7Cglib3JkZXItY29sb3I6ICMxYzc0MzA7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAuNSk7Cn0KCi5idG4taW5mbyB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cglib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4taW5mbzpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxMzg0OTY7Cglib3JkZXItY29sb3I6ICMxMTdhOGI7Cn0KCi5idG4taW5mbzpmb2N1cywgLmJ0bi1pbmZvLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAuNSk7Cn0KCi5idG4taW5mby5kaXNhYmxlZCwgLmJ0bi1pbmZvOmRpc2FibGVkIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKCWJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YjsKCWJvcmRlci1jb2xvcjogIzEwNzA3ZjsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAuNSk7Cn0KCi5idG4td2FybmluZyB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7Cglib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KCi5idG4td2FybmluZzpob3ZlciB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNlMGE4MDA7Cglib3JkZXItY29sb3I6ICNkMzllMDA7Cn0KCi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIC41KTsKfQoKLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwoJYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwoJYm9yZGVyLWNvbG9yOiAjYzY5NTAwOwp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgLjUpOwp9CgouYnRuLWRhbmdlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tZGFuZ2VyOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2M4MjMzMzsKCWJvcmRlci1jb2xvcjogI2JkMjEzMDsKfQoKLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC41KTsKfQoKLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKCWJvcmRlci1jb2xvcjogI2IyMWYyZDsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC41KTsKfQoKLmJ0bi1saWdodCB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cglib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tbGlnaHQ6aG92ZXIgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTJlNmVhOwoJYm9yZGVyLWNvbG9yOiAjZGFlMGU1Owp9CgouYnRuLWxpZ2h0OmZvY3VzLCAuYnRuLWxpZ2h0LmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgLjUpOwp9CgouYnRuLWxpZ2h0LmRpc2FibGVkLCAuYnRuLWxpZ2h0OmRpc2FibGVkIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNTsKCWJvcmRlci1jb2xvcjogI2QzZDlkZjsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgLjUpOwp9CgouYnRuLWRhcmsgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwoJYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiOwoJYm9yZGVyLWNvbG9yOiAjMWQyMTI0Owp9CgouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIC41KTsKfQoKLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwoJYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0OwoJYm9yZGVyLWNvbG9yOiAjMTcxYTFkOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5IHsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5OmZvY3VzLCAuYnRuLW91dGxpbmUtcHJpbWFyeS5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCB7Cgljb2xvcjogIzAwN2JmZjsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHsKCWNvbG9yOiAjNmM3NTdkOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwoJYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzIHsKCWNvbG9yOiAjMjhhNzQ1OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cglib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLCAuYnRuLW91dGxpbmUtc3VjY2Vzcy5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCB7Cgljb2xvcjogIzI4YTc0NTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjUpOwp9CgouYnRuLW91dGxpbmUtaW5mbyB7Cgljb2xvcjogIzE3YTJiODsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1vdXRsaW5lLWluZm86aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwoJYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9CgouYnRuLW91dGxpbmUtaW5mbzpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQsIC5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIHsKCWNvbG9yOiAjMTdhMmI4OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cglib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZyB7Cgljb2xvcjogI2ZmYzEwNzsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwoJYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQgewoJY29sb3I6ICNmZmMxMDc7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlciB7Cgljb2xvcjogI2RjMzU0NTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6Zm9jdXMsIC5idG4tb3V0bGluZS1kYW5nZXIuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgLjUpOwp9CgouYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkIHsKCWNvbG9yOiAjZGMzNTQ1OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodCB7Cgljb2xvcjogI2Y4ZjlmYTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVyIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHQuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWxpZ2h0OmRpc2FibGVkIHsKCWNvbG9yOiAjZjhmOWZhOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cglib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDI0OCwgMjQ5LCAyNTAsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhcmsgewoJY29sb3I6ICMzNDNhNDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cglib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KCi5idG4tb3V0bGluZS1kYXJrOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKCWJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6Zm9jdXMsIC5idG4tb3V0bGluZS1kYXJrLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgLjUpOwp9CgouYnRuLW91dGxpbmUtZGFyay5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhcms6ZGlzYWJsZWQgewoJY29sb3I6ICMzNDNhNDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKCWJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgLjUpOwp9CgouYnRuLWxpbmsgewoJZm9udC13ZWlnaHQ6IDQwMDsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tbGluazpob3ZlciB7Cgljb2xvcjogIzAwNTZiMzsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLWxpbms6Zm9jdXMsIC5idG4tbGluay5mb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3gtc2hhZG93OiBub25lOwp9CgouYnRuLWxpbms6ZGlzYWJsZWQsIC5idG4tbGluay5kaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCi5idG4tYmxvY2sgewoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKfQoKLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewoJbWFyZ2luLXRvcDogLjVyZW07Cn0KCmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywgaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssIGlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7Cgl3aWR0aDogMTAwJTsKfQoKLmZhZGUgewoJLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMgbGluZWFyOwoJdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzIGxpbmVhcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmZhZGUgewoJCS13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKCQl0cmFuc2l0aW9uOiBub25lOwoJfQp9CgouZmFkZTpub3QoLnNob3cpIHsKCW9wYWNpdHk6IDA7Cn0KCi5jb2xsYXBzZTpub3QoLnNob3cpIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5jb2xsYXBzaW5nIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWhlaWdodDogMDsKCW92ZXJmbG93OiBoaWRkZW47Cgktd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAuMzVzIGVhc2U7Cgl0cmFuc2l0aW9uOiBoZWlnaHQgLjM1cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY29sbGFwc2luZyB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5kcm9wdXAsIC5kcm9wcmlnaHQsIC5kcm9wZG93biwgLmRyb3BsZWZ0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogLjNlbSBzb2xpZDsKCWJvcmRlci1yaWdodDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b206IDA7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgewoJbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMTAwJTsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxMDAwOwoJZGlzcGxheTogbm9uZTsKCWZsb2F0OiBsZWZ0OwoJbWluLXdpZHRoOiAxMHJlbTsKCXBhZGRpbmc6IC41cmVtIDA7CgltYXJnaW46IC4xMjVyZW0gMCAwOwoJZm9udC1zaXplOiAxcmVtOwoJY29sb3I6ICMyMTI1Mjk7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJbGlzdC1zdHlsZTogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTUpOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgouZHJvcGRvd24tbWVudS1yaWdodCB7CglyaWdodDogMDsKCWxlZnQ6IGF1dG87Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLW1lbnUgewoJdG9wOiBhdXRvOwoJYm90dG9tOiAxMDAlOwoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IC4xMjVyZW07Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogMDsKCWJvcmRlci1yaWdodDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b206IC4zZW0gc29saWQ7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tbWVudSB7Cgl0b3A6IDA7CglyaWdodDogYXV0bzsKCWxlZnQ6IDEwMCU7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLWxlZnQ6IC4xMjVyZW07Cn0KCi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1yaWdodDogMDsKCWJvcmRlci1ib3R0b206IC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7Cgl2ZXJ0aWNhbC1hbGlnbjogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi1tZW51IHsKCXRvcDogMDsKCXJpZ2h0OiAxMDAlOwoJbGVmdDogYXV0bzsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tcmlnaHQ6IC4xMjVyZW07Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMDsKCWhlaWdodDogMDsKCW1hcmdpbi1sZWZ0OiAuMjU1ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogLjI1NWVtOwoJY29udGVudDogIiI7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CglkaXNwbGF5OiBub25lOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAwOwoJaGVpZ2h0OiAwOwoJbWFyZ2luLXJpZ2h0OiAuMjU1ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogLjI1NWVtOwoJY29udGVudDogIiI7Cglib3JkZXItdG9wOiAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJpZ2h0OiAuM2VtIHNvbGlkOwoJYm9yZGVyLWJvdHRvbTogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKCW1hcmdpbi1sZWZ0OiAwOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKCXZlcnRpY2FsLWFsaWduOiAwOwp9CgouZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InRvcCJdLCAuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InJpZ2h0Il0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0iYm90dG9tIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCXJpZ2h0OiBhdXRvOwoJYm90dG9tOiBhdXRvOwp9CgouZHJvcGRvd24tZGl2aWRlciB7CgloZWlnaHQ6IDA7CgltYXJnaW46IC41cmVtIDA7CglvdmVyZmxvdzogaGlkZGVuOwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOWVjZWY7Cn0KCi5kcm9wZG93bi1pdGVtIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAuMjVyZW0gMS41cmVtOwoJY2xlYXI6IGJvdGg7Cglmb250LXdlaWdodDogNDAwOwoJY29sb3I6ICMyMTI1Mjk7Cgl0ZXh0LWFsaWduOiBpbmhlcml0OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYm9yZGVyOiAwOwp9CgouZHJvcGRvd24taXRlbTpob3ZlciwgLmRyb3Bkb3duLWl0ZW06Zm9jdXMgewoJY29sb3I6ICMxNjE4MWI7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouZHJvcGRvd24taXRlbS5hY3RpdmUsIC5kcm9wZG93bi1pdGVtOmFjdGl2ZSB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5kcm9wZG93bi1pdGVtLmRpc2FibGVkLCAuZHJvcGRvd24taXRlbTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouZHJvcGRvd24tbWVudS5zaG93IHsKCWRpc3BsYXk6IGJsb2NrOwp9CgouZHJvcGRvd24taGVhZGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjVyZW0gMS41cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCWNvbG9yOiAjNmM3NTdkOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmRyb3Bkb3duLWl0ZW0tdGV4dCB7CglkaXNwbGF5OiBibG9jazsKCXBhZGRpbmc6IC4yNXJlbSAxLjVyZW07Cgljb2xvcjogIzIxMjUyOTsKfQoKLmJ0bi1ncm91cCwgLmJ0bi1ncm91cC12ZXJ0aWNhbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4OwoJZGlzcGxheTogaW5saW5lLWZsZXg7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgouYnRuLWdyb3VwID4gLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDAgMSBhdXRvOwoJZmxleDogMCAxIGF1dG87Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciB7Cgl6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsIC5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7Cgl6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouYnRuLXRvb2xiYXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CgouYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHsKCXdpZHRoOiBhdXRvOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5kcm9wZG93bi10b2dnbGUtc3BsaXQgewoJcGFkZGluZy1yaWdodDogLjU2MjVyZW07CglwYWRkaW5nLWxlZnQ6IC41NjI1cmVtOwp9CgouZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwgLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwgLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmJlZm9yZSB7CgltYXJnaW4tcmlnaHQ6IDA7Cn0KCi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLXNtID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQgewoJcGFkZGluZy1yaWdodDogLjM3NXJlbTsKCXBhZGRpbmctbGVmdDogLjM3NXJlbTsKfQoKLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtbGcgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CglwYWRkaW5nLXJpZ2h0OiAuNzVyZW07CglwYWRkaW5nLWxlZnQ6IC43NXJlbTsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgktbXMtZmxleC1hbGlnbjogc3RhcnQ7CglhbGlnbi1pdGVtczogZmxleC1zdGFydDsKCS1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4sIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCB7Cgl3aWR0aDogMTAwJTsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKCW1hcmdpbi10b3A6IC0xcHg7CgltYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmlucHV0LWdyb3VwIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LXdyYXA6IHdyYXA7CglmbGV4LXdyYXA6IHdyYXA7CgktbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKCWFsaWduLWl0ZW1zOiBzdHJldGNoOwoJd2lkdGg6IDEwMCU7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87Cgl3aWR0aDogMSU7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0ICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1maWxlLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tZmlsZSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1maWxlIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOmZvY3VzLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpmb2N1cywgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cgl6LWluZGV4OiAzOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHsKCXotaW5kZXg6IDQ7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpsYXN0LWNoaWxkKSB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQsIC5pbnB1dC1ncm91cC1hcHBlbmQgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4Owp9CgouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biB7CgltYXJnaW4tbGVmdDogLTFweDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgewoJbWFyZ2luLXJpZ2h0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAtYXBwZW5kIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAtdGV4dCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJYWxpZ24taXRlbXM6IGNlbnRlcjsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogMXJlbTsKCWZvbnQtd2VpZ2h0OiA0MDA7CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICM0OTUwNTc7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9InJhZGlvIl0sIC5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewoJbWFyZ2luLXRvcDogMDsKfQoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKCWhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgouaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4gewoJaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCkgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5jdXN0b20tY29udHJvbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiBibG9jazsKCW1pbi1oZWlnaHQ6IDEuNXJlbTsKCXBhZGRpbmctbGVmdDogMS41cmVtOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5saW5lIHsKCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CglkaXNwbGF5OiBpbmxpbmUtZmxleDsKCW1hcmdpbi1yaWdodDogMXJlbTsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IC0xOwoJb3BhY2l0eTogMDsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6YWN0aXZlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICM2Yzc1N2Q7Cn0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tY29udHJvbC1sYWJlbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC4yNXJlbTsKCWxlZnQ6IC0xLjVyZW07CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxcmVtOwoJaGVpZ2h0OiAxcmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cgljb250ZW50OiAiIjsKCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKCS1tb3otdXNlci1zZWxlY3Q6IG5vbmU7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJdXNlci1zZWxlY3Q6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2Owp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogLjI1cmVtOwoJbGVmdDogLTEuNXJlbTsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07Cgljb250ZW50OiAiIjsKCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwoJYmFja2dyb3VuZC1zaXplOiA1MCUgNTAlOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIHZpZXdCb3g9XCcwIDAgOCA4XCclM0UlM0NwYXRoIGZpbGw9XCclMjNmZmZcJyBkPVwnTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2IDIuOTc0IDcuMjUgOCAyLjE5M3pcJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPVwnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcJyB2aWV3Qm94PVwnMCAwIDQgNFwnJTNFJTNDcGF0aCBzdHJva2U9XCclMjNmZmZcJyBkPVwnTTAgMmg0XCcvJTNFJTNDL3N2ZyUzRSIpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIHZpZXdCb3g9XCctNCAtNCA4IDhcJyUzRSUzQ2NpcmNsZSByPVwnM1wnIGZpbGw9XCclMjNmZmZcJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0IHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjM3NXJlbSAxLjc1cmVtIC4zNzVyZW0gLjc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWJhY2tncm91bmQ6ICNmZmYgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz1cJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCcgdmlld0JveD1cJzAgMCA0IDVcJyUzRSUzQ3BhdGggZmlsbD1cJyUyMzM0M2E0MFwnIGQ9XCdNMiAwTDAgMmg0em0wIDVMMCAzaDR6XCcvJTNFJTNDL3N2ZyUzRSIpIG5vLXJlcGVhdCByaWdodCAuNzVyZW0gY2VudGVyOwoJYmFja2dyb3VuZC1zaXplOiA4cHggMTBweDsKCWJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpmb2N1cyB7Cglib3JkZXItY29sb3I6ICM4MGJkZmY7CglvdXRsaW5lOiAwOwoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMjgsIDE4OSwgMjU1LCAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUgewoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouY3VzdG9tLXNlbGVjdFttdWx0aXBsZV0sIC5jdXN0b20tc2VsZWN0W3NpemVdOm5vdChbc2l6ZT0iMSJdKSB7CgloZWlnaHQ6IGF1dG87CglwYWRkaW5nLXJpZ2h0OiAuNzVyZW07CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHsKCW9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tc2VsZWN0LXNtIHsKCWhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCWZvbnQtc2l6ZTogNzUlOwp9CgouY3VzdG9tLXNlbGVjdC1sZyB7CgloZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCWZvbnQtc2l6ZTogMTI1JTsKfQoKLmN1c3RvbS1maWxlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmN1c3RvbS1maWxlLWlucHV0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKCW1hcmdpbjogMDsKCW9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItY29sb3I6ICM4MGJkZmY7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogIzgwYmRmZjsKfQoKLmN1c3RvbS1maWxlLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpsYW5nKGVuKSB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewoJY29udGVudDogIkJyb3dzZSI7Cn0KCi5jdXN0b20tZmlsZS1sYWJlbCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjM3NXJlbSAuNzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCXotaW5kZXg6IDM7CglkaXNwbGF5OiBibG9jazsKCWhlaWdodDogMi4yNXJlbTsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJY29udGVudDogIkJyb3dzZSI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwoJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2VkNGRhOwoJYm9yZGVyLXJhZGl1czogMCAuMjVyZW0gLjI1cmVtIDA7Cn0KCi5jdXN0b20tcmFuZ2UgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nLWxlZnQ6IDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCS1tb3otYXBwZWFyYW5jZTogbm9uZTsKCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKCWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXMgewoJb3V0bGluZTogbm9uZTsKfQoKLmN1c3RvbS1yYW5nZTpmb2N1czo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tb3otcmFuZ2UtdGh1bWIgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tcy10aHVtYiB7Cglib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjI1KTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1vei1mb2N1cy1vdXRlciB7Cglib3JkZXI6IDA7Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKCXdpZHRoOiAxcmVtOwoJaGVpZ2h0OiAxcmVtOwoJbWFyZ2luLXRvcDogLS4yNXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXI6IDA7Cglib3JkZXItcmFkaXVzOiAxcmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7Cgl0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iOmFjdGl2ZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogLjVyZW07Cgljb2xvcjogdHJhbnNwYXJlbnQ7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1yYWRpdXM6IDFyZW07Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgewoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJYm9yZGVyOiAwOwoJYm9yZGVyLXJhZGl1czogMXJlbTsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJLW1vei1hcHBlYXJhbmNlOiBub25lOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwoJYXBwZWFyYW5jZTogbm9uZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYiB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWI6YWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdHJhY2sgewoJd2lkdGg6IDEwMCU7CgloZWlnaHQ6IC41cmVtOwoJY29sb3I6IHRyYW5zcGFyZW50OwoJY3Vyc29yOiBwb2ludGVyOwoJYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItcmFkaXVzOiAxcmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLXJpZ2h0OiAuMnJlbTsKCW1hcmdpbi1sZWZ0OiAuMnJlbTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXI6IDA7Cglib3JkZXItcmFkaXVzOiAxcmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7Cgl0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewoJCS13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKCQl0cmFuc2l0aW9uOiBub25lOwoJfQp9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWI6YWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogLjVyZW07Cgljb2xvcjogdHJhbnNwYXJlbnQ7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItd2lkdGg6IC41cmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC1sb3dlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwoJYm9yZGVyLXJhZGl1czogMXJlbTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtdXBwZXIgewoJbWFyZ2luLXJpZ2h0OiAxNXB4OwoJYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKCWJvcmRlci1yYWRpdXM6IDFyZW07Cn0KCi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tc2VsZWN0IHsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0Owp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5uYXYgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IDA7CglsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2LWxpbmsgewoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwp9CgoubmF2LWxpbms6aG92ZXIsIC5uYXYtbGluazpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXYtbGluay5kaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKfQoKLm5hdi10YWJzIHsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoubmF2LXRhYnMgLm5hdi1pdGVtIHsKCW1hcmdpbi1ib3R0b206IC0xcHg7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsgewoJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyLCAubmF2LXRhYnMgLm5hdi1saW5rOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsuZGlzYWJsZWQgewoJY29sb3I6ICM2Yzc1N2Q7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXRhYnMgLm5hdi1pdGVtLnNob3cgLm5hdi1saW5rIHsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNiAjZGVlMmU2ICNmZmY7Cn0KCi5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CgltYXJnaW4tdG9wOiAtMXB4OwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgoubmF2LXBpbGxzIC5uYXYtbGluayB7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5uYXYtZmlsbCAubmF2LWl0ZW0gewoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5uYXYtanVzdGlmaWVkIC5uYXYtaXRlbSB7CgktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCWZsZXgtYmFzaXM6IDA7CgktbXMtZmxleC1wb3NpdGl2ZTogMTsKCWZsZXgtZ3JvdzogMTsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi50YWItY29udGVudCA+IC5hY3RpdmUgewoJZGlzcGxheTogYmxvY2s7Cn0KCi5uYXZiYXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJLW1zLWZsZXgtcGFjazoganVzdGlmeTsKCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKCXBhZGRpbmc6IC41cmVtIDFyZW07Cn0KCi5uYXZiYXIgPiAuY29udGFpbmVyLCAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9CgoubmF2YmFyLWJyYW5kIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXBhZGRpbmctdG9wOiAuMzEyNXJlbTsKCXBhZGRpbmctYm90dG9tOiAuMzEyNXJlbTsKCW1hcmdpbi1yaWdodDogMXJlbTsKCWZvbnQtc2l6ZTogMS4yNXJlbTsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1icmFuZDpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXZiYXItbmF2IHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IDA7CglsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJcGFkZGluZy1yaWdodDogMDsKCXBhZGRpbmctbGVmdDogMDsKfQoKLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewoJcG9zaXRpb246IHN0YXRpYzsKCWZsb2F0OiBub25lOwp9CgoubmF2YmFyLXRleHQgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZy10b3A6IC41cmVtOwoJcGFkZGluZy1ib3R0b206IC41cmVtOwp9CgoubmF2YmFyLWNvbGxhcHNlIHsKCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwoJZmxleC1iYXNpczogMTAwJTsKCS1tcy1mbGV4LXBvc2l0aXZlOiAxOwoJZmxleC1ncm93OiAxOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlciB7CglwYWRkaW5nOiAuMjVyZW0gLjc1cmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDE7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXZiYXItdG9nZ2xlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlci1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxLjVlbTsKCWhlaWdodDogMS41ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJY29udGVudDogIiI7CgliYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKCWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKCS5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkIHsKCQlwYWRkaW5nLXJpZ2h0OiAwOwoJCXBhZGRpbmctbGVmdDogMDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkubmF2YmFyLWV4cGFuZC1zbSB7CgkJLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQlmbGV4LWZsb3c6IHJvdyBub3dyYXA7CgkJLW1zLWZsZXgtcGFjazogc3RhcnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CgkJZmxleC1kaXJlY3Rpb246IHJvdzsKCX0KCQoJLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewoJCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCX0KCQoJLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbTsKCQlwYWRkaW5nLWxlZnQ6IC41cmVtOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJLW1zLWZsZXgtd3JhcDogbm93cmFwOwoJCWZsZXgtd3JhcDogbm93cmFwOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLWNvbGxhcHNlIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCQktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKCQlmbGV4LWJhc2lzOiBhdXRvOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXIgewoJCWRpc3BsYXk6IG5vbmU7Cgl9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewoJLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewoJCXBhZGRpbmctcmlnaHQ6IDA7CgkJcGFkZGluZy1sZWZ0OiAwOwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5uYXZiYXItZXhwYW5kLW1kIHsKCQktbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwoJCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQktbXMtZmxleC1wYWNrOiBzdGFydDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCQlmbGV4LWRpcmVjdGlvbjogcm93OwoJfQoJCgkubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CgkJcG9zaXRpb246IGFic29sdXRlOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJCXBhZGRpbmctbGVmdDogLjVyZW07Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXA7CgkJZmxleC13cmFwOiBub3dyYXA7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2UgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwoJCWZsZXgtYmFzaXM6IGF1dG87Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItdG9nZ2xlciB7CgkJZGlzcGxheTogbm9uZTsKCX0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CgkubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJcGFkZGluZy1yaWdodDogMDsKCQlwYWRkaW5nLWxlZnQ6IDA7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLm5hdmJhci1leHBhbmQtbGcgewoJCS1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7CgkJZmxleC1mbG93OiByb3cgbm93cmFwOwoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwoJCWZsZXgtZGlyZWN0aW9uOiByb3c7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKCQlwb3NpdGlvbjogYWJzb2x1dGU7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CgkJcGFkZGluZy1yaWdodDogLjVyZW07CgkJcGFkZGluZy1sZWZ0OiAuNXJlbTsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItZmx1aWQgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKCQlmbGV4LXdyYXA6IG5vd3JhcDsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1jb2xsYXBzZSB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CgkJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CgkJZmxleC1iYXNpczogYXV0bzsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHsKCQlkaXNwbGF5OiBub25lOwoJfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CgkubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJcGFkZGluZy1yaWdodDogMDsKCQlwYWRkaW5nLWxlZnQ6IDA7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKCS5uYXZiYXItZXhwYW5kLXhsIHsKCQktbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwoJCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQktbXMtZmxleC1wYWNrOiBzdGFydDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCQlmbGV4LWRpcmVjdGlvbjogcm93OwoJfQoJCgkubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CgkJcG9zaXRpb246IGFic29sdXRlOwoJfQoJCgkubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJCXBhZGRpbmctbGVmdDogLjVyZW07Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXA7CgkJZmxleC13cmFwOiBub3dyYXA7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItY29sbGFwc2UgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwoJCWZsZXgtYmFzaXM6IGF1dG87Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlciB7CgkJZGlzcGxheTogbm9uZTsKCX0KfQoKLm5hdmJhci1leHBhbmQgewoJLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CgoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiB7CgktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCWZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJcGFkZGluZy1sZWZ0OiAuNXJlbTsKfQoKLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQgewoJLW1zLWZsZXgtd3JhcDogbm93cmFwOwoJZmxleC13cmFwOiBub3dyYXA7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItY29sbGFwc2UgewoJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CglmbGV4LWJhc2lzOiBhdXRvOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXIgewoJZGlzcGxheTogbm9uZTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC45KTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluayB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cyB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNyk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlciB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cglib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlci1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD1cJzAgMCAzMCAzMFwnIHhtbG5zPVwnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcJyUzRSUzQ3BhdGggc3Ryb2tlPVwncmdiYSgwLCAwLCAwLCAwLjUpXCcgc3Ryb2tlLXdpZHRoPVwnMlwnIHN0cm9rZS1saW5lY2FwPVwncm91bmRcJyBzdHJva2UtbWl0ZXJsaW1pdD1cJzEwXCcgZD1cJ000IDdoMjJNNCAxNWgyMk00IDIzaDIyXCcvJTNFJTNDL3N2ZyUzRSIpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmZvY3VzIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC45KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgewoJY29sb3I6ICNmZmY7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewoJY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjc1KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZCB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMjUpOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyIHsKCWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTsKCWJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXItaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9XCcwIDAgMzAgMzBcJyB4bWxucz1cJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCclM0UlM0NwYXRoIHN0cm9rZT1cJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwnIHN0cm9rZS13aWR0aD1cJzJcJyBzdHJva2UtbGluZWNhcD1cJ3JvdW5kXCcgc3Ryb2tlLW1pdGVybGltaXQ9XCcxMFwnIGQ9XCdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMlwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYSB7Cgljb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IGE6Zm9jdXMgewoJY29sb3I6ICNmZmY7Cn0KCi5jYXJkIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCW1pbi13aWR0aDogMDsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKCWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKCWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjEyNSk7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5jYXJkID4gaHIgewoJbWFyZ2luLXJpZ2h0OiAwOwoJbWFyZ2luLWxlZnQ6IDA7Cn0KCi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgouY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5jYXJkLWJvZHkgewoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87CglwYWRkaW5nOiAxLjI1cmVtOwp9CgouY2FyZC10aXRsZSB7CgltYXJnaW4tYm90dG9tOiAuNzVyZW07Cn0KCi5jYXJkLXN1YnRpdGxlIHsKCW1hcmdpbi10b3A6IC0uMzc1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmNhcmQtdGV4dDpsYXN0LWNoaWxkIHsKCW1hcmdpbi1ib3R0b206IDA7Cn0KCi5jYXJkLWxpbms6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouY2FyZC1saW5rICsgLmNhcmQtbGluayB7CgltYXJnaW4tbGVmdDogMS4yNXJlbTsKfQoKLmNhcmQtaGVhZGVyIHsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjAzKTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4xMjUpOwp9CgouY2FyZC1oZWFkZXI6Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXJhZGl1czogY2FsYyguMjVyZW0gLSAxcHgpIGNhbGMoLjI1cmVtIC0gMXB4KSAwIDA7Cn0KCi5jYXJkLWhlYWRlciArIC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXRvcDogMDsKfQoKLmNhcmQtZm9vdGVyIHsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDMpOwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjEyNSk7Cn0KCi5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHsKCWJvcmRlci1yYWRpdXM6IDAgMCBjYWxjKC4yNXJlbSAtIDFweCkgY2FsYyguMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1oZWFkZXItdGFicyB7CgltYXJnaW4tcmlnaHQ6IC0uNjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogLS43NXJlbTsKCW1hcmdpbi1sZWZ0OiAtLjYyNXJlbTsKCWJvcmRlci1ib3R0b206IDA7Cn0KCi5jYXJkLWhlYWRlci1waWxscyB7CgltYXJnaW4tcmlnaHQ6IC0uNjI1cmVtOwoJbWFyZ2luLWxlZnQ6IC0uNjI1cmVtOwp9CgouY2FyZC1pbWctb3ZlcmxheSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWxlZnQ6IDA7CglwYWRkaW5nOiAxLjI1cmVtOwp9CgouY2FyZC1pbWcgewoJd2lkdGg6IDEwMCU7Cglib3JkZXItcmFkaXVzOiBjYWxjKC4yNXJlbSAtIDFweCk7Cn0KCi5jYXJkLWltZy10b3AgewoJd2lkdGg6IDEwMCU7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKC4yNXJlbSAtIDFweCk7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYyguMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1pbWctYm90dG9tIHsKCXdpZHRoOiAxMDAlOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGNhbGMoLjI1cmVtIC0gMXB4KTsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IGNhbGMoLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtZGVjayB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWRlY2sgLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY2FyZC1kZWNrIHsKCQktbXMtZmxleC1mbG93OiByb3cgd3JhcDsKCQlmbGV4LWZsb3c6IHJvdyB3cmFwOwoJCW1hcmdpbi1yaWdodDogLTE1cHg7CgkJbWFyZ2luLWxlZnQ6IC0xNXB4OwoJfQoJCgkuY2FyZC1kZWNrIC5jYXJkIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleDogMSAwIDAlOwoJCWZsZXg6IDEgMCAwJTsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJCW1hcmdpbi1yaWdodDogMTVweDsKCQltYXJnaW4tYm90dG9tOiAwOwoJCW1hcmdpbi1sZWZ0OiAxNXB4OwoJfQp9CgouY2FyZC1ncm91cCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWdyb3VwID4gLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY2FyZC1ncm91cCB7CgkJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CgkJZmxleC1mbG93OiByb3cgd3JhcDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CgkJLW1zLWZsZXg6IDEgMCAwJTsKCQlmbGV4OiAxIDAgMCU7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZCArIC5jYXJkIHsKCQltYXJnaW4tbGVmdDogMDsKCQlib3JkZXItbGVmdDogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCB7CgkJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CgkJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewoJCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtZm9vdGVyIHsKCQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaGVhZGVyIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWZvb3RlciB7CgkJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIHsKCQlib3JkZXItcmFkaXVzOiAuMjVyZW07Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaGVhZGVyIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07CgkJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbTsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1mb290ZXIgewoJCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07CgkJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjI1cmVtOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSB7CgkJYm9yZGVyLXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaGVhZGVyLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1mb290ZXIgewoJCWJvcmRlci1yYWRpdXM6IDA7Cgl9Cn0KCi5jYXJkLWNvbHVtbnMgLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogLjc1cmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5jYXJkLWNvbHVtbnMgewoJCS1tb3otY29sdW1uLWNvdW50OiAzOwoJCS13ZWJraXQtY29sdW1uLWNvdW50OiAzOwoJCWNvbHVtbi1jb3VudDogMzsKCQktbW96LWNvbHVtbi1nYXA6IDEuMjVyZW07CgkJLXdlYmtpdC1jb2x1bW4tZ2FwOiAxLjI1cmVtOwoJCWNvbHVtbi1nYXA6IDEuMjVyZW07CgkJb3JwaGFuczogMTsKCQl3aWRvd3M6IDE7Cgl9CgkKCS5jYXJkLWNvbHVtbnMgLmNhcmQgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCQl3aWR0aDogMTAwJTsKCX0KfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpOm5vdCg6bGFzdC1vZi10eXBlKSB7Cglib3JkZXItYm90dG9tOiAwOwoJYm9yZGVyLXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpIC5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7Cglib3JkZXItcmFkaXVzOiAwOwp9CgouYWNjb3JkaW9uIC5jYXJkOmZpcnN0LW9mLXR5cGUgewoJYm9yZGVyLWJvdHRvbTogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpsYXN0LW9mLXR5cGUgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgouYnJlYWRjcnVtYiB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJcGFkZGluZzogLjc1cmVtIDFyZW07CgltYXJnaW4tYm90dG9tOiAxcmVtOwoJbGlzdC1zdHlsZTogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtIHsKCXBhZGRpbmctbGVmdDogLjVyZW07Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOjpiZWZvcmUgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZy1yaWdodDogLjVyZW07Cgljb2xvcjogIzZjNzU3ZDsKCWNvbnRlbnQ6ICIvIjsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5icmVhZGNydW1iLWl0ZW0uYWN0aXZlIHsKCWNvbG9yOiAjNmM3NTdkOwp9CgoucGFnaW5hdGlvbiB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CglwYWRkaW5nLWxlZnQ6IDA7CglsaXN0LXN0eWxlOiBub25lOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoucGFnZS1saW5rIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjVyZW0gLjc1cmVtOwoJbWFyZ2luLWxlZnQ6IC0xcHg7CglsaW5lLWhlaWdodDogMS4yNTsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi5wYWdlLWxpbms6aG92ZXIgewoJei1pbmRleDogMjsKCWNvbG9yOiAjMDA1NmIzOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2UtbGluazpmb2N1cyB7Cgl6LWluZGV4OiAyOwoJb3V0bGluZTogMDsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5wYWdlLWxpbms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewoJY3Vyc29yOiBwb2ludGVyOwp9CgoucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewoJbWFyZ2luLWxlZnQ6IDA7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHsKCXotaW5kZXg6IDE7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5wYWdlLWl0ZW0uZGlzYWJsZWQgLnBhZ2UtbGluayB7Cgljb2xvcjogIzZjNzU3ZDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwoJY3Vyc29yOiBhdXRvOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7CglwYWRkaW5nOiAuNzVyZW0gMS41cmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4zcmVtOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjNyZW07Cn0KCi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuM3JlbTsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuM3JlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjJyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMnJlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4ycmVtOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC4ycmVtOwp9CgouYmFkZ2UgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZzogLjI1ZW0gLjRlbTsKCWZvbnQtc2l6ZTogNzUlOwoJZm9udC13ZWlnaHQ6IDcwMDsKCWxpbmUtaGVpZ2h0OiAxOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCXZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmJhZGdlOmVtcHR5IHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5idG4gLmJhZGdlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRvcDogLTFweDsKfQoKLmJhZGdlLXBpbGwgewoJcGFkZGluZy1yaWdodDogLjZlbTsKCXBhZGRpbmctbGVmdDogLjZlbTsKCWJvcmRlci1yYWRpdXM6IDEwcmVtOwp9CgouYmFkZ2UtcHJpbWFyeSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2UtcHJpbWFyeVtocmVmXTpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cn0KCi5iYWRnZS1zZWNvbmRhcnkgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwp9CgouYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MjsKfQoKLmJhZGdlLXN1Y2Nlc3MgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1Owp9CgouYmFkZ2Utc3VjY2Vzc1tocmVmXTpob3ZlciwgLmJhZGdlLXN1Y2Nlc3NbaHJlZl06Zm9jdXMgewoJY29sb3I6ICNmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0Owp9CgouYmFkZ2UtaW5mbyB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cn0KCi5iYWRnZS1pbmZvW2hyZWZdOmhvdmVyLCAuYmFkZ2UtaW5mb1tocmVmXTpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMxMTdhOGI7Cn0KCi5iYWRnZS13YXJuaW5nIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKfQoKLmJhZGdlLXdhcm5pbmdbaHJlZl06aG92ZXIsIC5iYWRnZS13YXJuaW5nW2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjMjEyNTI5OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDsKfQoKLmJhZGdlLWRhbmdlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cn0KCi5iYWRnZS1kYW5nZXJbaHJlZl06aG92ZXIsIC5iYWRnZS1kYW5nZXJbaHJlZl06Zm9jdXMgewoJY29sb3I6ICNmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwOwp9CgouYmFkZ2UtbGlnaHQgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIsIC5iYWRnZS1saWdodFtocmVmXTpmb2N1cyB7Cgljb2xvcjogIzIxMjUyOTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7Cn0KCi5iYWRnZS1kYXJrIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKfQoKLmJhZGdlLWRhcmtbaHJlZl06aG92ZXIsIC5iYWRnZS1kYXJrW2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNDsKfQoKLmp1bWJvdHJvbiB7CglwYWRkaW5nOiAycmVtIDFyZW07CgltYXJnaW4tYm90dG9tOiAycmVtOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5qdW1ib3Ryb24gewoJCXBhZGRpbmc6IDRyZW0gMnJlbTsKCX0KfQoKLmp1bWJvdHJvbi1mbHVpZCB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwoJYm9yZGVyLXJhZGl1czogMDsKfQoKLmFsZXJ0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgouYWxlcnQtaGVhZGluZyB7Cgljb2xvcjogaW5oZXJpdDsKfQoKLmFsZXJ0LWxpbmsgewoJZm9udC13ZWlnaHQ6IDcwMDsKfQoKLmFsZXJ0LWRpc21pc3NpYmxlIHsKCXBhZGRpbmctcmlnaHQ6IDRyZW07Cn0KCi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2UgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJcmlnaHQ6IDA7CglwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsKCWNvbG9yOiBpbmhlcml0Owp9CgouYWxlcnQtcHJpbWFyeSB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICNjY2U1ZmY7Cglib3JkZXItY29sb3I6ICNiOGRhZmY7Cn0KCi5hbGVydC1wcmltYXJ5IGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICM5ZWNkZmY7Cn0KCi5hbGVydC1wcmltYXJ5IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDAyNzUyOwp9CgouYWxlcnQtc2Vjb25kYXJ5IHsKCWNvbG9yOiAjMzgzZDQxOwoJYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTsKCWJvcmRlci1jb2xvcjogI2Q2ZDhkYjsKfQoKLmFsZXJ0LXNlY29uZGFyeSBociB7Cglib3JkZXItdG9wLWNvbG9yOiAjYzhjY2NmOwp9CgouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMjEyMzI2Owp9CgouYWxlcnQtc3VjY2VzcyB7Cgljb2xvcjogIzE1NTcyNDsKCWJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7Cglib3JkZXItY29sb3I6ICNjM2U2Y2I7Cn0KCi5hbGVydC1zdWNjZXNzIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNiMWRmYmI7Cn0KCi5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMGIyZTEzOwp9CgouYWxlcnQtaW5mbyB7Cgljb2xvcjogIzBjNTQ2MDsKCWJhY2tncm91bmQtY29sb3I6ICNkMWVjZjE7Cglib3JkZXItY29sb3I6ICNiZWU1ZWI7Cn0KCi5hbGVydC1pbmZvIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7Cn0KCi5hbGVydC1pbmZvIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDYyYzMyOwp9CgouYWxlcnQtd2FybmluZyB7Cgljb2xvcjogIzg1NjQwNDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7Cglib3JkZXItY29sb3I6ICNmZmVlYmE7Cn0KCi5hbGVydC13YXJuaW5nIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNmZmU3YTA7Cn0KCi5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNTMzZjAyOwp9CgouYWxlcnQtZGFuZ2VyIHsKCWNvbG9yOiAjNzIxYzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTsKCWJvcmRlci1jb2xvcjogI2Y1YzZjYjsKfQoKLmFsZXJ0LWRhbmdlciBociB7Cglib3JkZXItdG9wLWNvbG9yOiAjZjFiMWI3Owp9CgouYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNDkxMjE3Owp9CgouYWxlcnQtbGlnaHQgewoJY29sb3I6ICM4MTgxODI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlOwoJYm9yZGVyLWNvbG9yOiAjZmRmZGZlOwp9CgouYWxlcnQtbGlnaHQgaHIgewoJYm9yZGVyLXRvcC1jb2xvcjogI2YxZjFmMTsKfQoKLmFsZXJ0LWxpZ2h0IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNjg2ODY4Owp9CgouYWxlcnQtZGFyayB7Cgljb2xvcjogIzFiMWUyMTsKCWJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7Cglib3JkZXItY29sb3I6ICNjNmM4Y2E7Cn0KCi5hbGVydC1kYXJrIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNiOWJiYmQ7Cn0KCi5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDQwNTA1Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewoJZnJvbSB7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjogMXJlbSAwOwoJfQoJCgl0byB7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwoJfQp9CgpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKCWZyb20gewoJCWJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsKCX0KCQoJdG8gewoJCWJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKCX0KfQoKLnByb2dyZXNzIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCWhlaWdodDogMXJlbTsKCW92ZXJmbG93OiBoaWRkZW47Cglmb250LXNpemU6IC43NXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5wcm9ncmVzcy1iYXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJLW1zLWZsZXgtcGFjazogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cgljb2xvcjogI2ZmZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKCXdoaXRlLXNwYWNlOiBub3dyYXA7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAuNnMgZWFzZTsKCXRyYW5zaXRpb246IHdpZHRoIC42cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkucHJvZ3Jlc3MtYmFyIHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLnByb2dyZXNzLWJhci1zdHJpcGVkIHsKCWJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiAxcmVtIDFyZW07Cn0KCi5wcm9ncmVzcy1iYXItYW5pbWF0ZWQgewoJLXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKCWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlOwp9CgoubWVkaWEgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Cn0KCi5tZWRpYS1ib2R5IHsKCS1tcy1mbGV4OiAxOwoJZmxleDogMTsKfQoKLmxpc3QtZ3JvdXAgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJcGFkZGluZy1sZWZ0OiAwOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gewoJd2lkdGg6IDEwMCU7Cgljb2xvcjogIzQ5NTA1NzsKCXRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzQ5NTA1NzsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmFjdGl2ZSB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsKCW1hcmdpbi1ib3R0b206IC0xcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTI1KTsKfQoKLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewoJbWFyZ2luLWJvdHRvbTogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5saXN0LWdyb3VwLWl0ZW06aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgewoJei1pbmRleDogMTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCwgLmxpc3QtZ3JvdXAtaXRlbTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsKCXotaW5kZXg6IDI7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5saXN0LWdyb3VwLWZsdXNoIC5saXN0LWdyb3VwLWl0ZW0gewoJYm9yZGVyLXJpZ2h0OiAwOwoJYm9yZGVyLWxlZnQ6IDA7Cglib3JkZXItcmFkaXVzOiAwOwp9CgoubGlzdC1ncm91cC1mbHVzaDpmaXJzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKCWJvcmRlci10b3A6IDA7Cn0KCi5saXN0LWdyb3VwLWZsdXNoOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKCWJvcmRlci1ib3R0b206IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeSB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDQwODU7Cglib3JkZXItY29sb3I6ICMwMDQwODU7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5IHsKCWNvbG9yOiAjMzgzZDQxOwoJYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzM4M2Q0MTsKCWJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM4M2Q0MTsKCWJvcmRlci1jb2xvcjogIzM4M2Q0MTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsKCWNvbG9yOiAjMTU1NzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMTU1NzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzE1NTcyNDsKCWJvcmRlci1jb2xvcjogIzE1NTcyNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKCWNvbG9yOiAjMGM1NDYwOwoJYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMGM1NDYwOwoJYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzBjNTQ2MDsKCWJvcmRlci1jb2xvcjogIzBjNTQ2MDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHsKCWNvbG9yOiAjODU2NDA0OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjODU2NDA0OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzg1NjQwNDsKCWJvcmRlci1jb2xvcjogIzg1NjQwNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewoJY29sb3I6ICM3MjFjMjQ7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiOwp9CgoubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjNzIxYzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNzIxYzI0OwoJYm9yZGVyLWNvbG9yOiAjNzIxYzI0Owp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0IHsKCWNvbG9yOiAjODE4MTgyOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewoJY29sb3I6ICM4MTgxODI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzgxODE4MjsKCWJvcmRlci1jb2xvcjogIzgxODE4MjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrIHsKCWNvbG9yOiAjMWIxZTIxOwoJYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMWIxZTIxOwoJYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzFiMWUyMTsKCWJvcmRlci1jb2xvcjogIzFiMWUyMTsKfQoKLmNsb3NlIHsKCWZsb2F0OiByaWdodDsKCWZvbnQtc2l6ZTogMS41cmVtOwoJZm9udC13ZWlnaHQ6IDcwMDsKCWxpbmUtaGVpZ2h0OiAxOwoJY29sb3I6ICMwMDA7Cgl0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwoJb3BhY2l0eTogLjU7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmNsb3NlOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmZvY3VzIHsKCWNvbG9yOiAjMDAwOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJb3BhY2l0eTogLjc1Owp9CgpidXR0b24uY2xvc2UgewoJcGFkZGluZzogMDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYm9yZGVyOiAwOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgoubW9kYWwtb3BlbiB7CglvdmVyZmxvdzogaGlkZGVuOwp9CgoubW9kYWwtb3BlbiAubW9kYWwgewoJb3ZlcmZsb3cteDogaGlkZGVuOwoJb3ZlcmZsb3cteTogYXV0bzsKfQoKLm1vZGFsIHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXJpZ2h0OiAwOwoJYm90dG9tOiAwOwoJbGVmdDogMDsKCXotaW5kZXg6IDEwNTA7CglkaXNwbGF5OiBub25lOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCW91dGxpbmU6IDA7Cn0KCi5tb2RhbC1kaWFsb2cgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJd2lkdGg6IGF1dG87CgltYXJnaW46IC41cmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewoJLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7Cgl0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0OwoJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZyB7Cgktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwoJdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7Cn0KCi5tb2RhbC1kaWFsb2ctY2VudGVyZWQgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgltaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoIC41cmVtICogMiApKTsKfQoKLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKCWRpc3BsYXk6IGJsb2NrOwoJaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKCAuNXJlbSAqIDIgKSk7Cgljb250ZW50OiAiIjsKfQoKLm1vZGFsLWNvbnRlbnQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJd2lkdGg6IDEwMCU7Cglwb2ludGVyLWV2ZW50czogYXV0bzsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMik7Cglib3JkZXItcmFkaXVzOiAuM3JlbTsKCW91dGxpbmU6IDA7Cn0KCi5tb2RhbC1iYWNrZHJvcCB7Cglwb3NpdGlvbjogZml4ZWQ7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxMDQwOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoKLm1vZGFsLWJhY2tkcm9wLmZhZGUgewoJb3BhY2l0eTogMDsKfQoKLm1vZGFsLWJhY2tkcm9wLnNob3cgewoJb3BhY2l0eTogLjU7Cn0KCi5tb2RhbC1oZWFkZXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwoJcGFkZGluZzogMXJlbTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTllY2VmOwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjNyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjNyZW07Cn0KCi5tb2RhbC1oZWFkZXIgLmNsb3NlIHsKCXBhZGRpbmc6IDFyZW07CgltYXJnaW46IC0xcmVtIC0xcmVtIC0xcmVtIGF1dG87Cn0KCi5tb2RhbC10aXRsZSB7CgltYXJnaW4tYm90dG9tOiAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKfQoKLm1vZGFsLWJvZHkgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87CglwYWRkaW5nOiAxcmVtOwp9CgoubW9kYWwtZm9vdGVyIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJLW1zLWZsZXgtcGFjazogZW5kOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCXBhZGRpbmc6IDFyZW07Cglib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsKfQoKLm1vZGFsLWZvb3RlciA+IDpub3QoOmZpcnN0LWNoaWxkKSB7CgltYXJnaW4tbGVmdDogLjI1cmVtOwp9CgoubW9kYWwtZm9vdGVyID4gOm5vdCg6bGFzdC1jaGlsZCkgewoJbWFyZ2luLXJpZ2h0OiAuMjVyZW07Cn0KCi5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC05OTk5cHg7Cgl3aWR0aDogNTBweDsKCWhlaWdodDogNTBweDsKCW92ZXJmbG93OiBzY3JvbGw7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewoJLm1vZGFsLWRpYWxvZyB7CgkJbWF4LXdpZHRoOiA1MDBweDsKCQltYXJnaW46IDEuNzVyZW0gYXV0bzsKCX0KCQoJLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CgkJbWluLWhlaWdodDogY2FsYygxMDAlIC0gKCAxLjc1cmVtICogMiApKTsKCX0KCQoJLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKCQloZWlnaHQ6IGNhbGMoMTAwdmggLSAoIDEuNzVyZW0gKiAyICkpOwoJfQoJCgkubW9kYWwtc20gewoJCW1heC13aWR0aDogMzAwcHg7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLm1vZGFsLWxnIHsKCQltYXgtd2lkdGg6IDgwMHB4OwoJfQp9CgoudG9vbHRpcCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAxMDcwOwoJZGlzcGxheTogYmxvY2s7CgltYXJnaW46IDA7Cglmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmLCAiQXBwbGUgQ29sb3IgRW1vamkiLCAiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIiwgIk5vdG8gQ29sb3IgRW1vamkiOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IDQwMDsKCWxpbmUtaGVpZ2h0OiAxLjU7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJdGV4dC1hbGlnbjogc3RhcnQ7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cgl0ZXh0LXNoYWRvdzogbm9uZTsKCXRleHQtdHJhbnNmb3JtOiBub25lOwoJbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsKCXdvcmQtYnJlYWs6IG5vcm1hbDsKCXdvcmQtc3BhY2luZzogbm9ybWFsOwoJd2hpdGUtc3BhY2U6IG5vcm1hbDsKCWxpbmUtYnJlYWs6IGF1dG87Cglmb250LXNpemU6IC44NzVyZW07Cgl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CglvcGFjaXR5OiAwOwp9CgoudG9vbHRpcC5zaG93IHsKCW9wYWNpdHk6IC45Owp9CgoudG9vbHRpcCAuYXJyb3cgewoJcG9zaXRpb246IGFic29sdXRlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogLjhyZW07CgloZWlnaHQ6IC40cmVtOwp9CgoudG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgljb250ZW50OiAiIjsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItc3R5bGU6IHNvbGlkOwp9CgouYnMtdG9vbHRpcC10b3AsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSB7CglwYWRkaW5nOiAuNHJlbSAwOwp9CgouYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKCWJvdHRvbTogMDsKfQoKLmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgewoJdG9wOiAwOwoJYm9yZGVyLXdpZHRoOiAuNHJlbSAuNHJlbSAwOwoJYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoKLmJzLXRvb2x0aXAtcmlnaHQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKCXBhZGRpbmc6IDAgLjRyZW07Cn0KCi5icy10b29sdGlwLXJpZ2h0IC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKCWxlZnQ6IDA7Cgl3aWR0aDogLjRyZW07CgloZWlnaHQ6IC44cmVtOwp9CgouYnMtdG9vbHRpcC1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUgewoJcmlnaHQ6IDA7Cglib3JkZXItd2lkdGg6IC40cmVtIC40cmVtIC40cmVtIDA7Cglib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKCXBhZGRpbmc6IC40cmVtIDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewoJdG9wOiAwOwp9CgouYnMtdG9vbHRpcC1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7Cglib3R0b206IDA7Cglib3JkZXItd2lkdGg6IDAgLjRyZW0gLjRyZW07Cglib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9CgouYnMtdG9vbHRpcC1sZWZ0LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCXBhZGRpbmc6IDAgLjRyZW07Cn0KCi5icy10b29sdGlwLWxlZnQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7CglyaWdodDogMDsKCXdpZHRoOiAuNHJlbTsKCWhlaWdodDogLjhyZW07Cn0KCi5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUgewoJbGVmdDogMDsKCWJvcmRlci13aWR0aDogLjRyZW0gMCAuNHJlbSAuNHJlbTsKCWJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9CgoudG9vbHRpcC1pbm5lciB7CgltYXgtd2lkdGg6IDIwMHB4OwoJcGFkZGluZzogLjI1cmVtIC41cmVtOwoJY29sb3I6ICNmZmY7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoucG9wb3ZlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJei1pbmRleDogMTA2MDsKCWRpc3BsYXk6IGJsb2NrOwoJbWF4LXdpZHRoOiAyNzZweDsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7Cglmb250LXN0eWxlOiBub3JtYWw7Cglmb250LXdlaWdodDogNDAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKCXRleHQtYWxpZ246IGxlZnQ7Cgl0ZXh0LWFsaWduOiBzdGFydDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXRleHQtc2hhZG93OiBub25lOwoJdGV4dC10cmFuc2Zvcm06IG5vbmU7CglsZXR0ZXItc3BhY2luZzogbm9ybWFsOwoJd29yZC1icmVhazogbm9ybWFsOwoJd29yZC1zcGFjaW5nOiBub3JtYWw7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwoJbGluZS1icmVhazogYXV0bzsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMik7Cglib3JkZXItcmFkaXVzOiAuM3JlbTsKfQoKLnBvcG92ZXIgLmFycm93IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IC41cmVtOwoJbWFyZ2luOiAwIC4zcmVtOwp9CgoucG9wb3ZlciAuYXJyb3c6OmJlZm9yZSwgLnBvcG92ZXIgLmFycm93OjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglkaXNwbGF5OiBibG9jazsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1zdHlsZTogc29saWQ7Cn0KCi5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgouYnMtcG9wb3Zlci10b3AgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHt9CgouYnMtcG9wb3Zlci10b3AgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmFmdGVyIHsKCWJvcmRlci13aWR0aDogLjVyZW0gLjVyZW0gMDsKfQoKLmJzLXBvcG92ZXItdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgewoJYm90dG9tOiAwOwoJYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMjUpOwp9CgouYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewoJYm90dG9tOiAxcHg7Cglib3JkZXItdG9wLWNvbG9yOiAjZmZmOwp9CgouYnMtcG9wb3Zlci1yaWdodCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gewoJbWFyZ2luLWxlZnQ6IC41cmVtOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdyB7Cgl3aWR0aDogLjVyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW46IC4zcmVtIDA7Cn0KCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjphZnRlciB7Cglib3JkZXItd2lkdGg6IC41cmVtIC41cmVtIC41cmVtIDA7Cn0KCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmJlZm9yZSB7CglsZWZ0OiAwOwoJYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7Cn0KCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YWZ0ZXIgewoJbGVmdDogMXB4OwoJYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmOwp9CgouYnMtcG9wb3Zlci1ib3R0b20sIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSB7CgltYXJnaW4tdG9wOiAuNXJlbTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdyB7fQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjphZnRlciB7Cglib3JkZXItd2lkdGg6IDAgLjVyZW0gLjVyZW0gLjVyZW07Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YmVmb3JlIHsKCXRvcDogMDsKCWJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgLjI1KTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmFmdGVyIHsKCXRvcDogMXB4OwoJYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLnBvcG92ZXItaGVhZGVyOjpiZWZvcmUgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJbGVmdDogNTAlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMXJlbTsKCW1hcmdpbi1sZWZ0OiAtLjVyZW07Cgljb250ZW50OiAiIjsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdmN2Y3Owp9CgouYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCW1hcmdpbi1yaWdodDogLjVyZW07Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7Cgl3aWR0aDogLjVyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW46IC4zcmVtIDA7Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmFmdGVyIHsKCWJvcmRlci13aWR0aDogLjVyZW0gMCAuNXJlbSAuNXJlbTsKfQoKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSB7CglyaWdodDogMDsKCWJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmFmdGVyIHsKCXJpZ2h0OiAxcHg7Cglib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoKLnBvcG92ZXItaGVhZGVyIHsKCXBhZGRpbmc6IC41cmVtIC43NXJlbTsKCW1hcmdpbi1ib3R0b206IDA7Cglmb250LXNpemU6IDFyZW07Cgljb2xvcjogaW5oZXJpdDsKCWJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7Cglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGNhbGMoLjNyZW0gLSAxcHgpOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGMoLjNyZW0gLSAxcHgpOwp9CgoucG9wb3Zlci1oZWFkZXI6ZW1wdHkgewoJZGlzcGxheTogbm9uZTsKfQoKLnBvcG92ZXItYm9keSB7CglwYWRkaW5nOiAuNXJlbSAuNzVyZW07Cgljb2xvcjogIzIxMjUyOTsKfQoKLmNhcm91c2VsIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmNhcm91c2VsLWlubmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXdpZHRoOiAxMDAlOwoJb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmNhcm91c2VsLWl0ZW0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogbm9uZTsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJd2lkdGg6IDEwMCU7Cgktd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKCWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKCS13ZWJraXQtcGVyc3BlY3RpdmU6IDEwMDBweDsKCXBlcnNwZWN0aXZlOiAxMDAwcHg7Cn0KCi5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwgLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7CglkaXNwbGF5OiBibG9jazsKCS13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UsIG1hcmdpbiAuNnMgZWFzZTsKCXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIC42cyBlYXNlLCBtYXJnaW4gLjZzIGVhc2U7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjZzIGVhc2UsIG1hcmdpbiAuNnMgZWFzZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7Cn0KCi5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewoJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cgl0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KCkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7CgkuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKCQktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CgkJdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKCX0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwoJdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwp9CgpAc3VwcG9ydHMgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIHsKCS5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CgkJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwoJCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1pdGVtLXByZXYsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IHsKCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7Cn0KCkBzdXBwb3J0cyAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgewoJLmNhcm91c2VsLWl0ZW0tcHJldiwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQgewoJCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CgkJdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtIHsKCW9wYWNpdHk6IDA7Cgl0cmFuc2l0aW9uLWR1cmF0aW9uOiAuNnM7Cgl0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewoJb3BhY2l0eTogMTsKfQoKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CglvcGFjaXR5OiAwOwp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7Cgktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKfQoKQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CgkuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7CgkJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwoJCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYsIC5jYXJvdXNlbC1jb250cm9sLW5leHQgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgktbXMtZmxleC1wYWNrOiBjZW50ZXI7CglqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCXdpZHRoOiAxNSU7Cgljb2xvcjogI2ZmZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW9wYWNpdHk6IC41Owp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJb3V0bGluZTogMDsKCW9wYWNpdHk6IC45Owp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2IHsKCWxlZnQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLW5leHQgewoJcmlnaHQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAyMHB4OwoJaGVpZ2h0OiAyMHB4OwoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7CgliYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIGZpbGw9XCclMjNmZmZcJyB2aWV3Qm94PVwnMCAwIDggOFwnJTNFJTNDcGF0aCBkPVwnTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41elwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIGZpbGw9XCclMjNmZmZcJyB2aWV3Qm94PVwnMCAwIDggOFwnJTNFJTNDcGF0aCBkPVwnTTIuNzUgMGwtMS41IDEuNSAyLjUgMi41LTIuNSAyLjUgMS41IDEuNSA0LTQtNC00elwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IDA7Cglib3R0b206IDEwcHg7CglsZWZ0OiAwOwoJei1pbmRleDogMTU7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1wYWNrOiBjZW50ZXI7CglqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1yaWdodDogMTUlOwoJbWFyZ2luLWxlZnQ6IDE1JTsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCS1tcy1mbGV4OiAwIDEgYXV0bzsKCWZsZXg6IDAgMSBhdXRvOwoJd2lkdGg6IDMwcHg7CgloZWlnaHQ6IDNweDsKCW1hcmdpbi1yaWdodDogM3B4OwoJbWFyZ2luLWxlZnQ6IDNweDsKCXRleHQtaW5kZW50OiAtOTk5cHg7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC0xMHB4OwoJbGVmdDogMDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMHB4OwoJY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cglib3R0b206IC0xMHB4OwoJbGVmdDogMDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMHB4OwoJY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmNhcm91c2VsLWNhcHRpb24gewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IDE1JTsKCWJvdHRvbTogMjBweDsKCWxlZnQ6IDE1JTsKCXotaW5kZXg6IDEwOwoJcGFkZGluZy10b3A6IDIwcHg7CglwYWRkaW5nLWJvdHRvbTogMjBweDsKCWNvbG9yOiAjZmZmOwoJdGV4dC1hbGlnbjogY2VudGVyOwp9CgouYWxpZ24tYmFzZWxpbmUgewoJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi10b3AgewoJdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9CgouYWxpZ24tbWlkZGxlIHsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDsKfQoKLmFsaWduLWJvdHRvbSB7Cgl2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi10ZXh0LWJvdHRvbSB7Cgl2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsKfQoKLmFsaWduLXRleHQtdG9wIHsKCXZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50Owp9CgouYmctcHJpbWFyeSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCmEuYmctcHJpbWFyeTpob3ZlciwgYnV0dG9uLmJnLXByaW1hcnk6aG92ZXIsIGEuYmctcHJpbWFyeTpmb2N1cywgYnV0dG9uLmJnLXByaW1hcnk6Zm9jdXMgewoJYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9CgouYmctc2Vjb25kYXJ5IHsKCWJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKYS5iZy1zZWNvbmRhcnk6aG92ZXIsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6aG92ZXIsIGEuYmctc2Vjb25kYXJ5OmZvY3VzLCBidXR0b24uYmctc2Vjb25kYXJ5OmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICM1NDViNjIgIWltcG9ydGFudDsKfQoKLmJnLXN1Y2Nlc3MgewoJYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CgphLmJnLXN1Y2Nlc3M6aG92ZXIsIGJ1dHRvbi5iZy1zdWNjZXNzOmhvdmVyLCBhLmJnLXN1Y2Nlc3M6Zm9jdXMsIGJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQgIWltcG9ydGFudDsKfQoKLmJnLWluZm8gewoJYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9CgphLmJnLWluZm86aG92ZXIsIGJ1dHRvbi5iZy1pbmZvOmhvdmVyLCBhLmJnLWluZm86Zm9jdXMsIGJ1dHRvbi5iZy1pbmZvOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoKLmJnLXdhcm5pbmcgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CgphLmJnLXdhcm5pbmc6aG92ZXIsIGJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLCBhLmJnLXdhcm5pbmc6Zm9jdXMsIGJ1dHRvbi5iZy13YXJuaW5nOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsKfQoKLmJnLWRhbmdlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KCmEuYmctZGFuZ2VyOmhvdmVyLCBidXR0b24uYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cywgYnV0dG9uLmJnLWRhbmdlcjpmb2N1cyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi5iZy1saWdodCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KCmEuYmctbGlnaHQ6aG92ZXIsIGJ1dHRvbi5iZy1saWdodDpob3ZlciwgYS5iZy1saWdodDpmb2N1cywgYnV0dG9uLmJnLWxpZ2h0OmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoKLmJnLWRhcmsgewoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CgphLmJnLWRhcms6aG92ZXIsIGJ1dHRvbi5iZy1kYXJrOmhvdmVyLCBhLmJnLWRhcms6Zm9jdXMsIGJ1dHRvbi5iZy1kYXJrOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsKfQoKLmJnLXdoaXRlIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoKLmJnLXRyYW5zcGFyZW50IHsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXIgewoJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXRvcCB7Cglib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0IHsKCWJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQoKLmJvcmRlci1ib3R0b20gewoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQoKLmJvcmRlci1sZWZ0IHsKCWJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLTAgewoJYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItdG9wLTAgewoJYm9yZGVyLXRvcDogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0LTAgewoJYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItYm90dG9tLTAgewoJYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWxlZnQtMCB7Cglib3JkZXItbGVmdDogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXByaW1hcnkgewoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItc2Vjb25kYXJ5IHsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXN1Y2Nlc3MgewoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItaW5mbyB7Cglib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKLmJvcmRlci13YXJuaW5nIHsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWRhbmdlciB7Cglib3JkZXItY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsKfQoKLmJvcmRlci1saWdodCB7Cglib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQoKLmJvcmRlci1kYXJrIHsKCWJvcmRlci1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXdoaXRlIHsKCWJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Cgoucm91bmRlZCB7Cglib3JkZXItcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnJvdW5kZWQtdG9wIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50OwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50Owp9Cgoucm91bmRlZC1yaWdodCB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWJvdHRvbSB7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnJvdW5kZWQtbGVmdCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50Owp9Cgoucm91bmRlZC1jaXJjbGUgewoJYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLTAgewoJYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50Owp9CgouY2xlYXJmaXg6OmFmdGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJY2xlYXI6IGJvdGg7Cgljb250ZW50OiAiIjsKfQoKLmQtbm9uZSB7CglkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5kLWlubGluZSB7CglkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWJsb2NrIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50Owp9CgouZC1ibG9jayB7CglkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgouZC10YWJsZSB7CglkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9CgouZC10YWJsZS1yb3cgewoJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KCi5kLXRhYmxlLWNlbGwgewoJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50Owp9CgouZC1mbGV4IHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWZsZXggewoJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5kLXNtLW5vbmUgewoJCWRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKCX0KCQoJLmQtc20taW5saW5lIHsKCQlkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmQtc20taW5saW5lLWJsb2NrIHsKCQlkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtc20tYmxvY2sgewoJCWRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXNtLXRhYmxlIHsKCQlkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS10YWJsZS1yb3cgewoJCWRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS10YWJsZS1jZWxsIHsKCQlkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXNtLWZsZXggewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS1pbmxpbmUtZmxleCB7CgkJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewoJLmQtbWQtbm9uZSB7CgkJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1pbmxpbmUgewoJCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1pbmxpbmUtYmxvY2sgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1ibG9jayB7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtbWQtdGFibGUgewoJCWRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLXRhYmxlLXJvdyB7CgkJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLXRhYmxlLWNlbGwgewoJCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKCX0KCQoJLmQtbWQtZmxleCB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLWlubGluZS1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkuZC1sZy1ub25lIHsKCQlkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWlubGluZSB7CgkJZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWlubGluZS1ibG9jayB7CgkJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWJsb2NrIHsKCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1sZy10YWJsZSB7CgkJZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKCX0KCQoJLmQtbGctdGFibGUtcm93IHsKCQlkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKCX0KCQoJLmQtbGctdGFibGUtY2VsbCB7CgkJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwoJfQoJCgkuZC1sZy1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCX0KCQoJLmQtbGctaW5saW5lLWZsZXggewoJCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CgkuZC14bC1ub25lIHsKCQlkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWlubGluZSB7CgkJZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWlubGluZS1ibG9jayB7CgkJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWJsb2NrIHsKCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC14bC10YWJsZSB7CgkJZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKCX0KCQoJLmQteGwtdGFibGUtcm93IHsKCQlkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKCX0KCQoJLmQteGwtdGFibGUtY2VsbCB7CgkJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwoJfQoJCgkuZC14bC1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCX0KCQoJLmQteGwtaW5saW5lLWZsZXggewoJCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgcHJpbnQgewoJLmQtcHJpbnQtbm9uZSB7CgkJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1pbmxpbmUgewoJCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1pbmxpbmUtYmxvY2sgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1ibG9jayB7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtcHJpbnQtdGFibGUgewoJCWRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LXRhYmxlLXJvdyB7CgkJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LXRhYmxlLWNlbGwgewoJCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKCX0KCQoJLmQtcHJpbnQtZmxleCB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LWlubGluZS1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKCX0KfQoKLmVtYmVkLXJlc3BvbnNpdmUgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmc6IDA7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouZW1iZWQtcmVzcG9uc2l2ZTo6YmVmb3JlIHsKCWRpc3BsYXk6IGJsb2NrOwoJY29udGVudDogIiI7Cn0KCi5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sIC5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwgLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsIC5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwgLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8gewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJbGVmdDogMDsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYm9yZGVyOiAwOwp9CgouZW1iZWQtcmVzcG9uc2l2ZS0yMWJ5OTo6YmVmb3JlIHsKCXBhZGRpbmctdG9wOiA0Mi44NTcxNDI4NTcxJTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7CglwYWRkaW5nLXRvcDogNTYuMjUlOwp9CgouZW1iZWQtcmVzcG9uc2l2ZS00YnkzOjpiZWZvcmUgewoJcGFkZGluZy10b3A6IDc1JTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMWJ5MTo6YmVmb3JlIHsKCXBhZGRpbmctdG9wOiAxMDAlOwp9CgouZmxleC1yb3cgewoJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKfQoKLmZsZXgtY29sdW1uIHsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXJvdy1yZXZlcnNlIHsKCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50Owp9CgouZmxleC1jb2x1bW4tcmV2ZXJzZSB7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcCB7CgktbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CglmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKfQoKLmZsZXgtbm93cmFwIHsKCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcC1yZXZlcnNlIHsKCS1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtZmlsbCB7CgktbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LWdyb3ctMCB7CgktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LWdyb3ctMSB7CgktbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwoJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXNocmluay0wIHsKCS1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CglmbGV4LXNocmluazogMCAhaW1wb3J0YW50Owp9CgouZmxleC1zaHJpbmstMSB7CgktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1zdGFydCB7CgktbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKCS1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9CgouanVzdGlmeS1jb250ZW50LWNlbnRlciB7CgktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCWp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CglqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1hcm91bmQgewoJLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLXN0YXJ0IHsKCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWVuZCB7CgktbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CglhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWNlbnRlciB7CgktbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CglhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1pdGVtcy1iYXNlbGluZSB7CgktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCWFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50Owp9CgouYWxpZ24taXRlbXMtc3RyZXRjaCB7CgktbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtc3RhcnQgewoJLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1lbmQgewoJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWNlbnRlciB7CgktbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWJldHdlZW4gewoJLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CglhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWFyb3VuZCB7CgktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1zdHJldGNoIHsKCS1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1hdXRvIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtc3RhcnQgewoJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtZW5kIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtY2VudGVyIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1zZWxmLWJhc2VsaW5lIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CglhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1zdHJldGNoIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuZmxleC1zbS1yb3cgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1jb2x1bW4gewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1yb3ctcmV2ZXJzZSB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1jb2x1bW4tcmV2ZXJzZSB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS13cmFwIHsKCQktbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXNtLW5vd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20td3JhcC1yZXZlcnNlIHsKCQktbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1maWxsIHsKCQktbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCQlmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1ncm93LTAgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAwICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXNtLWdyb3ctMSB7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDEgIWltcG9ydGFudDsKCQlmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20tc2hyaW5rLTAgewoJCS1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CgkJZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20tc2hyaW5rLTEgewoJCS1tcy1mbGV4LW5lZ2F0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1zdGFydCB7CgkJLW1zLWZsZXgtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1lbmQgewoJCS1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIgewoJCS1tcy1mbGV4LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiB7CgkJLW1zLWZsZXgtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZCB7CgkJLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1zbS1zdGFydCB7CgkJLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXNtLWVuZCB7CgkJLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tY2VudGVyIHsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewoJCS1tcy1mbGV4LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tc3RyZXRjaCB7CgkJLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1zdGFydCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1hcm91bmQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXNtLWF1dG8gewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXNtLXN0YXJ0IHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtc20tZW5kIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1jZW50ZXIgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1iYXNlbGluZSB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1zdHJldGNoIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5mbGV4LW1kLXJvdyB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWNvbHVtbiB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLXJvdy1yZXZlcnNlIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWNvbHVtbi1yZXZlcnNlIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLXdyYXAgewoJCS1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbWQtbm93cmFwIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC13cmFwLXJldmVyc2UgewoJCS1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWZpbGwgewoJCS1tcy1mbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwoJCWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWdyb3ctMCB7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDAgIWltcG9ydGFudDsKCQlmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbWQtZ3Jvdy0xIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC1zaHJpbmstMCB7CgkJLW1zLWZsZXgtbmVnYXRpdmU6IDAgIWltcG9ydGFudDsKCQlmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC1zaHJpbmstMSB7CgkJLW1zLWZsZXgtbmVnYXRpdmU6IDEgIWltcG9ydGFudDsKCQlmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0IHsKCQktbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLWVuZCB7CgkJLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CgkJLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVuIHsKCQktbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHsKCQktbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHsKCQktbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtbWQtZW5kIHsKCQktbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1jZW50ZXIgewoJCS1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1iYXNlbGluZSB7CgkJLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1zdHJldGNoIHsKCQktbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLXN0YXJ0IHsKCQktbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1tZC1lbmQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbWQtY2VudGVyIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1tZC1iZXR3ZWVuIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbWQtYXV0byB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbWQtc3RhcnQgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1tZC1lbmQgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLWNlbnRlciB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmZsZXgtbGctcm93IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctY29sdW1uIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctcm93LXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctY29sdW1uLXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1sZy1ub3dyYXAgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXdyYXAtcmV2ZXJzZSB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctZmlsbCB7CgkJLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CgkJZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctZ3Jvdy0wIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1sZy1ncm93LTEgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXNocmluay0wIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXNocmluay0xIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnQgewoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHsKCQktbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LWxnLWJldHdlZW4gewoJCS1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1sZy1hcm91bmQgewoJCS1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtbGctc3RhcnQgewoJCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1sZy1lbmQgewoJCS1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLWNlbnRlciB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHsKCQktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctc3RhcnQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LWxnLWVuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1sZy1jZW50ZXIgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LWxnLWJldHdlZW4gewoJCS1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctc3RyZXRjaCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1sZy1hdXRvIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1sZy1zdGFydCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLWxnLWVuZCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctY2VudGVyIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctc3RyZXRjaCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLmZsZXgteGwtcm93IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtY29sdW1uIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtcm93LXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtY29sdW1uLXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC14bC1ub3dyYXAgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtZmlsbCB7CgkJLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CgkJZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtZ3Jvdy0wIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC14bC1ncm93LTEgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXNocmluay0wIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXNocmluay0xIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgewoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtZW5kIHsKCQktbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW4gewoJCS1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC14bC1hcm91bmQgewoJCS1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMteGwtc3RhcnQgewoJCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy14bC1lbmQgewoJCS1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLWNlbnRlciB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKCQktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtc3RhcnQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXhsLWVuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC14bC1jZW50ZXIgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4gewoJCS1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtYXJvdW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi14bC1hdXRvIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi14bC1zdGFydCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXhsLWVuZCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtY2VudGVyIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtYmFzZWxpbmUgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtc3RyZXRjaCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KfQoKLmZsb2F0LWxlZnQgewoJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKfQoKLmZsb2F0LXJpZ2h0IHsKCWZsb2F0OiByaWdodCAhaW1wb3J0YW50Owp9CgouZmxvYXQtbm9uZSB7CglmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5mbG9hdC1zbS1sZWZ0IHsKCQlmbG9hdDogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkuZmxvYXQtc20tcmlnaHQgewoJCWZsb2F0OiByaWdodCAhaW1wb3J0YW50OwoJfQoJCgkuZmxvYXQtc20tbm9uZSB7CgkJZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkuZmxvYXQtbWQtbGVmdCB7CgkJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LW1kLXJpZ2h0IHsKCQlmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LW1kLW5vbmUgewoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmZsb2F0LWxnLWxlZnQgewoJCWZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbG9hdC1sZy1yaWdodCB7CgkJZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbG9hdC1sZy1ub25lIHsKCQlmbG9hdDogbm9uZSAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CgkuZmxvYXQteGwtbGVmdCB7CgkJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LXhsLXJpZ2h0IHsKCQlmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LXhsLW5vbmUgewoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9Cn0KCi5wb3NpdGlvbi1zdGF0aWMgewoJcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tcmVsYXRpdmUgewoJcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7Cn0KCi5wb3NpdGlvbi1hYnNvbHV0ZSB7Cglwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKfQoKLnBvc2l0aW9uLWZpeGVkIHsKCXBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tc3RpY2t5IHsKCXBvc2l0aW9uOiAtd2Via2l0LXN0aWNreSAhaW1wb3J0YW50OwoJcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50Owp9CgouZml4ZWQtdG9wIHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXJpZ2h0OiAwOwoJbGVmdDogMDsKCXotaW5kZXg6IDEwMzA7Cn0KCi5maXhlZC1ib3R0b20gewoJcG9zaXRpb246IGZpeGVkOwoJcmlnaHQ6IDA7Cglib3R0b206IDA7CglsZWZ0OiAwOwoJei1pbmRleDogMTAzMDsKfQoKQHN1cHBvcnRzIChwb3NpdGlvbjogc3RpY2t5KSB7Cgkuc3RpY2t5LXRvcCB7CgkJcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwoJCXBvc2l0aW9uOiBzdGlja3k7CgkJdG9wOiAwOwoJCXotaW5kZXg6IDEwMjA7Cgl9Cn0KCi5zci1vbmx5IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXdpZHRoOiAxcHg7CgloZWlnaHQ6IDFweDsKCXBhZGRpbmc6IDA7CglvdmVyZmxvdzogaGlkZGVuOwoJY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cglib3JkZXI6IDA7Cn0KCi5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsIC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7Cglwb3NpdGlvbjogc3RhdGljOwoJd2lkdGg6IGF1dG87CgloZWlnaHQ6IGF1dG87CglvdmVyZmxvdzogdmlzaWJsZTsKCWNsaXA6IGF1dG87Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Cgouc2hhZG93LXNtIHsKCWJveC1zaGFkb3c6IDAgLjEyNXJlbSAuMjVyZW0gcmdiYSgwLCAwLCAwLCAuMDc1KSAhaW1wb3J0YW50Owp9Cgouc2hhZG93IHsKCWJveC1zaGFkb3c6IDAgLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIC4xNSkgIWltcG9ydGFudDsKfQoKLnNoYWRvdy1sZyB7Cglib3gtc2hhZG93OiAwIDFyZW0gM3JlbSByZ2JhKDAsIDAsIDAsIC4xNzUpICFpbXBvcnRhbnQ7Cn0KCi5zaGFkb3ctbm9uZSB7Cglib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cn0KCi53LTI1IHsKCXdpZHRoOiAyNSUgIWltcG9ydGFudDsKfQoKLnctNTAgewoJd2lkdGg6IDUwJSAhaW1wb3J0YW50Owp9Cgoudy03NSB7Cgl3aWR0aDogNzUlICFpbXBvcnRhbnQ7Cn0KCi53LTEwMCB7Cgl3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Cgoudy1hdXRvIHsKCXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5oLTI1IHsKCWhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5oLTUwIHsKCWhlaWdodDogNTAlICFpbXBvcnRhbnQ7Cn0KCi5oLTc1IHsKCWhlaWdodDogNzUlICFpbXBvcnRhbnQ7Cn0KCi5oLTEwMCB7CgloZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLmgtYXV0byB7CgloZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLm13LTEwMCB7CgltYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLm1oLTEwMCB7CgltYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5tLTAgewoJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi5tdC0wLCAubXktMCB7CgltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5tci0wLCAubXgtMCB7CgltYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLm1iLTAsIC5teS0wIHsKCW1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKfQoKLm1sLTAsIC5teC0wIHsKCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5tLTEgewoJbWFyZ2luOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTEsIC5teS0xIHsKCW1hcmdpbi10b3A6IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubXItMSwgLm14LTEgewoJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTEsIC5teS0xIHsKCW1hcmdpbi1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMSwgLm14LTEgewoJbWFyZ2luLWxlZnQ6IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubS0yIHsKCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTIsIC5teS0yIHsKCW1hcmdpbi10b3A6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0yLCAubXgtMiB7CgltYXJnaW4tcmlnaHQ6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi0yLCAubXktMiB7CgltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMiwgLm14LTIgewoJbWFyZ2luLWxlZnQ6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTMgewoJbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tdC0zLCAubXktMyB7CgltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0zLCAubXgtMyB7CgltYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoKLm1iLTMsIC5teS0zIHsKCW1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoKLm1sLTMsIC5teC0zIHsKCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTQgewoJbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTQsIC5teS00IHsKCW1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubXItNCwgLm14LTQgewoJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTQsIC5teS00IHsKCW1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtNCwgLm14LTQgewoJbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubS01IHsKCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9CgoubXQtNSwgLm15LTUgewoJbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9CgoubXItNSwgLm14LTUgewoJbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi01LCAubXktNSB7CgltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tbC01LCAubXgtNSB7CgltYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9CgoucC0wIHsKCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoKLnB0LTAsIC5weS0wIHsKCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5wci0wLCAucHgtMCB7CglwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wYi0wLCAucHktMCB7CglwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgoucGwtMCwgLnB4LTAgewoJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wLTEgewoJcGFkZGluZzogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wdC0xLCAucHktMSB7CglwYWRkaW5nLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0xLCAucHgtMSB7CglwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTEsIC5weS0xIHsKCXBhZGRpbmctYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBsLTEsIC5weC0xIHsKCXBhZGRpbmctbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTIgewoJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTIsIC5weS0yIHsKCXBhZGRpbmctdG9wOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucHItMiwgLnB4LTIgewoJcGFkZGluZy1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTIsIC5weS0yIHsKCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMiwgLnB4LTIgewoJcGFkZGluZy1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucC0zIHsKCXBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKfQoKLnB0LTMsIC5weS0zIHsKCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0zLCAucHgtMyB7CglwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wYi0zLCAucHktMyB7CglwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMywgLnB4LTMgewoJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTQgewoJcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wdC00LCAucHktNCB7CglwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci00LCAucHgtNCB7CglwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTQsIC5weS00IHsKCXBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnBsLTQsIC5weC00IHsKCXBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTUgewoJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50Owp9CgoucHQtNSwgLnB5LTUgewoJcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKfQoKLnByLTUsIC5weC01IHsKCXBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLnBiLTUsIC5weS01IHsKCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5wbC01LCAucHgtNSB7CglwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLm0tYXV0byB7CgltYXJnaW46IGF1dG8gIWltcG9ydGFudDsKfQoKLm10LWF1dG8sIC5teS1hdXRvIHsKCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKfQoKLm1yLWF1dG8sIC5teC1hdXRvIHsKCW1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgoubWItYXV0bywgLm15LWF1dG8gewoJbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50Owp9CgoubWwtYXV0bywgLm14LWF1dG8gewoJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkubS1zbS0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTAsIC5teS1zbS0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0wLCAubXgtc20tMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1zbS0wLCAubXktc20tMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMCwgLm14LXNtLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1zbS0xLCAubXktc20tMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0xLCAubXgtc20tMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTEsIC5teS1zbS0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXNtLTEsIC5teC1zbS0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTIsIC5teS1zbS0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItc20tMiwgLm14LXNtLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTIsIC5teS1zbS0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMiwgLm14LXNtLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1zbS0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTMsIC5teS1zbS0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0zLCAubXgtc20tMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1zbS0zLCAubXktc20tMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMywgLm14LXNtLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1zbS00LCAubXktc20tNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS00LCAubXgtc20tNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTQsIC5teS1zbS00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXNtLTQsIC5teC1zbS00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtc20tNSwgLm15LXNtLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLXNtLTUsIC5teC1zbS01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTUsIC5teS1zbS01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1zbS01LCAubXgtc20tNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMCwgLnB5LXNtLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS0wLCAucHgtc20tMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMCwgLnB5LXNtLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0wLCAucHgtc20tMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXNtLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMSwgLnB5LXNtLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTEsIC5weC1zbS0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXNtLTEsIC5weS1zbS0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0xLCAucHgtc20tMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXNtLTIsIC5weS1zbS0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTIsIC5weC1zbS0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMiwgLnB5LXNtLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtc20tMiwgLnB4LXNtLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMywgLnB5LXNtLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS0zLCAucHgtc20tMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMywgLnB5LXNtLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0zLCAucHgtc20tMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXNtLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tNCwgLnB5LXNtLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTQsIC5weC1zbS00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXNtLTQsIC5weS1zbS00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS00LCAucHgtc20tNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tNSwgLnB5LXNtLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS01LCAucHgtc20tNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tNSwgLnB5LXNtLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS01LCAucHgtc20tNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtc20tYXV0bywgLm15LXNtLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLXNtLWF1dG8sIC5teC1zbS1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLWF1dG8sIC5teS1zbS1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1zbS1hdXRvLCAubXgtc20tYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkubS1tZC0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTAsIC5teS1tZC0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0wLCAubXgtbWQtMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1tZC0wLCAubXktbWQtMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMCwgLm14LW1kLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1tZC0xLCAubXktbWQtMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0xLCAubXgtbWQtMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTEsIC5teS1tZC0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLW1kLTEsIC5teC1tZC0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTIsIC5teS1tZC0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItbWQtMiwgLm14LW1kLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTIsIC5teS1tZC0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMiwgLm14LW1kLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1tZC0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTMsIC5teS1tZC0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0zLCAubXgtbWQtMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1tZC0zLCAubXktbWQtMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMywgLm14LW1kLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1tZC00LCAubXktbWQtNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC00LCAubXgtbWQtNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTQsIC5teS1tZC00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLW1kLTQsIC5teC1tZC00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtbWQtNSwgLm15LW1kLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLW1kLTUsIC5teC1tZC01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTUsIC5teS1tZC01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1tZC01LCAubXgtbWQtNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMCwgLnB5LW1kLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC0wLCAucHgtbWQtMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMCwgLnB5LW1kLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0wLCAucHgtbWQtMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLW1kLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMSwgLnB5LW1kLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTEsIC5weC1tZC0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLW1kLTEsIC5weS1tZC0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0xLCAucHgtbWQtMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LW1kLTIsIC5weS1tZC0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTIsIC5weC1tZC0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMiwgLnB5LW1kLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtbWQtMiwgLnB4LW1kLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMywgLnB5LW1kLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC0zLCAucHgtbWQtMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMywgLnB5LW1kLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0zLCAucHgtbWQtMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLW1kLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtNCwgLnB5LW1kLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTQsIC5weC1tZC00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLW1kLTQsIC5weS1tZC00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC00LCAucHgtbWQtNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtNSwgLnB5LW1kLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC01LCAucHgtbWQtNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtNSwgLnB5LW1kLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC01LCAucHgtbWQtNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtbWQtYXV0bywgLm15LW1kLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLW1kLWF1dG8sIC5teC1tZC1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLWF1dG8sIC5teS1tZC1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1tZC1hdXRvLCAubXgtbWQtYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkubS1sZy0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTAsIC5teS1sZy0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0wLCAubXgtbGctMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1sZy0wLCAubXktbGctMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMCwgLm14LWxnLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1sZy0xLCAubXktbGctMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0xLCAubXgtbGctMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTEsIC5teS1sZy0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLWxnLTEsIC5teC1sZy0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTIsIC5teS1sZy0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItbGctMiwgLm14LWxnLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTIsIC5teS1sZy0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMiwgLm14LWxnLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1sZy0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTMsIC5teS1sZy0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0zLCAubXgtbGctMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1sZy0zLCAubXktbGctMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMywgLm14LWxnLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1sZy00LCAubXktbGctNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy00LCAubXgtbGctNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTQsIC5teS1sZy00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLWxnLTQsIC5teC1sZy00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtbGctNSwgLm15LWxnLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLWxnLTUsIC5teC1sZy01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTUsIC5teS1sZy01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1sZy01LCAubXgtbGctNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMCwgLnB5LWxnLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy0wLCAucHgtbGctMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMCwgLnB5LWxnLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0wLCAucHgtbGctMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLWxnLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMSwgLnB5LWxnLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTEsIC5weC1sZy0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLWxnLTEsIC5weS1sZy0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0xLCAucHgtbGctMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LWxnLTIsIC5weS1sZy0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTIsIC5weC1sZy0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMiwgLnB5LWxnLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtbGctMiwgLnB4LWxnLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMywgLnB5LWxnLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy0zLCAucHgtbGctMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMywgLnB5LWxnLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0zLCAucHgtbGctMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLWxnLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctNCwgLnB5LWxnLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTQsIC5weC1sZy00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLWxnLTQsIC5weS1sZy00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy00LCAucHgtbGctNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctNSwgLnB5LWxnLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy01LCAucHgtbGctNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctNSwgLnB5LWxnLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy01LCAucHgtbGctNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtbGctYXV0bywgLm15LWxnLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLWxnLWF1dG8sIC5teC1sZy1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLWF1dG8sIC5teS1sZy1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1sZy1hdXRvLCAubXgtbGctYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLm0teGwtMCB7CgkJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0wLCAubXkteGwtMCB7CgkJbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMCwgLm14LXhsLTAgewoJCW1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkubWIteGwtMCwgLm15LXhsLTAgewoJCW1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTAsIC5teC14bC0wIHsKCQltYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwoJfQoJCgkubS14bC0xIHsKCQltYXJnaW46IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQteGwtMSwgLm15LXhsLTEgewoJCW1hcmdpbi10b3A6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMSwgLm14LXhsLTEgewoJCW1hcmdpbi1yaWdodDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC0xLCAubXkteGwtMSB7CgkJbWFyZ2luLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC14bC0xLCAubXgteGwtMSB7CgkJbWFyZ2luLWxlZnQ6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC0yIHsKCQltYXJnaW46IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0yLCAubXkteGwtMiB7CgkJbWFyZ2luLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLXhsLTIsIC5teC14bC0yIHsKCQltYXJnaW4tcmlnaHQ6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC0yLCAubXkteGwtMiB7CgkJbWFyZ2luLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTIsIC5teC14bC0yIHsKCQltYXJnaW4tbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm0teGwtMyB7CgkJbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0zLCAubXkteGwtMyB7CgkJbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMywgLm14LXhsLTMgewoJCW1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWIteGwtMywgLm15LXhsLTMgewoJCW1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTMsIC5teC14bC0zIHsKCQltYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC00IHsKCQltYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQteGwtNCwgLm15LXhsLTQgewoJCW1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtNCwgLm14LXhsLTQgewoJCW1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC00LCAubXkteGwtNCB7CgkJbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC14bC00LCAubXgteGwtNCB7CgkJbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC01IHsKCQltYXJnaW46IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXhsLTUsIC5teS14bC01IHsKCQltYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci14bC01LCAubXgteGwtNSB7CgkJbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC01LCAubXkteGwtNSB7CgkJbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwteGwtNSwgLm14LXhsLTUgewoJCW1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTAgewoJCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTAsIC5weS14bC0wIHsKCQlwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtMCwgLnB4LXhsLTAgewoJCXBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTAsIC5weS14bC0wIHsKCQlwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMCwgLnB4LXhsLTAgewoJCXBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwoJfQoJCgkucC14bC0xIHsKCQlwYWRkaW5nOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTEsIC5weS14bC0xIHsKCQlwYWRkaW5nLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC0xLCAucHgteGwtMSB7CgkJcGFkZGluZy1yaWdodDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wYi14bC0xLCAucHkteGwtMSB7CgkJcGFkZGluZy1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMSwgLnB4LXhsLTEgewoJCXBhZGRpbmctbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTIgewoJCXBhZGRpbmc6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wdC14bC0yLCAucHkteGwtMiB7CgkJcGFkZGluZy10b3A6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC0yLCAucHgteGwtMiB7CgkJcGFkZGluZy1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTIsIC5weS14bC0yIHsKCQlwYWRkaW5nLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBsLXhsLTIsIC5weC14bC0yIHsKCQlwYWRkaW5nLWxlZnQ6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTMgewoJCXBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTMsIC5weS14bC0zIHsKCQlwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtMywgLnB4LXhsLTMgewoJCXBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTMsIC5weS14bC0zIHsKCQlwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMywgLnB4LXhsLTMgewoJCXBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucC14bC00IHsKCQlwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTQsIC5weS14bC00IHsKCQlwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC00LCAucHgteGwtNCB7CgkJcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wYi14bC00LCAucHkteGwtNCB7CgkJcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtNCwgLnB4LXhsLTQgewoJCXBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTUgewoJCXBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTUsIC5weS14bC01IHsKCQlwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtNSwgLnB4LXhsLTUgewoJCXBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTUsIC5weS14bC01IHsKCQlwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtNSwgLnB4LXhsLTUgewoJCXBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC1hdXRvIHsKCQltYXJnaW46IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm10LXhsLWF1dG8sIC5teS14bC1hdXRvIHsKCQltYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci14bC1hdXRvLCAubXgteGwtYXV0byB7CgkJbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC1hdXRvLCAubXkteGwtYXV0byB7CgkJbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubWwteGwtYXV0bywgLm14LXhsLWF1dG8gewoJCW1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9Cn0KCi50ZXh0LW1vbm9zcGFjZSB7Cglmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9CgoudGV4dC1qdXN0aWZ5IHsKCXRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDsKfQoKLnRleHQtbm93cmFwIHsKCXdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKfQoKLnRleHQtdHJ1bmNhdGUgewoJb3ZlcmZsb3c6IGhpZGRlbjsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLnRleHQtbGVmdCB7Cgl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXJpZ2h0IHsKCXRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWNlbnRlciB7Cgl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkudGV4dC1zbS1sZWZ0IHsKCQl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS50ZXh0LXNtLXJpZ2h0IHsKCQl0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC1zbS1jZW50ZXIgewoJCXRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS50ZXh0LW1kLWxlZnQgewoJCXRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQtbWQtcmlnaHQgewoJCXRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cgl9CgkKCS50ZXh0LW1kLWNlbnRlciB7CgkJdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLnRleHQtbGctbGVmdCB7CgkJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC1sZy1yaWdodCB7CgkJdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQtbGctY2VudGVyIHsKCQl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLnRleHQteGwtbGVmdCB7CgkJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC14bC1yaWdodCB7CgkJdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQteGwtY2VudGVyIHsKCQl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KfQoKLnRleHQtbG93ZXJjYXNlIHsKCXRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtdXBwZXJjYXNlIHsKCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtY2FwaXRhbGl6ZSB7Cgl0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50Owp9CgouZm9udC13ZWlnaHQtbGlnaHQgewoJZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50Owp9CgouZm9udC13ZWlnaHQtbm9ybWFsIHsKCWZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LWJvbGQgewoJZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Owp9CgouZm9udC1pdGFsaWMgewoJZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlIHsKCWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXByaW1hcnkgewoJY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsKfQoKYS50ZXh0LXByaW1hcnk6aG92ZXIsIGEudGV4dC1wcmltYXJ5OmZvY3VzIHsKCWNvbG9yOiAjMDA2MmNjICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXNlY29uZGFyeSB7Cgljb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgphLnRleHQtc2Vjb25kYXJ5OmhvdmVyLCBhLnRleHQtc2Vjb25kYXJ5OmZvY3VzIHsKCWNvbG9yOiAjNTQ1YjYyICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXN1Y2Nlc3MgewoJY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDsKfQoKYS50ZXh0LXN1Y2Nlc3M6aG92ZXIsIGEudGV4dC1zdWNjZXNzOmZvY3VzIHsKCWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWluZm8gewoJY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKYS50ZXh0LWluZm86aG92ZXIsIGEudGV4dC1pbmZvOmZvY3VzIHsKCWNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdhcm5pbmcgewoJY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKYS50ZXh0LXdhcm5pbmc6aG92ZXIsIGEudGV4dC13YXJuaW5nOmZvY3VzIHsKCWNvbG9yOiAjZDM5ZTAwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWRhbmdlciB7Cgljb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50Owp9CgphLnRleHQtZGFuZ2VyOmhvdmVyLCBhLnRleHQtZGFuZ2VyOmZvY3VzIHsKCWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWxpZ2h0IHsKCWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1saWdodDpob3ZlciwgYS50ZXh0LWxpZ2h0OmZvY3VzIHsKCWNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWRhcmsgewoJY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKYS50ZXh0LWRhcms6aG92ZXIsIGEudGV4dC1kYXJrOmZvY3VzIHsKCWNvbG9yOiAjMWQyMTI0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWJvZHkgewoJY29sb3I6ICMyMTI1MjkgIWltcG9ydGFudDsKfQoKLnRleHQtbXV0ZWQgewoJY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKLnRleHQtYmxhY2stNTAgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlLTUwIHsKCWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KSAhaW1wb3J0YW50Owp9CgoudGV4dC1oaWRlIHsKCWZvbnQ6IDAvMCBhOwoJY29sb3I6IHRyYW5zcGFyZW50OwoJdGV4dC1zaGFkb3c6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogMDsKfQoKLnZpc2libGUgewoJdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9CgouaW52aXNpYmxlIHsKCXZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgpAbWVkaWEgcHJpbnQgewoJKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7CgkJdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKCQlib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCWE6bm90KC5idG4pIHsKCQl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCX0KCQoJYWJiclt0aXRsZV06OmFmdGVyIHsKCQljb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKCX0KCQoJcHJlIHsKCQl3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsKCX0KCQoJcHJlLCBibG9ja3F1b3RlIHsKCQlib3JkZXI6IDFweCBzb2xpZCAjYWRiNWJkOwoJCXBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKCX0KCQoJdGhlYWQgewoJCWRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKCX0KCQoJdHIsIGltZyB7CgkJcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwoJfQoJCglwLCBoMiwgaDMgewoJCW9ycGhhbnM6IDM7CgkJd2lkb3dzOiAzOwoJfQoJCgloMiwgaDMgewoJCXBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOwoJfQoJCglAcGFnZSB7CgkJc2l6ZTogYTM7Cgl9CgkKCWJvZHkgewoJCW1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDsKCX0KCQoJLmNvbnRhaW5lciB7CgkJbWluLXdpZHRoOiA5OTJweCAhaW1wb3J0YW50OwoJfQoJCgkubmF2YmFyIHsKCQlkaXNwbGF5OiBub25lOwoJfQoJCgkuYmFkZ2UgewoJCWJvcmRlcjogMXB4IHNvbGlkICMwMDA7Cgl9CgkKCS50YWJsZSB7CgkJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUgdGQsIC50YWJsZSB0aCB7CgkJYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUtYm9yZGVyZWQgdGgsIC50YWJsZS1ib3JkZXJlZCB0ZCB7CgkJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUtZGFyayB7CgkJY29sb3I6IGluaGVyaXQ7Cgl9CgkKCS50YWJsZS1kYXJrIHRoLCAudGFibGUtZGFyayB0ZCwgLnRhYmxlLWRhcmsgdGhlYWQgdGgsIC50YWJsZS1kYXJrIHRib2R5ICsgdGJvZHkgewoJCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKCX0KCQoJLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKCQljb2xvcjogaW5oZXJpdDsKCQlib3JkZXItY29sb3I6ICNkZWUyZTY7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/prefixed-bootstrap2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cjpyb290IHsKCS0tYmx1ZTogIzAwN2JmZjsKCS0taW5kaWdvOiAjNjYxMGYyOwoJLS1wdXJwbGU6ICM2ZjQyYzE7CgktLXBpbms6ICNlODNlOGM7CgktLXJlZDogI2RjMzU0NTsKCS0tb3JhbmdlOiAjZmQ3ZTE0OwoJLS15ZWxsb3c6ICNmZmMxMDc7CgktLWdyZWVuOiAjMjhhNzQ1OwoJLS10ZWFsOiAjMjBjOTk3OwoJLS1jeWFuOiAjMTdhMmI4OwoJLS13aGl0ZTogI2ZmZjsKCS0tZ3JheTogIzZjNzU3ZDsKCS0tZ3JheS1kYXJrOiAjMzQzYTQwOwoJLS1wcmltYXJ5OiAjMDA3YmZmOwoJLS1zZWNvbmRhcnk6ICM2Yzc1N2Q7CgktLXN1Y2Nlc3M6ICMyOGE3NDU7CgktLWluZm86ICMxN2EyYjg7CgktLXdhcm5pbmc6ICNmZmMxMDc7CgktLWRhbmdlcjogI2RjMzU0NTsKCS0tbGlnaHQ6ICNmOGY5ZmE7CgktLWRhcms6ICMzNDNhNDA7CgktLWJyZWFrcG9pbnQteHM6IDA7CgktLWJyZWFrcG9pbnQtc206IDU3NnB4OwoJLS1icmVha3BvaW50LW1kOiA3NjhweDsKCS0tYnJlYWtwb2ludC1sZzogOTkycHg7CgktLWJyZWFrcG9pbnQteGw6IDEyMDBweDsKCS0tZm9udC1mYW1pbHktc2Fucy1zZXJpZjogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCBTZWdvZSBVSSwgUm9ib3RvLCBIZWx2ZXRpY2EgTmV1ZSwgQXJpYWwsIHNhbnMtc2VyaWYsIEFwcGxlIENvbG9yIEVtb2ppLCBTZWdvZSBVSSBFbW9qaSwgU2Vnb2UgVUkgU3ltYm9sLCBOb3RvIENvbG9yIEVtb2ppOwoJLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgTGliZXJhdGlvbiBNb25vLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlOwp9CgoqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCmh0bWwgewoJZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CglsaW5lLWhlaWdodDogMS4xNTsKCS13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKCS1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwoJLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7Cgktd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7Cn0KCkAtbXMtdmlld3BvcnQgewoJd2lkdGg6IGRldmljZS13aWR0aDsKfQoKYXJ0aWNsZSwgYXNpZGUsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbmF2LCBzZWN0aW9uIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgpib2R5IHsKCW1hcmdpbjogMDsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7Cglmb250LXNpemU6IDFyZW07Cglmb250LXdlaWdodDogNDAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjMjEyNTI5OwoJdGV4dC1hbGlnbjogbGVmdDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KClt0YWJpbmRleD0iLTEiXTpmb2N1cyB7CglvdXRsaW5lOiAwICFpbXBvcnRhbnQ7Cn0KCmhyIHsKCWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwoJaGVpZ2h0OiAwOwoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYgewoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgpwIHsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAxcmVtOwp9CgphYmJyW3RpdGxlXSwgYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsKCWN1cnNvcjogaGVscDsKCWJvcmRlci1ib3R0b206IDA7Cn0KCmFkZHJlc3MgewoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0Owp9CgpvbCwgdWwsIGRsIHsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tYm90dG9tOiAxcmVtOwp9CgpvbCBvbCwgdWwgdWwsIG9sIHVsLCB1bCBvbCB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgpkdCB7Cglmb250LXdlaWdodDogNzAwOwp9CgpkZCB7CgltYXJnaW4tYm90dG9tOiAuNXJlbTsKCW1hcmdpbi1sZWZ0OiAwOwp9CgpibG9ja3F1b3RlIHsKCW1hcmdpbjogMCAwIDFyZW07Cn0KCmRmbiB7Cglmb250LXN0eWxlOiBpdGFsaWM7Cn0KCmIsIHN0cm9uZyB7Cglmb250LXdlaWdodDogYm9sZGVyOwp9CgpzbWFsbCB7Cglmb250LXNpemU6IDgwJTsKfQoKc3ViLCBzdXAgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZm9udC1zaXplOiA3NSU7CglsaW5lLWhlaWdodDogMDsKCXZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKc3ViIHsKCWJvdHRvbTogLS4yNWVtOwp9CgpzdXAgewoJdG9wOiAtLjVlbTsKfQoKYSB7Cgljb2xvcjogIzAwN2JmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsKfQoKYTpob3ZlciB7Cgljb2xvcjogIzAwNTZiMzsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKSB7Cgljb2xvcjogaW5oZXJpdDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKYTpub3QoW2hyZWZdKTpub3QoW3RhYmluZGV4XSk6aG92ZXIsIGE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmZvY3VzIHsKCWNvbG9yOiBpbmhlcml0OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7CglvdXRsaW5lOiAwOwp9CgpwcmUsIGNvZGUsIGtiZCwgc2FtcCB7Cglmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwoJZm9udC1zaXplOiAxZW07Cn0KCnByZSB7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCW92ZXJmbG93OiBhdXRvOwoJLW1zLW92ZXJmbG93LXN0eWxlOiBzY3JvbGxiYXI7Cn0KCmZpZ3VyZSB7CgltYXJnaW46IDAgMCAxcmVtOwp9CgppbWcgewoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWJvcmRlci1zdHlsZTogbm9uZTsKfQoKc3ZnIHsKCW92ZXJmbG93OiBoaWRkZW47Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Cgp0YWJsZSB7Cglib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9CgpjYXB0aW9uIHsKCXBhZGRpbmctdG9wOiAuNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjc1cmVtOwoJY29sb3I6ICM2Yzc1N2Q7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJY2FwdGlvbi1zaWRlOiBib3R0b207Cn0KCnRoIHsKCXRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCmxhYmVsIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgpidXR0b24gewoJYm9yZGVyLXJhZGl1czogMDsKfQoKYnV0dG9uOmZvY3VzIHsKCW91dGxpbmU6IDFweCBkb3R0ZWQ7CglvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7Cn0KCmlucHV0LCBidXR0b24sIHNlbGVjdCwgb3B0Z3JvdXAsIHRleHRhcmVhIHsKCW1hcmdpbjogMDsKCWZvbnQtZmFtaWx5OiBpbmhlcml0OwoJZm9udC1zaXplOiBpbmhlcml0OwoJbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCmJ1dHRvbiwgaW5wdXQgewoJb3ZlcmZsb3c6IHZpc2libGU7Cn0KCmJ1dHRvbiwgc2VsZWN0IHsKCXRleHQtdHJhbnNmb3JtOiBub25lOwp9CgpidXR0b24sIGh0bWwgW3R5cGU9ImJ1dHRvbiJdLCBbdHlwZT0icmVzZXQiXSwgW3R5cGU9InN1Ym1pdCJdIHsKCS13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CgpidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsIFt0eXBlPSJidXR0b24iXTo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9InJlc2V0Il06Oi1tb3otZm9jdXMtaW5uZXIsIFt0eXBlPSJzdWJtaXQiXTo6LW1vei1mb2N1cy1pbm5lciB7CglwYWRkaW5nOiAwOwoJYm9yZGVyLXN0eWxlOiBub25lOwp9CgppbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKCWJveC1zaXppbmc6IGJvcmRlci1ib3g7CglwYWRkaW5nOiAwOwp9CgppbnB1dFt0eXBlPSJkYXRlIl0sIGlucHV0W3R5cGU9InRpbWUiXSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSwgaW5wdXRbdHlwZT0ibW9udGgiXSB7Cgktd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7Cn0KCnRleHRhcmVhIHsKCW92ZXJmbG93OiBhdXRvOwoJcmVzaXplOiB2ZXJ0aWNhbDsKfQoKZmllbGRzZXQgewoJbWluLXdpZHRoOiAwOwoJcGFkZGluZzogMDsKCW1hcmdpbjogMDsKCWJvcmRlcjogMDsKfQoKbGVnZW5kIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7CgltYXgtd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAwOwoJbWFyZ2luLWJvdHRvbTogLjVyZW07Cglmb250LXNpemU6IDEuNXJlbTsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0OwoJY29sb3I6IGluaGVyaXQ7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Cgpwcm9ncmVzcyB7Cgl2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KClt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwgW3R5cGU9Im51bWJlciJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsKCWhlaWdodDogYXV0bzsKfQoKW3R5cGU9InNlYXJjaCJdIHsKCW91dGxpbmUtb2Zmc2V0OiAtMnB4OwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgpbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sIFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KCjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewoJZm9udDogaW5oZXJpdDsKCS13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CgpvdXRwdXQgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgpzdW1tYXJ5IHsKCWRpc3BsYXk6IGxpc3QtaXRlbTsKCWN1cnNvcjogcG9pbnRlcjsKfQoKdGVtcGxhdGUgewoJZGlzcGxheTogbm9uZTsKfQoKW2hpZGRlbl0gewoJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAuaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwoJZm9udC1mYW1pbHk6IGluaGVyaXQ7Cglmb250LXdlaWdodDogNTAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKCWNvbG9yOiBpbmhlcml0Owp9CgpoMSwgLmgxIHsKCWZvbnQtc2l6ZTogMi41cmVtOwp9CgpoMiwgLmgyIHsKCWZvbnQtc2l6ZTogMnJlbTsKfQoKaDMsIC5oMyB7Cglmb250LXNpemU6IDEuNzVyZW07Cn0KCmg0LCAuaDQgewoJZm9udC1zaXplOiAxLjVyZW07Cn0KCmg1LCAuaDUgewoJZm9udC1zaXplOiAxLjI1cmVtOwp9CgpoNiwgLmg2IHsKCWZvbnQtc2l6ZTogMXJlbTsKfQoKLmxlYWQgewoJZm9udC1zaXplOiAxLjI1cmVtOwoJZm9udC13ZWlnaHQ6IDMwMDsKfQoKLmRpc3BsYXktMSB7Cglmb250LXNpemU6IDZyZW07Cglmb250LXdlaWdodDogMzAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKfQoKLmRpc3BsYXktMiB7Cglmb250LXNpemU6IDUuNXJlbTsKCWZvbnQtd2VpZ2h0OiAzMDA7CglsaW5lLWhlaWdodDogMS4yOwp9CgouZGlzcGxheS0zIHsKCWZvbnQtc2l6ZTogNC41cmVtOwoJZm9udC13ZWlnaHQ6IDMwMDsKCWxpbmUtaGVpZ2h0OiAxLjI7Cn0KCi5kaXNwbGF5LTQgewoJZm9udC1zaXplOiAzLjVyZW07Cglmb250LXdlaWdodDogMzAwOwoJbGluZS1oZWlnaHQ6IDEuMjsKfQoKaHIgewoJbWFyZ2luLXRvcDogMXJlbTsKCW1hcmdpbi1ib3R0b206IDFyZW07Cglib3JkZXI6IDA7Cglib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMSk7Cn0KCnNtYWxsLCAuc21hbGwgewoJZm9udC1zaXplOiA4MCU7Cglmb250LXdlaWdodDogNDAwOwp9CgptYXJrLCAubWFyayB7CglwYWRkaW5nOiAuMmVtOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoKLmxpc3QtdW5zdHlsZWQgewoJcGFkZGluZy1sZWZ0OiAwOwoJbGlzdC1zdHlsZTogbm9uZTsKfQoKLmxpc3QtaW5saW5lIHsKCXBhZGRpbmctbGVmdDogMDsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5saXN0LWlubGluZS1pdGVtIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmxpc3QtaW5saW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7CgltYXJnaW4tcmlnaHQ6IC41cmVtOwp9CgouaW5pdGlhbGlzbSB7Cglmb250LXNpemU6IDkwJTsKCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi5ibG9ja3F1b3RlIHsKCW1hcmdpbi1ib3R0b206IDFyZW07Cglmb250LXNpemU6IDEuMjVyZW07Cn0KCi5ibG9ja3F1b3RlLWZvb3RlciB7CglkaXNwbGF5OiBibG9jazsKCWZvbnQtc2l6ZTogODAlOwoJY29sb3I6ICM2Yzc1N2Q7Cn0KCi5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHsKCWNvbnRlbnQ6ICLigJTCoCI7Cn0KCi5pbWctZmx1aWQgewoJbWF4LXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBhdXRvOwp9CgouaW1nLXRodW1ibmFpbCB7CglwYWRkaW5nOiAuMjVyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKCW1heC13aWR0aDogMTAwJTsKCWhlaWdodDogYXV0bzsKfQoKLmZpZ3VyZSB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi5maWd1cmUtaW1nIHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwoJbGluZS1oZWlnaHQ6IDE7Cn0KCi5maWd1cmUtY2FwdGlvbiB7Cglmb250LXNpemU6IDkwJTsKCWNvbG9yOiAjNmM3NTdkOwp9Cgpjb2RlIHsKCWZvbnQtc2l6ZTogODcuNSU7Cgljb2xvcjogI2U4M2U4YzsKCXdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KCmEgPiBjb2RlIHsKCWNvbG9yOiBpbmhlcml0Owp9CgprYmQgewoJcGFkZGluZzogLjJyZW0gLjRyZW07Cglmb250LXNpemU6IDg3LjUlOwoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCmtiZCBrYmQgewoJcGFkZGluZzogMDsKCWZvbnQtc2l6ZTogMTAwJTsKCWZvbnQtd2VpZ2h0OiA3MDA7Cn0KCnByZSB7CglkaXNwbGF5OiBibG9jazsKCWZvbnQtc2l6ZTogODcuNSU7Cgljb2xvcjogIzIxMjUyOTsKfQoKcHJlIGNvZGUgewoJZm9udC1zaXplOiBpbmhlcml0OwoJY29sb3I6IGluaGVyaXQ7Cgl3b3JkLWJyZWFrOiBub3JtYWw7Cn0KCi5wcmUtc2Nyb2xsYWJsZSB7CgltYXgtaGVpZ2h0OiAzNDBweDsKCW92ZXJmbG93LXk6IHNjcm9sbDsKfQoKLmNvbnRhaW5lciB7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmctcmlnaHQ6IDE1cHg7CglwYWRkaW5nLWxlZnQ6IDE1cHg7CgltYXJnaW4tcmlnaHQ6IGF1dG87CgltYXJnaW4tbGVmdDogYXV0bzsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY29udGFpbmVyIHsKCQltYXgtd2lkdGg6IDU0MHB4OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5jb250YWluZXIgewoJCW1heC13aWR0aDogNzIwcHg7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmNvbnRhaW5lciB7CgkJbWF4LXdpZHRoOiA5NjBweDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLmNvbnRhaW5lciB7CgkJbWF4LXdpZHRoOiAxMTQwcHg7Cgl9Cn0KCi5jb250YWluZXItZmx1aWQgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nLXJpZ2h0OiAxNXB4OwoJcGFkZGluZy1sZWZ0OiAxNXB4OwoJbWFyZ2luLXJpZ2h0OiBhdXRvOwoJbWFyZ2luLWxlZnQ6IGF1dG87Cn0KCi5yb3cgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCW1hcmdpbi1yaWdodDogLTE1cHg7CgltYXJnaW4tbGVmdDogLTE1cHg7Cn0KCi5uby1ndXR0ZXJzIHsKCW1hcmdpbi1yaWdodDogMDsKCW1hcmdpbi1sZWZ0OiAwOwp9Cgoubm8tZ3V0dGVycyA+IC5jb2wsIC5uby1ndXR0ZXJzID4gW2NsYXNzKj0iY29sLSJdIHsKCXBhZGRpbmctcmlnaHQ6IDA7CglwYWRkaW5nLWxlZnQ6IDA7Cn0KCi5jb2wtMSwgLmNvbC0yLCAuY29sLTMsIC5jb2wtNCwgLmNvbC01LCAuY29sLTYsIC5jb2wtNywgLmNvbC04LCAuY29sLTksIC5jb2wtMTAsIC5jb2wtMTEsIC5jb2wtMTIsIC5jb2wsIC5jb2wtYXV0bywgLmNvbC1zbS0xLCAuY29sLXNtLTIsIC5jb2wtc20tMywgLmNvbC1zbS00LCAuY29sLXNtLTUsIC5jb2wtc20tNiwgLmNvbC1zbS03LCAuY29sLXNtLTgsIC5jb2wtc20tOSwgLmNvbC1zbS0xMCwgLmNvbC1zbS0xMSwgLmNvbC1zbS0xMiwgLmNvbC1zbSwgLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLCAuY29sLW1kLWF1dG8sIC5jb2wtbGctMSwgLmNvbC1sZy0yLCAuY29sLWxnLTMsIC5jb2wtbGctNCwgLmNvbC1sZy01LCAuY29sLWxnLTYsIC5jb2wtbGctNywgLmNvbC1sZy04LCAuY29sLWxnLTksIC5jb2wtbGctMTAsIC5jb2wtbGctMTEsIC5jb2wtbGctMTIsIC5jb2wtbGcsIC5jb2wtbGctYXV0bywgLmNvbC14bC0xLCAuY29sLXhsLTIsIC5jb2wteGwtMywgLmNvbC14bC00LCAuY29sLXhsLTUsIC5jb2wteGwtNiwgLmNvbC14bC03LCAuY29sLXhsLTgsIC5jb2wteGwtOSwgLmNvbC14bC0xMCwgLmNvbC14bC0xMSwgLmNvbC14bC0xMiwgLmNvbC14bCwgLmNvbC14bC1hdXRvIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXdpZHRoOiAxMDAlOwoJbWluLWhlaWdodDogMXB4OwoJcGFkZGluZy1yaWdodDogMTVweDsKCXBhZGRpbmctbGVmdDogMTVweDsKfQoKLmNvbCB7CgktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCWZsZXgtYmFzaXM6IDA7CgktbXMtZmxleC1wb3NpdGl2ZTogMTsKCWZsZXgtZ3JvdzogMTsKCW1heC13aWR0aDogMTAwJTsKfQoKLmNvbC1hdXRvIHsKCS1tcy1mbGV4OiAwIDAgYXV0bzsKCWZsZXg6IDAgMCBhdXRvOwoJd2lkdGg6IGF1dG87CgltYXgtd2lkdGg6IG5vbmU7Cn0KCi5jb2wtMSB7CgktbXMtZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CglmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCW1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKfQoKLmNvbC0yIHsKCS1tcy1mbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwp9CgouY29sLTMgewoJLW1zLWZsZXg6IDAgMCAyNSU7CglmbGV4OiAwIDAgMjUlOwoJbWF4LXdpZHRoOiAyNSU7Cn0KCi5jb2wtNCB7CgktbXMtZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKfQoKLmNvbC01IHsKCS1tcy1mbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwp9CgouY29sLTYgewoJLW1zLWZsZXg6IDAgMCA1MCU7CglmbGV4OiAwIDAgNTAlOwoJbWF4LXdpZHRoOiA1MCU7Cn0KCi5jb2wtNyB7CgktbXMtZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKfQoKLmNvbC04IHsKCS1tcy1mbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CglmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgltYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwp9CgouY29sLTkgewoJLW1zLWZsZXg6IDAgMCA3NSU7CglmbGV4OiAwIDAgNzUlOwoJbWF4LXdpZHRoOiA3NSU7Cn0KCi5jb2wtMTAgewoJLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCW1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7Cn0KCi5jb2wtMTEgewoJLW1zLWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCW1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7Cn0KCi5jb2wtMTIgewoJLW1zLWZsZXg6IDAgMCAxMDAlOwoJZmxleDogMCAwIDEwMCU7CgltYXgtd2lkdGg6IDEwMCU7Cn0KCi5vcmRlci1maXJzdCB7CgktbXMtZmxleC1vcmRlcjogLTE7CglvcmRlcjogLTE7Cn0KCi5vcmRlci1sYXN0IHsKCS1tcy1mbGV4LW9yZGVyOiAxMzsKCW9yZGVyOiAxMzsKfQoKLm9yZGVyLTAgewoJLW1zLWZsZXgtb3JkZXI6IDA7CglvcmRlcjogMDsKfQoKLm9yZGVyLTEgewoJLW1zLWZsZXgtb3JkZXI6IDE7CglvcmRlcjogMTsKfQoKLm9yZGVyLTIgewoJLW1zLWZsZXgtb3JkZXI6IDI7CglvcmRlcjogMjsKfQoKLm9yZGVyLTMgewoJLW1zLWZsZXgtb3JkZXI6IDM7CglvcmRlcjogMzsKfQoKLm9yZGVyLTQgewoJLW1zLWZsZXgtb3JkZXI6IDQ7CglvcmRlcjogNDsKfQoKLm9yZGVyLTUgewoJLW1zLWZsZXgtb3JkZXI6IDU7CglvcmRlcjogNTsKfQoKLm9yZGVyLTYgewoJLW1zLWZsZXgtb3JkZXI6IDY7CglvcmRlcjogNjsKfQoKLm9yZGVyLTcgewoJLW1zLWZsZXgtb3JkZXI6IDc7CglvcmRlcjogNzsKfQoKLm9yZGVyLTggewoJLW1zLWZsZXgtb3JkZXI6IDg7CglvcmRlcjogODsKfQoKLm9yZGVyLTkgewoJLW1zLWZsZXgtb3JkZXI6IDk7CglvcmRlcjogOTsKfQoKLm9yZGVyLTEwIHsKCS1tcy1mbGV4LW9yZGVyOiAxMDsKCW9yZGVyOiAxMDsKfQoKLm9yZGVyLTExIHsKCS1tcy1mbGV4LW9yZGVyOiAxMTsKCW9yZGVyOiAxMTsKfQoKLm9yZGVyLTEyIHsKCS1tcy1mbGV4LW9yZGVyOiAxMjsKCW9yZGVyOiAxMjsKfQoKLm9mZnNldC0xIHsKCW1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwp9Cgoub2Zmc2V0LTIgewoJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwp9Cgoub2Zmc2V0LTMgewoJbWFyZ2luLWxlZnQ6IDI1JTsKfQoKLm9mZnNldC00IHsKCW1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKfQoKLm9mZnNldC01IHsKCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKfQoKLm9mZnNldC02IHsKCW1hcmdpbi1sZWZ0OiA1MCU7Cn0KCi5vZmZzZXQtNyB7CgltYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cn0KCi5vZmZzZXQtOCB7CgltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cn0KCi5vZmZzZXQtOSB7CgltYXJnaW4tbGVmdDogNzUlOwp9Cgoub2Zmc2V0LTEwIHsKCW1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKfQoKLm9mZnNldC0xMSB7CgltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewoJLmNvbC1zbSB7CgkJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IDA7CgkJZmxleC1iYXNpczogMDsKCQktbXMtZmxleC1wb3NpdGl2ZTogMTsKCQlmbGV4LWdyb3c6IDE7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkuY29sLXNtLWF1dG8gewoJCS1tcy1mbGV4OiAwIDAgYXV0bzsKCQlmbGV4OiAwIDAgYXV0bzsKCQl3aWR0aDogYXV0bzsKCQltYXgtd2lkdGg6IG5vbmU7Cgl9CgkKCS5jb2wtc20tMSB7CgkJLW1zLWZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS0yIHsKCQktbXMtZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTMgewoJCS1tcy1mbGV4OiAwIDAgMjUlOwoJCWZsZXg6IDAgMCAyNSU7CgkJbWF4LXdpZHRoOiAyNSU7Cgl9CgkKCS5jb2wtc20tNCB7CgkJLW1zLWZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS01IHsKCQktbXMtZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTYgewoJCS1tcy1mbGV4OiAwIDAgNTAlOwoJCWZsZXg6IDAgMCA1MCU7CgkJbWF4LXdpZHRoOiA1MCU7Cgl9CgkKCS5jb2wtc20tNyB7CgkJLW1zLWZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1zbS04IHsKCQktbXMtZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXNtLTkgewoJCS1tcy1mbGV4OiAwIDAgNzUlOwoJCWZsZXg6IDAgMCA3NSU7CgkJbWF4LXdpZHRoOiA3NSU7Cgl9CgkKCS5jb2wtc20tMTAgewoJCS1tcy1mbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtc20tMTEgewoJCS1tcy1mbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtc20tMTIgewoJCS1tcy1mbGV4OiAwIDAgMTAwJTsKCQlmbGV4OiAwIDAgMTAwJTsKCQltYXgtd2lkdGg6IDEwMCU7Cgl9CgkKCS5vcmRlci1zbS1maXJzdCB7CgkJLW1zLWZsZXgtb3JkZXI6IC0xOwoJCW9yZGVyOiAtMTsKCX0KCQoJLm9yZGVyLXNtLWxhc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAxMzsKCQlvcmRlcjogMTM7Cgl9CgkKCS5vcmRlci1zbS0wIHsKCQktbXMtZmxleC1vcmRlcjogMDsKCQlvcmRlcjogMDsKCX0KCQoJLm9yZGVyLXNtLTEgewoJCS1tcy1mbGV4LW9yZGVyOiAxOwoJCW9yZGVyOiAxOwoJfQoJCgkub3JkZXItc20tMiB7CgkJLW1zLWZsZXgtb3JkZXI6IDI7CgkJb3JkZXI6IDI7Cgl9CgkKCS5vcmRlci1zbS0zIHsKCQktbXMtZmxleC1vcmRlcjogMzsKCQlvcmRlcjogMzsKCX0KCQoJLm9yZGVyLXNtLTQgewoJCS1tcy1mbGV4LW9yZGVyOiA0OwoJCW9yZGVyOiA0OwoJfQoJCgkub3JkZXItc20tNSB7CgkJLW1zLWZsZXgtb3JkZXI6IDU7CgkJb3JkZXI6IDU7Cgl9CgkKCS5vcmRlci1zbS02IHsKCQktbXMtZmxleC1vcmRlcjogNjsKCQlvcmRlcjogNjsKCX0KCQoJLm9yZGVyLXNtLTcgewoJCS1tcy1mbGV4LW9yZGVyOiA3OwoJCW9yZGVyOiA3OwoJfQoJCgkub3JkZXItc20tOCB7CgkJLW1zLWZsZXgtb3JkZXI6IDg7CgkJb3JkZXI6IDg7Cgl9CgkKCS5vcmRlci1zbS05IHsKCQktbXMtZmxleC1vcmRlcjogOTsKCQlvcmRlcjogOTsKCX0KCQoJLm9yZGVyLXNtLTEwIHsKCQktbXMtZmxleC1vcmRlcjogMTA7CgkJb3JkZXI6IDEwOwoJfQoJCgkub3JkZXItc20tMTEgewoJCS1tcy1mbGV4LW9yZGVyOiAxMTsKCQlvcmRlcjogMTE7Cgl9CgkKCS5vcmRlci1zbS0xMiB7CgkJLW1zLWZsZXgtb3JkZXI6IDEyOwoJCW9yZGVyOiAxMjsKCX0KCQoJLm9mZnNldC1zbS0wIHsKCQltYXJnaW4tbGVmdDogMDsKCX0KCQoJLm9mZnNldC1zbS0xIHsKCQltYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1zbS0yIHsKCQltYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtc20tMyB7CgkJbWFyZ2luLWxlZnQ6IDI1JTsKCX0KCQoJLm9mZnNldC1zbS00IHsKCQltYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtc20tNSB7CgkJbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LXNtLTYgewoJCW1hcmdpbi1sZWZ0OiA1MCU7Cgl9CgkKCS5vZmZzZXQtc20tNyB7CgkJbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXNtLTggewoJCW1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1zbS05IHsKCQltYXJnaW4tbGVmdDogNzUlOwoJfQoJCgkub2Zmc2V0LXNtLTEwIHsKCQltYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtc20tMTEgewoJCW1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkuY29sLW1kIHsKCQktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCQlmbGV4LWJhc2lzOiAwOwoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxOwoJCWZsZXgtZ3JvdzogMTsKCQltYXgtd2lkdGg6IDEwMCU7Cgl9CgkKCS5jb2wtbWQtYXV0byB7CgkJLW1zLWZsZXg6IDAgMCBhdXRvOwoJCWZsZXg6IDAgMCBhdXRvOwoJCXdpZHRoOiBhdXRvOwoJCW1heC13aWR0aDogbm9uZTsKCX0KCQoJLmNvbC1tZC0xIHsKCQktbXMtZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA4LjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTIgewoJCS1tcy1mbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogMTYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtMyB7CgkJLW1zLWZsZXg6IDAgMCAyNSU7CgkJZmxleDogMCAwIDI1JTsKCQltYXgtd2lkdGg6IDI1JTsKCX0KCQoJLmNvbC1tZC00IHsKCQktbXMtZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTUgewoJCS1tcy1mbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogNDEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtNiB7CgkJLW1zLWZsZXg6IDAgMCA1MCU7CgkJZmxleDogMCAwIDUwJTsKCQltYXgtd2lkdGg6IDUwJTsKCX0KCQoJLmNvbC1tZC03IHsKCQktbXMtZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDU4LjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLW1kLTggewoJCS1tcy1mbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwoJCW1heC13aWR0aDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5jb2wtbWQtOSB7CgkJLW1zLWZsZXg6IDAgMCA3NSU7CgkJZmxleDogMCAwIDc1JTsKCQltYXgtd2lkdGg6IDc1JTsKCX0KCQoJLmNvbC1tZC0xMCB7CgkJLW1zLWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CgkJbWF4LXdpZHRoOiA4My4zMzMzMzMzMzMzJTsKCX0KCQoJLmNvbC1tZC0xMSB7CgkJLW1zLWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA5MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1tZC0xMiB7CgkJLW1zLWZsZXg6IDAgMCAxMDAlOwoJCWZsZXg6IDAgMCAxMDAlOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLm9yZGVyLW1kLWZpcnN0IHsKCQktbXMtZmxleC1vcmRlcjogLTE7CgkJb3JkZXI6IC0xOwoJfQoJCgkub3JkZXItbWQtbGFzdCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEzOwoJCW9yZGVyOiAxMzsKCX0KCQoJLm9yZGVyLW1kLTAgewoJCS1tcy1mbGV4LW9yZGVyOiAwOwoJCW9yZGVyOiAwOwoJfQoJCgkub3JkZXItbWQtMSB7CgkJLW1zLWZsZXgtb3JkZXI6IDE7CgkJb3JkZXI6IDE7Cgl9CgkKCS5vcmRlci1tZC0yIHsKCQktbXMtZmxleC1vcmRlcjogMjsKCQlvcmRlcjogMjsKCX0KCQoJLm9yZGVyLW1kLTMgewoJCS1tcy1mbGV4LW9yZGVyOiAzOwoJCW9yZGVyOiAzOwoJfQoJCgkub3JkZXItbWQtNCB7CgkJLW1zLWZsZXgtb3JkZXI6IDQ7CgkJb3JkZXI6IDQ7Cgl9CgkKCS5vcmRlci1tZC01IHsKCQktbXMtZmxleC1vcmRlcjogNTsKCQlvcmRlcjogNTsKCX0KCQoJLm9yZGVyLW1kLTYgewoJCS1tcy1mbGV4LW9yZGVyOiA2OwoJCW9yZGVyOiA2OwoJfQoJCgkub3JkZXItbWQtNyB7CgkJLW1zLWZsZXgtb3JkZXI6IDc7CgkJb3JkZXI6IDc7Cgl9CgkKCS5vcmRlci1tZC04IHsKCQktbXMtZmxleC1vcmRlcjogODsKCQlvcmRlcjogODsKCX0KCQoJLm9yZGVyLW1kLTkgewoJCS1tcy1mbGV4LW9yZGVyOiA5OwoJCW9yZGVyOiA5OwoJfQoJCgkub3JkZXItbWQtMTAgewoJCS1tcy1mbGV4LW9yZGVyOiAxMDsKCQlvcmRlcjogMTA7Cgl9CgkKCS5vcmRlci1tZC0xMSB7CgkJLW1zLWZsZXgtb3JkZXI6IDExOwoJCW9yZGVyOiAxMTsKCX0KCQoJLm9yZGVyLW1kLTEyIHsKCQktbXMtZmxleC1vcmRlcjogMTI7CgkJb3JkZXI6IDEyOwoJfQoJCgkub2Zmc2V0LW1kLTAgewoJCW1hcmdpbi1sZWZ0OiAwOwoJfQoJCgkub2Zmc2V0LW1kLTEgewoJCW1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LW1kLTIgewoJCW1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1tZC0zIHsKCQltYXJnaW4tbGVmdDogMjUlOwoJfQoJCgkub2Zmc2V0LW1kLTQgewoJCW1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1tZC01IHsKCQltYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtbWQtNiB7CgkJbWFyZ2luLWxlZnQ6IDUwJTsKCX0KCQoJLm9mZnNldC1tZC03IHsKCQltYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtbWQtOCB7CgkJbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LW1kLTkgewoJCW1hcmdpbi1sZWZ0OiA3NSU7Cgl9CgkKCS5vZmZzZXQtbWQtMTAgewoJCW1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1tZC0xMSB7CgkJbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclOwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKCS5jb2wtbGcgewoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwoJCWZsZXgtYmFzaXM6IDA7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDE7CgkJZmxleC1ncm93OiAxOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLmNvbC1sZy1hdXRvIHsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJd2lkdGg6IGF1dG87CgkJbWF4LXdpZHRoOiBub25lOwoJfQoJCgkuY29sLWxnLTEgewoJCS1tcy1mbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctMiB7CgkJLW1zLWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy0zIHsKCQktbXMtZmxleDogMCAwIDI1JTsKCQlmbGV4OiAwIDAgMjUlOwoJCW1heC13aWR0aDogMjUlOwoJfQoJCgkuY29sLWxnLTQgewoJCS1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctNSB7CgkJLW1zLWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy02IHsKCQktbXMtZmxleDogMCAwIDUwJTsKCQlmbGV4OiAwIDAgNTAlOwoJCW1heC13aWR0aDogNTAlOwoJfQoJCgkuY29sLWxnLTcgewoJCS1tcy1mbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wtbGctOCB7CgkJLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC1sZy05IHsKCQktbXMtZmxleDogMCAwIDc1JTsKCQlmbGV4OiAwIDAgNzUlOwoJCW1heC13aWR0aDogNzUlOwoJfQoJCgkuY29sLWxnLTEwIHsKCQktbXMtZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLWxnLTExIHsKCQktbXMtZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLWxnLTEyIHsKCQktbXMtZmxleDogMCAwIDEwMCU7CgkJZmxleDogMCAwIDEwMCU7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkub3JkZXItbGctZmlyc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAtMTsKCQlvcmRlcjogLTE7Cgl9CgkKCS5vcmRlci1sZy1sYXN0IHsKCQktbXMtZmxleC1vcmRlcjogMTM7CgkJb3JkZXI6IDEzOwoJfQoJCgkub3JkZXItbGctMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDA7CgkJb3JkZXI6IDA7Cgl9CgkKCS5vcmRlci1sZy0xIHsKCQktbXMtZmxleC1vcmRlcjogMTsKCQlvcmRlcjogMTsKCX0KCQoJLm9yZGVyLWxnLTIgewoJCS1tcy1mbGV4LW9yZGVyOiAyOwoJCW9yZGVyOiAyOwoJfQoJCgkub3JkZXItbGctMyB7CgkJLW1zLWZsZXgtb3JkZXI6IDM7CgkJb3JkZXI6IDM7Cgl9CgkKCS5vcmRlci1sZy00IHsKCQktbXMtZmxleC1vcmRlcjogNDsKCQlvcmRlcjogNDsKCX0KCQoJLm9yZGVyLWxnLTUgewoJCS1tcy1mbGV4LW9yZGVyOiA1OwoJCW9yZGVyOiA1OwoJfQoJCgkub3JkZXItbGctNiB7CgkJLW1zLWZsZXgtb3JkZXI6IDY7CgkJb3JkZXI6IDY7Cgl9CgkKCS5vcmRlci1sZy03IHsKCQktbXMtZmxleC1vcmRlcjogNzsKCQlvcmRlcjogNzsKCX0KCQoJLm9yZGVyLWxnLTggewoJCS1tcy1mbGV4LW9yZGVyOiA4OwoJCW9yZGVyOiA4OwoJfQoJCgkub3JkZXItbGctOSB7CgkJLW1zLWZsZXgtb3JkZXI6IDk7CgkJb3JkZXI6IDk7Cgl9CgkKCS5vcmRlci1sZy0xMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEwOwoJCW9yZGVyOiAxMDsKCX0KCQoJLm9yZGVyLWxnLTExIHsKCQktbXMtZmxleC1vcmRlcjogMTE7CgkJb3JkZXI6IDExOwoJfQoJCgkub3JkZXItbGctMTIgewoJCS1tcy1mbGV4LW9yZGVyOiAxMjsKCQlvcmRlcjogMTI7Cgl9CgkKCS5vZmZzZXQtbGctMCB7CgkJbWFyZ2luLWxlZnQ6IDA7Cgl9CgkKCS5vZmZzZXQtbGctMSB7CgkJbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQtbGctMiB7CgkJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LWxnLTMgewoJCW1hcmdpbi1sZWZ0OiAyNSU7Cgl9CgkKCS5vZmZzZXQtbGctNCB7CgkJbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LWxnLTUgewoJCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC1sZy02IHsKCQltYXJnaW4tbGVmdDogNTAlOwoJfQoJCgkub2Zmc2V0LWxnLTcgewoJCW1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC1sZy04IHsKCQltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQtbGctOSB7CgkJbWFyZ2luLWxlZnQ6IDc1JTsKCX0KCQoJLm9mZnNldC1sZy0xMCB7CgkJbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LWxnLTExIHsKCQltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKCS5jb2wteGwgewoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwOwoJCWZsZXgtYmFzaXM6IDA7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDE7CgkJZmxleC1ncm93OiAxOwoJCW1heC13aWR0aDogMTAwJTsKCX0KCQoJLmNvbC14bC1hdXRvIHsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJd2lkdGg6IGF1dG87CgkJbWF4LXdpZHRoOiBub25lOwoJfQoJCgkuY29sLXhsLTEgewoJCS1tcy1mbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQlmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtMiB7CgkJLW1zLWZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC0zIHsKCQktbXMtZmxleDogMCAwIDI1JTsKCQlmbGV4OiAwIDAgMjUlOwoJCW1heC13aWR0aDogMjUlOwoJfQoJCgkuY29sLXhsLTQgewoJCS1tcy1mbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtNSB7CgkJLW1zLWZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC02IHsKCQktbXMtZmxleDogMCAwIDUwJTsKCQlmbGV4OiAwIDAgNTAlOwoJCW1heC13aWR0aDogNTAlOwoJfQoJCgkuY29sLXhsLTcgewoJCS1tcy1mbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CgkJZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwoJCW1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7Cgl9CgkKCS5jb2wteGwtOCB7CgkJLW1zLWZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKCQlmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CgkJbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKCX0KCQoJLmNvbC14bC05IHsKCQktbXMtZmxleDogMCAwIDc1JTsKCQlmbGV4OiAwIDAgNzUlOwoJCW1heC13aWR0aDogNzUlOwoJfQoJCgkuY29sLXhsLTEwIHsKCQktbXMtZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwoJCWZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKCQltYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkuY29sLXhsLTExIHsKCQktbXMtZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwoJCWZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKCQltYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwoJfQoJCgkuY29sLXhsLTEyIHsKCQktbXMtZmxleDogMCAwIDEwMCU7CgkJZmxleDogMCAwIDEwMCU7CgkJbWF4LXdpZHRoOiAxMDAlOwoJfQoJCgkub3JkZXIteGwtZmlyc3QgewoJCS1tcy1mbGV4LW9yZGVyOiAtMTsKCQlvcmRlcjogLTE7Cgl9CgkKCS5vcmRlci14bC1sYXN0IHsKCQktbXMtZmxleC1vcmRlcjogMTM7CgkJb3JkZXI6IDEzOwoJfQoJCgkub3JkZXIteGwtMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDA7CgkJb3JkZXI6IDA7Cgl9CgkKCS5vcmRlci14bC0xIHsKCQktbXMtZmxleC1vcmRlcjogMTsKCQlvcmRlcjogMTsKCX0KCQoJLm9yZGVyLXhsLTIgewoJCS1tcy1mbGV4LW9yZGVyOiAyOwoJCW9yZGVyOiAyOwoJfQoJCgkub3JkZXIteGwtMyB7CgkJLW1zLWZsZXgtb3JkZXI6IDM7CgkJb3JkZXI6IDM7Cgl9CgkKCS5vcmRlci14bC00IHsKCQktbXMtZmxleC1vcmRlcjogNDsKCQlvcmRlcjogNDsKCX0KCQoJLm9yZGVyLXhsLTUgewoJCS1tcy1mbGV4LW9yZGVyOiA1OwoJCW9yZGVyOiA1OwoJfQoJCgkub3JkZXIteGwtNiB7CgkJLW1zLWZsZXgtb3JkZXI6IDY7CgkJb3JkZXI6IDY7Cgl9CgkKCS5vcmRlci14bC03IHsKCQktbXMtZmxleC1vcmRlcjogNzsKCQlvcmRlcjogNzsKCX0KCQoJLm9yZGVyLXhsLTggewoJCS1tcy1mbGV4LW9yZGVyOiA4OwoJCW9yZGVyOiA4OwoJfQoJCgkub3JkZXIteGwtOSB7CgkJLW1zLWZsZXgtb3JkZXI6IDk7CgkJb3JkZXI6IDk7Cgl9CgkKCS5vcmRlci14bC0xMCB7CgkJLW1zLWZsZXgtb3JkZXI6IDEwOwoJCW9yZGVyOiAxMDsKCX0KCQoJLm9yZGVyLXhsLTExIHsKCQktbXMtZmxleC1vcmRlcjogMTE7CgkJb3JkZXI6IDExOwoJfQoJCgkub3JkZXIteGwtMTIgewoJCS1tcy1mbGV4LW9yZGVyOiAxMjsKCQlvcmRlcjogMTI7Cgl9CgkKCS5vZmZzZXQteGwtMCB7CgkJbWFyZ2luLWxlZnQ6IDA7Cgl9CgkKCS5vZmZzZXQteGwtMSB7CgkJbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7Cgl9CgkKCS5vZmZzZXQteGwtMiB7CgkJbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwoJfQoJCgkub2Zmc2V0LXhsLTMgewoJCW1hcmdpbi1sZWZ0OiAyNSU7Cgl9CgkKCS5vZmZzZXQteGwtNCB7CgkJbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXhsLTUgewoJCW1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKCX0KCQoJLm9mZnNldC14bC02IHsKCQltYXJnaW4tbGVmdDogNTAlOwoJfQoJCgkub2Zmc2V0LXhsLTcgewoJCW1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKCX0KCQoJLm9mZnNldC14bC04IHsKCQltYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cgl9CgkKCS5vZmZzZXQteGwtOSB7CgkJbWFyZ2luLWxlZnQ6IDc1JTsKCX0KCQoJLm9mZnNldC14bC0xMCB7CgkJbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwoJfQoJCgkub2Zmc2V0LXhsLTExIHsKCQltYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cgl9Cn0KCi50YWJsZSB7Cgl3aWR0aDogMTAwJTsKCW1hcmdpbi1ib3R0b206IDFyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLnRhYmxlIHRoLCAudGFibGUgdGQgewoJcGFkZGluZzogLjc1cmVtOwoJdmVydGljYWwtYWxpZ246IHRvcDsKCWJvcmRlci10b3A6IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGhlYWQgdGggewoJdmVydGljYWwtYWxpZ246IGJvdHRvbTsKCWJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGVlMmU2Owp9CgoudGFibGUgdGJvZHkgKyB0Ym9keSB7Cglib3JkZXItdG9wOiAycHggc29saWQgI2RlZTJlNjsKfQoKLnRhYmxlIC50YWJsZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgoudGFibGUtc20gdGgsIC50YWJsZS1zbSB0ZCB7CglwYWRkaW5nOiAuM3JlbTsKfQoKLnRhYmxlLWJvcmRlcmVkIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRkIHsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi50YWJsZS1ib3JkZXJlZCB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRkIHsKCWJvcmRlci1ib3R0b20td2lkdGg6IDJweDsKfQoKLnRhYmxlLWJvcmRlcmxlc3MgdGgsIC50YWJsZS1ib3JkZXJsZXNzIHRkLCAudGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmxlc3MgdGJvZHkgKyB0Ym9keSB7Cglib3JkZXI6IDA7Cn0KCi50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDUpOwp9CgoudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDc1KTsKfQoKLnRhYmxlLXByaW1hcnksIC50YWJsZS1wcmltYXJ5ID4gdGgsIC50YWJsZS1wcmltYXJ5ID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjOWVjZGZmOwp9CgoudGFibGUtc2Vjb25kYXJ5LCAudGFibGUtc2Vjb25kYXJ5ID4gdGgsIC50YWJsZS1zZWNvbmRhcnkgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGRiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzhjY2NmOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KCi50YWJsZS1zdWNjZXNzLCAudGFibGUtc3VjY2VzcyA+IHRoLCAudGFibGUtc3VjY2VzcyA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1zdWNjZXNzOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLnRhYmxlLWluZm8sIC50YWJsZS1pbmZvID4gdGgsIC50YWJsZS1pbmZvID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9CgoudGFibGUtd2FybmluZywgLnRhYmxlLXdhcm5pbmcgPiB0aCwgLnRhYmxlLXdhcm5pbmcgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZWJhOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmU3YTA7Cn0KCi50YWJsZS1kYW5nZXIsIC50YWJsZS1kYW5nZXIgPiB0aCwgLnRhYmxlLWRhbmdlciA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6ICNmMWIxYjc7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFuZ2VyOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoKLnRhYmxlLWxpZ2h0LCAudGFibGUtbGlnaHQgPiB0aCwgLnRhYmxlLWxpZ2h0ID4gdGQgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0aCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoudGFibGUtZGFyaywgLnRhYmxlLWRhcmsgPiB0aCwgLnRhYmxlLWRhcmsgPiB0ZCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYzZjOGNhOwp9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciA+IHRoIHsKCWJhY2tncm91bmQtY29sb3I6ICNiOWJiYmQ7Cn0KCi50YWJsZS1hY3RpdmUsIC50YWJsZS1hY3RpdmUgPiB0aCwgLnRhYmxlLWFjdGl2ZSA+IHRkIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA3NSk7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjA3NSk7Cn0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGggewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDc1KTsKfQoKLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKCWJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoKLnRhYmxlIC50aGVhZC1saWdodCB0aCB7Cgljb2xvcjogIzQ5NTA1NzsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KCi50YWJsZS1kYXJrIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKfQoKLnRhYmxlLWRhcmsgdGgsIC50YWJsZS1kYXJrIHRkLCAudGFibGUtZGFyayB0aGVhZCB0aCB7Cglib3JkZXItY29sb3I6ICMzMjM4M2U7Cn0KCi50YWJsZS1kYXJrLnRhYmxlLWJvcmRlcmVkIHsKCWJvcmRlcjogMDsKfQoKLnRhYmxlLWRhcmsudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA1KTsKfQoKLnRhYmxlLWRhcmsudGFibGUtaG92ZXIgdGJvZHkgdHI6aG92ZXIgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMDc1KTsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7CgkudGFibGUtcmVzcG9uc2l2ZS1zbSB7CgkJZGlzcGxheTogYmxvY2s7CgkJd2lkdGg6IDEwMCU7CgkJb3ZlcmZsb3cteDogYXV0bzsKCQktd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CgkJLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7Cgl9CgkKCS50YWJsZS1yZXNwb25zaXZlLXNtID4gLnRhYmxlLWJvcmRlcmVkIHsKCQlib3JkZXI6IDA7Cgl9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewoJLnRhYmxlLXJlc3BvbnNpdmUtbWQgewoJCWRpc3BsYXk6IGJsb2NrOwoJCXdpZHRoOiAxMDAlOwoJCW92ZXJmbG93LXg6IGF1dG87CgkJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoJCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwoJfQoJCgkudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7CgkJYm9yZGVyOiAwOwoJfQp9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsKCS50YWJsZS1yZXNwb25zaXZlLWxnIHsKCQlkaXNwbGF5OiBibG9jazsKCQl3aWR0aDogMTAwJTsKCQlvdmVyZmxvdy14OiBhdXRvOwoJCS13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCQktbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKCX0KCQoJLnRhYmxlLXJlc3BvbnNpdmUtbGcgPiAudGFibGUtYm9yZGVyZWQgewoJCWJvcmRlcjogMDsKCX0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewoJLnRhYmxlLXJlc3BvbnNpdmUteGwgewoJCWRpc3BsYXk6IGJsb2NrOwoJCXdpZHRoOiAxMDAlOwoJCW92ZXJmbG93LXg6IGF1dG87CgkJLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwoJCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwoJfQoJCgkudGFibGUtcmVzcG9uc2l2ZS14bCA+IC50YWJsZS1ib3JkZXJlZCB7CgkJYm9yZGVyOiAwOwoJfQp9CgoudGFibGUtcmVzcG9uc2l2ZSB7CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxMDAlOwoJb3ZlcmZsb3cteDogYXV0bzsKCS13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKCS1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwp9CgoudGFibGUtcmVzcG9uc2l2ZSA+IC50YWJsZS1ib3JkZXJlZCB7Cglib3JkZXI6IDA7Cn0KCi5mb3JtLWNvbnRyb2wgewoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJZm9udC1zaXplOiAxcmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCS13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKCWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7Cglib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmZvcm0tY29udHJvbCB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1leHBhbmQgewoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXI6IDA7Cn0KCi5mb3JtLWNvbnRyb2w6Zm9jdXMgewoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyLWNvbG9yOiAjODBiZGZmOwoJb3V0bGluZTogMDsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5mb3JtLWNvbnRyb2w6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6LW1vei1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIgewoJY29sb3I6ICM2Yzc1N2Q7CglvcGFjaXR5OiAxOwp9CgouZm9ybS1jb250cm9sOmRpc2FibGVkLCAuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwoJb3BhY2l0eTogMTsKfQoKc2VsZWN0LmZvcm0tY29udHJvbDpmb2N1czo6LW1zLXZhbHVlIHsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmZvcm0tY29udHJvbC1maWxlLCAuZm9ybS1jb250cm9sLXJhbmdlIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7Cn0KCi5jb2wtZm9ybS1sYWJlbCB7CglwYWRkaW5nLXRvcDogY2FsYyguMzc1cmVtICsgMXB4KTsKCXBhZGRpbmctYm90dG9tOiBjYWxjKC4zNzVyZW0gKyAxcHgpOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogaW5oZXJpdDsKCWxpbmUtaGVpZ2h0OiAxLjU7Cn0KCi5jb2wtZm9ybS1sYWJlbC1sZyB7CglwYWRkaW5nLXRvcDogY2FsYyguNXJlbSArIDFweCk7CglwYWRkaW5nLWJvdHRvbTogY2FsYyguNXJlbSArIDFweCk7Cglmb250LXNpemU6IDEuMjVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgouY29sLWZvcm0tbGFiZWwtc20gewoJcGFkZGluZy10b3A6IGNhbGMoLjI1cmVtICsgMXB4KTsKCXBhZGRpbmctYm90dG9tOiBjYWxjKC4yNXJlbSArIDFweCk7Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgouZm9ybS1jb250cm9sLXBsYWludGV4dCB7CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxMDAlOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCW1hcmdpbi1ib3R0b206IDA7CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItd2lkdGg6IDFweCAwOwp9CgouZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc20sIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZyB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwp9CgouZm9ybS1jb250cm9sLXNtIHsKCWhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjI1cmVtIC41cmVtOwoJZm9udC1zaXplOiAuODc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4ycmVtOwp9CgouZm9ybS1jb250cm9sLWxnIHsKCWhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgpzZWxlY3QuZm9ybS1jb250cm9sW3NpemVdLCBzZWxlY3QuZm9ybS1jb250cm9sW211bHRpcGxlXSB7CgloZWlnaHQ6IGF1dG87Cn0KCnRleHRhcmVhLmZvcm0tY29udHJvbCB7CgloZWlnaHQ6IGF1dG87Cn0KCi5mb3JtLWdyb3VwIHsKCW1hcmdpbi1ib3R0b206IDFyZW07Cn0KCi5mb3JtLXRleHQgewoJZGlzcGxheTogYmxvY2s7CgltYXJnaW4tdG9wOiAuMjVyZW07Cn0KCi5mb3JtLXJvdyB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJbWFyZ2luLXJpZ2h0OiAtNXB4OwoJbWFyZ2luLWxlZnQ6IC01cHg7Cn0KCi5mb3JtLXJvdyA+IC5jb2wsIC5mb3JtLXJvdyA+IFtjbGFzcyo9ImNvbC0iXSB7CglwYWRkaW5nLXJpZ2h0OiA1cHg7CglwYWRkaW5nLWxlZnQ6IDVweDsKfQoKLmZvcm0tY2hlY2sgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nLWxlZnQ6IDEuMjVyZW07Cn0KCi5mb3JtLWNoZWNrLWlucHV0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCW1hcmdpbi10b3A6IC4zcmVtOwoJbWFyZ2luLWxlZnQ6IC0xLjI1cmVtOwp9CgouZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKCWNvbG9yOiAjNmM3NTdkOwp9CgouZm9ybS1jaGVjay1sYWJlbCB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouZm9ybS1jaGVjay1pbmxpbmUgewoJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKCWRpc3BsYXk6IGlubGluZS1mbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CglwYWRkaW5nLWxlZnQ6IDA7CgltYXJnaW4tcmlnaHQ6IC43NXJlbTsKfQoKLmZvcm0tY2hlY2staW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKCXBvc2l0aW9uOiBzdGF0aWM7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLXJpZ2h0OiAuMzEyNXJlbTsKCW1hcmdpbi1sZWZ0OiAwOwp9CgoudmFsaWQtZmVlZGJhY2sgewoJZGlzcGxheTogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogLjI1cmVtOwoJZm9udC1zaXplOiA4MCU7Cgljb2xvcjogIzI4YTc0NTsKfQoKLnZhbGlkLXRvb2x0aXAgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAxMDAlOwoJei1pbmRleDogNTsKCWRpc3BsYXk6IG5vbmU7CgltYXgtd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07CgltYXJnaW4tdG9wOiAuMXJlbTsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCWxpbmUtaGVpZ2h0OiAxLjU7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoNDAsIDE2NywgNjksIC45KTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewoJY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICMyOGE3NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNzFkZDhhOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMzNGNlNTc7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cglib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjI1KTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjI1KTsKfQoKLmludmFsaWQtZmVlZGJhY2sgewoJZGlzcGxheTogbm9uZTsKCXdpZHRoOiAxMDAlOwoJbWFyZ2luLXRvcDogLjI1cmVtOwoJZm9udC1zaXplOiA4MCU7Cgljb2xvcjogI2RjMzU0NTsKfQoKLmludmFsaWQtdG9vbHRpcCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDEwMCU7Cgl6LWluZGV4OiA1OwoJZGlzcGxheTogbm9uZTsKCW1heC13aWR0aDogMTAwJTsKCXBhZGRpbmc6IC4yNXJlbSAuNXJlbTsKCW1hcmdpbi10b3A6IC4xcmVtOwoJZm9udC1zaXplOiAuODc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDUzLCA2OSwgLjkpOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOmludmFsaWQsIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCwgLmN1c3RvbS1zZWxlY3QuaXMtaW52YWxpZCB7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CglkaXNwbGF5OiBibG9jazsKfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbC1maWxlOmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLWZpbGUuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsKCWNvbG9yOiAjZGMzNTQ1Owp9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNoZWNrLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKCWRpc3BsYXk6IGJsb2NrOwp9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2VmYTJhOTsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC4yNSk7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewoJZGlzcGxheTogYmxvY2s7Cn0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAuMjUpOwp9CgouZm9ybS1pbmxpbmUgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CglmbGV4LWZsb3c6IHJvdyB3cmFwOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7Cgl3aWR0aDogMTAwJTsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuZm9ybS1pbmxpbmUgbGFiZWwgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCQlkaXNwbGF5OiBmbGV4OwoJCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CgkJYWxpZ24taXRlbXM6IGNlbnRlcjsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXI7CgkJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleDogMCAwIGF1dG87CgkJZmxleDogMCAwIGF1dG87CgkJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CgkJZmxleC1mbG93OiByb3cgd3JhcDsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCQl3aWR0aDogYXV0bzsKCQl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJfQoJCgkuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbC1wbGFpbnRleHQgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCX0KCQoJLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCwgLmZvcm0taW5saW5lIC5jdXN0b20tc2VsZWN0IHsKCQl3aWR0aDogYXV0bzsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgkJLW1zLWZsZXgtcGFjazogY2VudGVyOwoJCWp1c3RpZnktY29udGVudDogY2VudGVyOwoJCXdpZHRoOiBhdXRvOwoJCXBhZGRpbmctbGVmdDogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKCQlwb3NpdGlvbjogcmVsYXRpdmU7CgkJbWFyZ2luLXRvcDogMDsKCQltYXJnaW4tcmlnaHQ6IC4yNXJlbTsKCQltYXJnaW4tbGVmdDogMDsKCX0KCQoJLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbCB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCQlhbGlnbi1pdGVtczogY2VudGVyOwoJCS1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCX0KCQoJLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbC1sYWJlbCB7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KfQoKLmJ0biB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cglmb250LXdlaWdodDogNDAwOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgktbXMtdXNlci1zZWxlY3Q6IG5vbmU7CgktbW96LXVzZXItc2VsZWN0OiBub25lOwoJLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKCXVzZXItc2VsZWN0OiBub25lOwoJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CglwYWRkaW5nOiAuMzc1cmVtIC43NXJlbTsKCWZvbnQtc2l6ZTogMXJlbTsKCWxpbmUtaGVpZ2h0OiAxLjU7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cgktd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKCXRyYW5zaXRpb246IGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dDsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmJ0biB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5idG46aG92ZXIsIC5idG46Zm9jdXMgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouYnRuOmZvY3VzLCAuYnRuLmZvY3VzIHsKCW91dGxpbmU6IDA7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouYnRuLmRpc2FibGVkLCAuYnRuOmRpc2FibGVkIHsKCW9wYWNpdHk6IC42NTsKfQoKLmJ0bjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCmEuYnRuLmRpc2FibGVkLCBmaWVsZHNldDpkaXNhYmxlZCBhLmJ0biB7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmJ0bi1wcmltYXJ5IHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKCWJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQoKLmJ0bi1wcmltYXJ5OmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwNjlkOTsKCWJvcmRlci1jb2xvcjogIzAwNjJjYzsKfQoKLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouYnRuLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tcHJpbWFyeTpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cglib3JkZXItY29sb3I6ICMwMDVjYmY7Cn0KCi5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5IHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1zZWNvbmRhcnk6aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNWE2MjY4OwoJYm9yZGVyLWNvbG9yOiAjNTQ1YjYyOwp9CgouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAuNSk7Cn0KCi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7Cglib3JkZXItY29sb3I6ICM2Yzc1N2Q7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7Cglib3JkZXItY29sb3I6ICM0ZTU1NWI7Cn0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIC41KTsKfQoKLmJ0bi1zdWNjZXNzIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NTsKCWJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQoKLmJ0bi1zdWNjZXNzOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODsKCWJvcmRlci1jb2xvcjogIzFlN2UzNDsKfQoKLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjUpOwp9CgouYnRuLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tc3VjY2VzczpkaXNhYmxlZCB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cglib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7Cglib3JkZXItY29sb3I6ICMxYzc0MzA7Cn0KCi5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAuNSk7Cn0KCi5idG4taW5mbyB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cglib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4taW5mbzpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxMzg0OTY7Cglib3JkZXItY29sb3I6ICMxMTdhOGI7Cn0KCi5idG4taW5mbzpmb2N1cywgLmJ0bi1pbmZvLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAuNSk7Cn0KCi5idG4taW5mby5kaXNhYmxlZCwgLmJ0bi1pbmZvOmRpc2FibGVkIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKCWJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YjsKCWJvcmRlci1jb2xvcjogIzEwNzA3ZjsKfQoKLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAuNSk7Cn0KCi5idG4td2FybmluZyB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmZmMxMDc7Cglib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KCi5idG4td2FybmluZzpob3ZlciB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNlMGE4MDA7Cglib3JkZXItY29sb3I6ICNkMzllMDA7Cn0KCi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIC41KTsKfQoKLmJ0bi13YXJuaW5nLmRpc2FibGVkLCAuYnRuLXdhcm5pbmc6ZGlzYWJsZWQgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwoJYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwoJYm9yZGVyLWNvbG9yOiAjYzY5NTAwOwp9CgouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgLjUpOwp9CgouYnRuLWRhbmdlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tZGFuZ2VyOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2M4MjMzMzsKCWJvcmRlci1jb2xvcjogI2JkMjEzMDsKfQoKLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC41KTsKfQoKLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKCWJvcmRlci1jb2xvcjogI2IyMWYyZDsKfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIC41KTsKfQoKLmJ0bi1saWdodCB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cglib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tbGlnaHQ6aG92ZXIgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTJlNmVhOwoJYm9yZGVyLWNvbG9yOiAjZGFlMGU1Owp9CgouYnRuLWxpZ2h0OmZvY3VzLCAuYnRuLWxpZ2h0LmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgLjUpOwp9CgouYnRuLWxpZ2h0LmRpc2FibGVkLCAuYnRuLWxpZ2h0OmRpc2FibGVkIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNTsKCWJvcmRlci1jb2xvcjogI2QzZDlkZjsKfQoKLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgLjUpOwp9CgouYnRuLWRhcmsgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwoJYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiOwoJYm9yZGVyLWNvbG9yOiAjMWQyMTI0Owp9CgouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIC41KTsKfQoKLmJ0bi1kYXJrLmRpc2FibGVkLCAuYnRuLWRhcms6ZGlzYWJsZWQgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwoJYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0OwoJYm9yZGVyLWNvbG9yOiAjMTcxYTFkOwp9CgouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5IHsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5OmZvY3VzLCAuYnRuLW91dGxpbmUtcHJpbWFyeS5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCB7Cgljb2xvcjogIzAwN2JmZjsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHsKCWNvbG9yOiAjNmM3NTdkOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZDsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwoJYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMDgsIDExNywgMTI1LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzIHsKCWNvbG9yOiAjMjhhNzQ1OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cglib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLCAuYnRuLW91dGxpbmUtc3VjY2Vzcy5mb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCB7Cgljb2xvcjogIzI4YTc0NTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSg0MCwgMTY3LCA2OSwgLjUpOwp9CgouYnRuLW91dGxpbmUtaW5mbyB7Cgljb2xvcjogIzE3YTJiODsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogIzE3YTJiODsKfQoKLmJ0bi1vdXRsaW5lLWluZm86aG92ZXIgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwoJYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9CgouYnRuLW91dGxpbmUtaW5mbzpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQsIC5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIHsKCWNvbG9yOiAjMTdhMmI4OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cglib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KCi5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIzLCAxNjIsIDE4NCwgLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZyB7Cgljb2xvcjogI2ZmYzEwNzsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6aG92ZXIgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwoJYm9yZGVyLWNvbG9yOiAjZmZjMTA3Owp9CgouYnRuLW91dGxpbmUtd2FybmluZzpmb2N1cywgLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgLjUpOwp9CgouYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQgewoJY29sb3I6ICNmZmMxMDc7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMjU1LCAxOTMsIDcsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlciB7Cgljb2xvcjogI2RjMzU0NTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoKLmJ0bi1vdXRsaW5lLWRhbmdlcjpob3ZlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6Zm9jdXMsIC5idG4tb3V0bGluZS1kYW5nZXIuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgLjUpOwp9CgouYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkIHsKCWNvbG9yOiAjZGMzNTQ1OwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cglib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KCi5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodCB7Cgljb2xvcjogI2Y4ZjlmYTsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVyIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKCWJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHQuZm9jdXMgewoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAuNSk7Cn0KCi5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWxpZ2h0OmRpc2FibGVkIHsKCWNvbG9yOiAjZjhmOWZhOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cglib3JkZXItY29sb3I6ICNmOGY5ZmE7Cn0KCi5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDI0OCwgMjQ5LCAyNTAsIC41KTsKfQoKLmJ0bi1vdXRsaW5lLWRhcmsgewoJY29sb3I6ICMzNDNhNDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJhY2tncm91bmQtaW1hZ2U6IG5vbmU7Cglib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KCi5idG4tb3V0bGluZS1kYXJrOmhvdmVyIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKCWJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6Zm9jdXMsIC5idG4tb3V0bGluZS1kYXJrLmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgLjUpOwp9CgouYnRuLW91dGxpbmUtZGFyay5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhcms6ZGlzYWJsZWQgewoJY29sb3I6ICMzNDNhNDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKCWJvcmRlci1jb2xvcjogIzM0M2E0MDsKfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgLjUpOwp9CgouYnRuLWxpbmsgewoJZm9udC13ZWlnaHQ6IDQwMDsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5idG4tbGluazpob3ZlciB7Cgljb2xvcjogIzAwNTZiMzsKCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwoJYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItY29sb3I6IHRyYW5zcGFyZW50Owp9CgouYnRuLWxpbms6Zm9jdXMsIC5idG4tbGluay5mb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3gtc2hhZG93OiBub25lOwp9CgouYnRuLWxpbms6ZGlzYWJsZWQsIC5idG4tbGluay5kaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwp9CgouYnRuLWxnLCAuYnRuLWdyb3VwLWxnID4gLmJ0biB7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCi5idG4tYmxvY2sgewoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKfQoKLmJ0bi1ibG9jayArIC5idG4tYmxvY2sgewoJbWFyZ2luLXRvcDogLjVyZW07Cn0KCmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywgaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssIGlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7Cgl3aWR0aDogMTAwJTsKfQoKLmZhZGUgewoJLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMgbGluZWFyOwoJdHJhbnNpdGlvbjogb3BhY2l0eSAuMTVzIGxpbmVhcjsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmZhZGUgewoJCS13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKCQl0cmFuc2l0aW9uOiBub25lOwoJfQp9CgouZmFkZTpub3QoLnNob3cpIHsKCW9wYWNpdHk6IDA7Cn0KCi5jb2xsYXBzZTpub3QoLnNob3cpIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5jb2xsYXBzaW5nIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWhlaWdodDogMDsKCW92ZXJmbG93OiBoaWRkZW47Cgktd2Via2l0LXRyYW5zaXRpb246IGhlaWdodCAuMzVzIGVhc2U7Cgl0cmFuc2l0aW9uOiBoZWlnaHQgLjM1cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY29sbGFwc2luZyB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5kcm9wdXAsIC5kcm9wcmlnaHQsIC5kcm9wZG93biwgLmRyb3BsZWZ0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogLjNlbSBzb2xpZDsKCWJvcmRlci1yaWdodDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b206IDA7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgewoJbWFyZ2luLWxlZnQ6IDA7Cn0KCi5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMTAwJTsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxMDAwOwoJZGlzcGxheTogbm9uZTsKCWZsb2F0OiBsZWZ0OwoJbWluLXdpZHRoOiAxMHJlbTsKCXBhZGRpbmc6IC41cmVtIDA7CgltYXJnaW46IC4xMjVyZW0gMCAwOwoJZm9udC1zaXplOiAxcmVtOwoJY29sb3I6ICMyMTI1Mjk7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJbGlzdC1zdHlsZTogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTUpOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgouZHJvcGRvd24tbWVudS1yaWdodCB7CglyaWdodDogMDsKCWxlZnQ6IGF1dG87Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLW1lbnUgewoJdG9wOiBhdXRvOwoJYm90dG9tOiAxMDAlOwoJbWFyZ2luLXRvcDogMDsKCW1hcmdpbi1ib3R0b206IC4xMjVyZW07Cn0KCi5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogMDsKCWJvcmRlci1yaWdodDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1ib3R0b206IC4zZW0gc29saWQ7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tbWVudSB7Cgl0b3A6IDA7CglyaWdodDogYXV0bzsKCWxlZnQ6IDEwMCU7CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLWxlZnQ6IC4xMjVyZW07Cn0KCi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJd2lkdGg6IDA7CgloZWlnaHQ6IDA7CgltYXJnaW4tbGVmdDogLjI1NWVtOwoJdmVydGljYWwtYWxpZ246IC4yNTVlbTsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLXRvcDogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKCWJvcmRlci1yaWdodDogMDsKCWJvcmRlci1ib3R0b206IC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItbGVmdDogLjNlbSBzb2xpZDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7Cgl2ZXJ0aWNhbC1hbGlnbjogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi1tZW51IHsKCXRvcDogMDsKCXJpZ2h0OiAxMDAlOwoJbGVmdDogYXV0bzsKCW1hcmdpbi10b3A6IDA7CgltYXJnaW4tcmlnaHQ6IC4xMjVyZW07Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMDsKCWhlaWdodDogMDsKCW1hcmdpbi1sZWZ0OiAuMjU1ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogLjI1NWVtOwoJY29udGVudDogIiI7Cn0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CglkaXNwbGF5OiBub25lOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAwOwoJaGVpZ2h0OiAwOwoJbWFyZ2luLXJpZ2h0OiAuMjU1ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogLjI1NWVtOwoJY29udGVudDogIiI7Cglib3JkZXItdG9wOiAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJpZ2h0OiAuM2VtIHNvbGlkOwoJYm9yZGVyLWJvdHRvbTogLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKCW1hcmdpbi1sZWZ0OiAwOwp9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKCXZlcnRpY2FsLWFsaWduOiAwOwp9CgouZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InRvcCJdLCAuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49InJpZ2h0Il0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0iYm90dG9tIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCXJpZ2h0OiBhdXRvOwoJYm90dG9tOiBhdXRvOwp9CgouZHJvcGRvd24tZGl2aWRlciB7CgloZWlnaHQ6IDA7CgltYXJnaW46IC41cmVtIDA7CglvdmVyZmxvdzogaGlkZGVuOwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOWVjZWY7Cn0KCi5kcm9wZG93bi1pdGVtIHsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDEwMCU7CglwYWRkaW5nOiAuMjVyZW0gMS41cmVtOwoJY2xlYXI6IGJvdGg7Cglmb250LXdlaWdodDogNDAwOwoJY29sb3I6ICMyMTI1Mjk7Cgl0ZXh0LWFsaWduOiBpbmhlcml0OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYm9yZGVyOiAwOwp9CgouZHJvcGRvd24taXRlbTpob3ZlciwgLmRyb3Bkb3duLWl0ZW06Zm9jdXMgewoJY29sb3I6ICMxNjE4MWI7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouZHJvcGRvd24taXRlbS5hY3RpdmUsIC5kcm9wZG93bi1pdGVtOmFjdGl2ZSB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5kcm9wZG93bi1pdGVtLmRpc2FibGVkLCAuZHJvcGRvd24taXRlbTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9CgouZHJvcGRvd24tbWVudS5zaG93IHsKCWRpc3BsYXk6IGJsb2NrOwp9CgouZHJvcGRvd24taGVhZGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjVyZW0gMS41cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCWNvbG9yOiAjNmM3NTdkOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLmRyb3Bkb3duLWl0ZW0tdGV4dCB7CglkaXNwbGF5OiBibG9jazsKCXBhZGRpbmc6IC4yNXJlbSAxLjVyZW07Cgljb2xvcjogIzIxMjUyOTsKfQoKLmJ0bi1ncm91cCwgLmJ0bi1ncm91cC12ZXJ0aWNhbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4OwoJZGlzcGxheTogaW5saW5lLWZsZXg7Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgouYnRuLWdyb3VwID4gLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDAgMSBhdXRvOwoJZmxleDogMCAxIGF1dG87Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciB7Cgl6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsIC5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7Cgl6LWluZGV4OiAxOwp9CgouYnRuLWdyb3VwIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouYnRuLXRvb2xiYXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CgouYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHsKCXdpZHRoOiBhdXRvOwp9CgouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5kcm9wZG93bi10b2dnbGUtc3BsaXQgewoJcGFkZGluZy1yaWdodDogLjU2MjVyZW07CglwYWRkaW5nLWxlZnQ6IC41NjI1cmVtOwp9CgouZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwgLmRyb3B1cCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciwgLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjphZnRlciB7CgltYXJnaW4tbGVmdDogMDsKfQoKLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmJlZm9yZSB7CgltYXJnaW4tcmlnaHQ6IDA7Cn0KCi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLXNtID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQgewoJcGFkZGluZy1yaWdodDogLjM3NXJlbTsKCXBhZGRpbmctbGVmdDogLjM3NXJlbTsKfQoKLmJ0bi1sZyArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtbGcgPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CglwYWRkaW5nLXJpZ2h0OiAuNzVyZW07CglwYWRkaW5nLWxlZnQ6IC43NXJlbTsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCB7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgktbXMtZmxleC1hbGlnbjogc3RhcnQ7CglhbGlnbi1pdGVtczogZmxleC1zdGFydDsKCS1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgouYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4sIC5idG4tZ3JvdXAtdmVydGljYWwgLmJ0bi1ncm91cCB7Cgl3aWR0aDogMTAwJTsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwICsgLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKCW1hcmdpbi10b3A6IC0xcHg7CgltYXJnaW4tbGVmdDogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biB7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4gaW5wdXRbdHlwZT0iY2hlY2tib3giXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7Cglwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmlucHV0LWdyb3VwIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LXdyYXA6IHdyYXA7CglmbGV4LXdyYXA6IHdyYXA7CgktbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKCWFsaWduLWl0ZW1zOiBzdHJldGNoOwoJd2lkdGg6IDEwMCU7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87Cgl3aWR0aDogMSU7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0ICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1maWxlLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tZmlsZSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1maWxlIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOmZvY3VzLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpmb2N1cywgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cgl6LWluZGV4OiAzOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHsKCXotaW5kZXg6IDQ7Cn0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpsYXN0LWNoaWxkKSB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6Zmlyc3QtY2hpbGQpLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwp9CgouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQsIC5pbnB1dC1ncm91cC1hcHBlbmQgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4Owp9CgouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMjsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLXByZXBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biB7CgltYXJnaW4tbGVmdDogLTFweDsKfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgewoJbWFyZ2luLXJpZ2h0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAtYXBwZW5kIHsKCW1hcmdpbi1sZWZ0OiAtMXB4Owp9CgouaW5wdXQtZ3JvdXAtdGV4dCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1hbGlnbjogY2VudGVyOwoJYWxpZ24taXRlbXM6IGNlbnRlcjsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWZvbnQtc2l6ZTogMXJlbTsKCWZvbnQtd2VpZ2h0OiA0MDA7CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICM0OTUwNTc7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9InJhZGlvIl0sIC5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewoJbWFyZ2luLXRvcDogMDsKfQoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKCWhlaWdodDogY2FsYygyLjg3NXJlbSArIDJweCk7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgouaW5wdXQtZ3JvdXAtc20gPiAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4gewoJaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJYm9yZGVyLXJhZGl1czogLjJyZW07Cn0KCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCkgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQoKLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KCi5jdXN0b20tY29udHJvbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiBibG9jazsKCW1pbi1oZWlnaHQ6IDEuNXJlbTsKCXBhZGRpbmctbGVmdDogMS41cmVtOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5saW5lIHsKCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CglkaXNwbGF5OiBpbmxpbmUtZmxleDsKCW1hcmdpbi1yaWdodDogMXJlbTsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6IC0xOwoJb3BhY2l0eTogMDsKfQoKLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6YWN0aXZlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewoJY29sb3I6ICM2Yzc1N2Q7Cn0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tY29udHJvbC1sYWJlbCB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CgltYXJnaW4tYm90dG9tOiAwOwp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC4yNXJlbTsKCWxlZnQ6IC0xLjVyZW07CglkaXNwbGF5OiBibG9jazsKCXdpZHRoOiAxcmVtOwoJaGVpZ2h0OiAxcmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cgljb250ZW50OiAiIjsKCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKCS1tb3otdXNlci1zZWxlY3Q6IG5vbmU7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJdXNlci1zZWxlY3Q6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2Owp9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogLjI1cmVtOwoJbGVmdDogLTEuNXJlbTsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07Cgljb250ZW50OiAiIjsKCWJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CgliYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwoJYmFja2dyb3VuZC1zaXplOiA1MCUgNTAlOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIHZpZXdCb3g9XCcwIDAgOCA4XCclM0UlM0NwYXRoIGZpbGw9XCclMjNmZmZcJyBkPVwnTTYuNTY0Ljc1bC0zLjU5IDMuNjEyLTEuNTM4LTEuNTVMMCA0LjI2IDIuOTc0IDcuMjUgOCAyLjE5M3pcJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPVwnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcJyB2aWV3Qm94PVwnMCAwIDQgNFwnJTNFJTNDcGF0aCBzdHJva2U9XCclMjNmZmZcJyBkPVwnTTAgMmg0XCcvJTNFJTNDL3N2ZyUzRSIpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgLjUpOwp9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJvcmRlci1yYWRpdXM6IDUwJTsKfQoKLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIHZpZXdCb3g9XCctNCAtNCA4IDhcJyUzRSUzQ2NpcmNsZSByPVwnM1wnIGZpbGw9XCclMjNmZmZcJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KCi5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0IHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjM3NXJlbSAxLjc1cmVtIC4zNzVyZW0gLjc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWJhY2tncm91bmQ6ICNmZmYgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz1cJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCcgdmlld0JveD1cJzAgMCA0IDVcJyUzRSUzQ3BhdGggZmlsbD1cJyUyMzM0M2E0MFwnIGQ9XCdNMiAwTDAgMmg0em0wIDVMMCAzaDR6XCcvJTNFJTNDL3N2ZyUzRSIpIG5vLXJlcGVhdCByaWdodCAuNzVyZW0gY2VudGVyOwoJYmFja2dyb3VuZC1zaXplOiA4cHggMTBweDsKCWJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpmb2N1cyB7Cglib3JkZXItY29sb3I6ICM4MGJkZmY7CglvdXRsaW5lOiAwOwoJYm94LXNoYWRvdzogMCAwIDAgLjJyZW0gcmdiYSgxMjgsIDE4OSwgMjU1LCAuNSk7Cn0KCi5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUgewoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9CgouY3VzdG9tLXNlbGVjdFttdWx0aXBsZV0sIC5jdXN0b20tc2VsZWN0W3NpemVdOm5vdChbc2l6ZT0iMSJdKSB7CgloZWlnaHQ6IGF1dG87CglwYWRkaW5nLXJpZ2h0OiAuNzVyZW07CgliYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9CgouY3VzdG9tLXNlbGVjdDpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHsKCW9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tc2VsZWN0LXNtIHsKCWhlaWdodDogY2FsYygxLjgxMjVyZW0gKyAycHgpOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCWZvbnQtc2l6ZTogNzUlOwp9CgouY3VzdG9tLXNlbGVjdC1sZyB7CgloZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwoJcGFkZGluZy10b3A6IC4zNzVyZW07CglwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsKCWZvbnQtc2l6ZTogMTI1JTsKfQoKLmN1c3RvbS1maWxlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmN1c3RvbS1maWxlLWlucHV0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDI7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKCW1hcmdpbjogMDsKCW9wYWNpdHk6IDA7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7Cglib3JkZXItY29sb3I6ICM4MGJkZmY7Cglib3gtc2hhZG93OiAwIDAgMCAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAuMjUpOwp9CgouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKCWJvcmRlci1jb2xvcjogIzgwYmRmZjsKfQoKLmN1c3RvbS1maWxlLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5jdXN0b20tZmlsZS1pbnB1dDpsYW5nKGVuKSB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewoJY29udGVudDogIkJyb3dzZSI7Cn0KCi5jdXN0b20tZmlsZS1sYWJlbCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxOwoJaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwoJcGFkZGluZzogLjM3NXJlbSAuNzVyZW07CglsaW5lLWhlaWdodDogMS41OwoJY29sb3I6ICM0OTUwNTc7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgI2NlZDRkYTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCXotaW5kZXg6IDM7CglkaXNwbGF5OiBibG9jazsKCWhlaWdodDogMi4yNXJlbTsKCXBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKCWNvbG9yOiAjNDk1MDU3OwoJY29udGVudDogIkJyb3dzZSI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwoJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2VkNGRhOwoJYm9yZGVyLXJhZGl1czogMCAuMjVyZW0gLjI1cmVtIDA7Cn0KCi5jdXN0b20tcmFuZ2UgewoJd2lkdGg6IDEwMCU7CglwYWRkaW5nLWxlZnQ6IDA7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCS1tb3otYXBwZWFyYW5jZTogbm9uZTsKCS13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKCWFwcGVhcmFuY2U6IG5vbmU7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXMgewoJb3V0bGluZTogbm9uZTsKfQoKLmN1c3RvbS1yYW5nZTpmb2N1czo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tb3otcmFuZ2UtdGh1bWIgewoJYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tcy10aHVtYiB7Cglib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgLjI1KTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1vei1mb2N1cy1vdXRlciB7Cglib3JkZXI6IDA7Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKCXdpZHRoOiAxcmVtOwoJaGVpZ2h0OiAxcmVtOwoJbWFyZ2luLXRvcDogLS4yNXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXI6IDA7Cglib3JkZXItcmFkaXVzOiAxcmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7Cgl0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iOmFjdGl2ZSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9CgouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogLjVyZW07Cgljb2xvcjogdHJhbnNwYXJlbnQ7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1yYWRpdXM6IDFyZW07Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgewoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJYm9yZGVyOiAwOwoJYm9yZGVyLXJhZGl1czogMXJlbTsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJLW1vei1hcHBlYXJhbmNlOiBub25lOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwoJYXBwZWFyYW5jZTogbm9uZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYiB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWI6YWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdHJhY2sgewoJd2lkdGg6IDEwMCU7CgloZWlnaHQ6IC41cmVtOwoJY29sb3I6IHRyYW5zcGFyZW50OwoJY3Vyc29yOiBwb2ludGVyOwoJYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItcmFkaXVzOiAxcmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW4tdG9wOiAwOwoJbWFyZ2luLXJpZ2h0OiAuMnJlbTsKCW1hcmdpbi1sZWZ0OiAuMnJlbTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXI6IDA7Cglib3JkZXItcmFkaXVzOiAxcmVtOwoJLXdlYmtpdC10cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7Cgl0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQ7CgktbW96LWFwcGVhcmFuY2U6IG5vbmU7Cgktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CglhcHBlYXJhbmNlOiBub25lOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewoJCS13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKCQl0cmFuc2l0aW9uOiBub25lOwoJfQp9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWI6YWN0aXZlIHsKCWJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7Cgl3aWR0aDogMTAwJTsKCWhlaWdodDogLjVyZW07Cgljb2xvcjogdHJhbnNwYXJlbnQ7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItd2lkdGg6IC41cmVtOwp9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC1sb3dlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwoJYm9yZGVyLXJhZGl1czogMXJlbTsKfQoKLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtdXBwZXIgewoJbWFyZ2luLXJpZ2h0OiAxNXB4OwoJYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKCWJvcmRlci1yYWRpdXM6IDFyZW07Cn0KCi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tc2VsZWN0IHsKCS13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0OwoJdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAuMTVzIGVhc2UtaW4tb3V0Owp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7CgkJLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwoJCXRyYW5zaXRpb246IG5vbmU7Cgl9Cn0KCi5uYXYgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IDA7CglsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2LWxpbmsgewoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nOiAuNXJlbSAxcmVtOwp9CgoubmF2LWxpbms6aG92ZXIsIC5uYXYtbGluazpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXYtbGluay5kaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKfQoKLm5hdi10YWJzIHsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGVlMmU2Owp9CgoubmF2LXRhYnMgLm5hdi1pdGVtIHsKCW1hcmdpbi1ib3R0b206IC0xcHg7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsgewoJYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyLCAubmF2LXRhYnMgLm5hdi1saW5rOmZvY3VzIHsKCWJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsuZGlzYWJsZWQgewoJY29sb3I6ICM2Yzc1N2Q7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCi5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlLCAubmF2LXRhYnMgLm5hdi1pdGVtLnNob3cgLm5hdi1saW5rIHsKCWNvbG9yOiAjNDk1MDU3OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNiAjZGVlMmU2ICNmZmY7Cn0KCi5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CgltYXJnaW4tdG9wOiAtMXB4OwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgoubmF2LXBpbGxzIC5uYXYtbGluayB7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5uYXYtZmlsbCAubmF2LWl0ZW0gewoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5uYXYtanVzdGlmaWVkIC5uYXYtaXRlbSB7CgktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDsKCWZsZXgtYmFzaXM6IDA7CgktbXMtZmxleC1wb3NpdGl2ZTogMTsKCWZsZXgtZ3JvdzogMTsKCXRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi50YWItY29udGVudCA+IC5hY3RpdmUgewoJZGlzcGxheTogYmxvY2s7Cn0KCi5uYXZiYXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtd3JhcDogd3JhcDsKCWZsZXgtd3JhcDogd3JhcDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJLW1zLWZsZXgtcGFjazoganVzdGlmeTsKCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKCXBhZGRpbmc6IC41cmVtIDFyZW07Cn0KCi5uYXZiYXIgPiAuY29udGFpbmVyLCAubmF2YmFyID4gLmNvbnRhaW5lci1mbHVpZCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9CgoubmF2YmFyLWJyYW5kIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXBhZGRpbmctdG9wOiAuMzEyNXJlbTsKCXBhZGRpbmctYm90dG9tOiAuMzEyNXJlbTsKCW1hcmdpbi1yaWdodDogMXJlbTsKCWZvbnQtc2l6ZTogMS4yNXJlbTsKCWxpbmUtaGVpZ2h0OiBpbmhlcml0OwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1icmFuZDpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXZiYXItbmF2IHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1ib3R0b206IDA7CglsaXN0LXN0eWxlOiBub25lOwp9CgoubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJcGFkZGluZy1yaWdodDogMDsKCXBhZGRpbmctbGVmdDogMDsKfQoKLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewoJcG9zaXRpb246IHN0YXRpYzsKCWZsb2F0OiBub25lOwp9CgoubmF2YmFyLXRleHQgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZy10b3A6IC41cmVtOwoJcGFkZGluZy1ib3R0b206IC41cmVtOwp9CgoubmF2YmFyLWNvbGxhcHNlIHsKCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAxMDAlOwoJZmxleC1iYXNpczogMTAwJTsKCS1tcy1mbGV4LXBvc2l0aXZlOiAxOwoJZmxleC1ncm93OiAxOwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlciB7CglwYWRkaW5nOiAuMjVyZW0gLjc1cmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDE7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5uYXZiYXItdG9nZ2xlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5uYXZiYXItdG9nZ2xlci1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxLjVlbTsKCWhlaWdodDogMS41ZW07Cgl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoJY29udGVudDogIiI7CgliYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKCWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwp9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKCS5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLWZsdWlkIHsKCQlwYWRkaW5nLXJpZ2h0OiAwOwoJCXBhZGRpbmctbGVmdDogMDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkubmF2YmFyLWV4cGFuZC1zbSB7CgkJLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQlmbGV4LWZsb3c6IHJvdyBub3dyYXA7CgkJLW1zLWZsZXgtcGFjazogc3RhcnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CgkJZmxleC1kaXJlY3Rpb246IHJvdzsKCX0KCQoJLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewoJCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCX0KCQoJLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbTsKCQlwYWRkaW5nLWxlZnQ6IC41cmVtOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJLW1zLWZsZXgtd3JhcDogbm93cmFwOwoJCWZsZXgtd3JhcDogbm93cmFwOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLWNvbGxhcHNlIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCQktbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogYXV0bzsKCQlmbGV4LWJhc2lzOiBhdXRvOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXIgewoJCWRpc3BsYXk6IG5vbmU7Cgl9Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgewoJLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewoJCXBhZGRpbmctcmlnaHQ6IDA7CgkJcGFkZGluZy1sZWZ0OiAwOwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5uYXZiYXItZXhwYW5kLW1kIHsKCQktbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwoJCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQktbXMtZmxleC1wYWNrOiBzdGFydDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCQlmbGV4LWRpcmVjdGlvbjogcm93OwoJfQoJCgkubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CgkJcG9zaXRpb246IGFic29sdXRlOwoJfQoJCgkubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJCXBhZGRpbmctbGVmdDogLjVyZW07Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXA7CgkJZmxleC13cmFwOiBub3dyYXA7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2UgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwoJCWZsZXgtYmFzaXM6IGF1dG87Cgl9CgkKCS5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItdG9nZ2xlciB7CgkJZGlzcGxheTogbm9uZTsKCX0KfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7CgkubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJcGFkZGluZy1yaWdodDogMDsKCQlwYWRkaW5nLWxlZnQ6IDA7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLm5hdmJhci1leHBhbmQtbGcgewoJCS1tcy1mbGV4LWZsb3c6IHJvdyBub3dyYXA7CgkJZmxleC1mbG93OiByb3cgbm93cmFwOwoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwoJCWZsZXgtZGlyZWN0aW9uOiByb3c7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKCQlwb3NpdGlvbjogYWJzb2x1dGU7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CgkJcGFkZGluZy1yaWdodDogLjVyZW07CgkJcGFkZGluZy1sZWZ0OiAuNXJlbTsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItZmx1aWQgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKCQlmbGV4LXdyYXA6IG5vd3JhcDsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1jb2xsYXBzZSB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CgkJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CgkJZmxleC1iYXNpczogYXV0bzsKCX0KCQoJLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci10b2dnbGVyIHsKCQlkaXNwbGF5OiBub25lOwoJfQp9CgpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CgkubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCB7CgkJcGFkZGluZy1yaWdodDogMDsKCQlwYWRkaW5nLWxlZnQ6IDA7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKCS5uYXZiYXItZXhwYW5kLXhsIHsKCQktbXMtZmxleC1mbG93OiByb3cgbm93cmFwOwoJCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCQktbXMtZmxleC1wYWNrOiBzdGFydDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCQlmbGV4LWRpcmVjdGlvbjogcm93OwoJfQoJCgkubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CgkJcG9zaXRpb246IGFic29sdXRlOwoJfQoJCgkubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewoJCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJCXBhZGRpbmctbGVmdDogLjVyZW07Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXA7CgkJZmxleC13cmFwOiBub3dyYXA7Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItY29sbGFwc2UgewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJCS1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiBhdXRvOwoJCWZsZXgtYmFzaXM6IGF1dG87Cgl9CgkKCS5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlciB7CgkJZGlzcGxheTogbm9uZTsKCX0KfQoKLm5hdmJhci1leHBhbmQgewoJLW1zLWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCWZsZXgtZmxvdzogcm93IG5vd3JhcDsKCS1tcy1mbGV4LXBhY2s6IHN0YXJ0OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0Owp9CgoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiB7CgktbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKCWZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKCXBhZGRpbmctcmlnaHQ6IC41cmVtOwoJcGFkZGluZy1sZWZ0OiAuNXJlbTsKfQoKLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItZmx1aWQgewoJLW1zLWZsZXgtd3JhcDogbm93cmFwOwoJZmxleC13cmFwOiBub3dyYXA7Cn0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItY29sbGFwc2UgewoJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6IGF1dG87CglmbGV4LWJhc2lzOiBhdXRvOwp9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLXRvZ2dsZXIgewoJZGlzcGxheTogbm9uZTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC45KTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6Zm9jdXMgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluayB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpmb2N1cyB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNyk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmRpc2FibGVkIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTsKfQoKLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlciB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cglib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdG9nZ2xlci1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD1cJzAgMCAzMCAzMFwnIHhtbG5zPVwnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcJyUzRSUzQ3BhdGggc3Ryb2tlPVwncmdiYSgwLCAwLCAwLCAwLjUpXCcgc3Ryb2tlLXdpZHRoPVwnMlwnIHN0cm9rZS1saW5lY2FwPVwncm91bmRcJyBzdHJva2UtbWl0ZXJsaW1pdD1cJzEwXCcgZD1cJ000IDdoMjJNNCAxNWgyMk00IDIzaDIyXCcvJTNFJTNDL3N2ZyUzRSIpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCB7Cgljb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cn0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjkpOwp9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmZvY3VzIHsKCWNvbG9yOiByZ2JhKDAsIDAsIDAsIC45KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgewoJY29sb3I6ICNmZmY7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZDpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewoJY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjc1KTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZCB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMjUpOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLnNob3csIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwp9CgoubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyIHsKCWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTsKCWJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXItaWNvbiB7CgliYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9XCcwIDAgMzAgMzBcJyB4bWxucz1cJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCclM0UlM0NwYXRoIHN0cm9rZT1cJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC41KVwnIHN0cm9rZS13aWR0aD1cJzJcJyBzdHJva2UtbGluZWNhcD1cJ3JvdW5kXCcgc3Ryb2tlLW1pdGVybGltaXQ9XCcxMFwnIGQ9XCdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMlwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCB7Cgljb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNSk7Cn0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYSB7Cgljb2xvcjogI2ZmZjsKfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IGE6Zm9jdXMgewoJY29sb3I6ICNmZmY7Cn0KCi5jYXJkIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCW1pbi13aWR0aDogMDsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKCWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDsKCWJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjEyNSk7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5jYXJkID4gaHIgewoJbWFyZ2luLXJpZ2h0OiAwOwoJbWFyZ2luLWxlZnQ6IDA7Cn0KCi5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgouY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5jYXJkLWJvZHkgewoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87CglwYWRkaW5nOiAxLjI1cmVtOwp9CgouY2FyZC10aXRsZSB7CgltYXJnaW4tYm90dG9tOiAuNzVyZW07Cn0KCi5jYXJkLXN1YnRpdGxlIHsKCW1hcmdpbi10b3A6IC0uMzc1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmNhcmQtdGV4dDpsYXN0LWNoaWxkIHsKCW1hcmdpbi1ib3R0b206IDA7Cn0KCi5jYXJkLWxpbms6aG92ZXIgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgouY2FyZC1saW5rICsgLmNhcmQtbGluayB7CgltYXJnaW4tbGVmdDogMS4yNXJlbTsKfQoKLmNhcmQtaGVhZGVyIHsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogMDsKCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjAzKTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIC4xMjUpOwp9CgouY2FyZC1oZWFkZXI6Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXJhZGl1czogY2FsYyguMjVyZW0gLSAxcHgpIGNhbGMoLjI1cmVtIC0gMXB4KSAwIDA7Cn0KCi5jYXJkLWhlYWRlciArIC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewoJYm9yZGVyLXRvcDogMDsKfQoKLmNhcmQtZm9vdGVyIHsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDMpOwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgLjEyNSk7Cn0KCi5jYXJkLWZvb3RlcjpsYXN0LWNoaWxkIHsKCWJvcmRlci1yYWRpdXM6IDAgMCBjYWxjKC4yNXJlbSAtIDFweCkgY2FsYyguMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1oZWFkZXItdGFicyB7CgltYXJnaW4tcmlnaHQ6IC0uNjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogLS43NXJlbTsKCW1hcmdpbi1sZWZ0OiAtLjYyNXJlbTsKCWJvcmRlci1ib3R0b206IDA7Cn0KCi5jYXJkLWhlYWRlci1waWxscyB7CgltYXJnaW4tcmlnaHQ6IC0uNjI1cmVtOwoJbWFyZ2luLWxlZnQ6IC0uNjI1cmVtOwp9CgouY2FyZC1pbWctb3ZlcmxheSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWxlZnQ6IDA7CglwYWRkaW5nOiAxLjI1cmVtOwp9CgouY2FyZC1pbWcgewoJd2lkdGg6IDEwMCU7Cglib3JkZXItcmFkaXVzOiBjYWxjKC4yNXJlbSAtIDFweCk7Cn0KCi5jYXJkLWltZy10b3AgewoJd2lkdGg6IDEwMCU7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKC4yNXJlbSAtIDFweCk7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYyguMjVyZW0gLSAxcHgpOwp9CgouY2FyZC1pbWctYm90dG9tIHsKCXdpZHRoOiAxMDAlOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IGNhbGMoLjI1cmVtIC0gMXB4KTsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IGNhbGMoLjI1cmVtIC0gMXB4KTsKfQoKLmNhcmQtZGVjayB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWRlY2sgLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY2FyZC1kZWNrIHsKCQktbXMtZmxleC1mbG93OiByb3cgd3JhcDsKCQlmbGV4LWZsb3c6IHJvdyB3cmFwOwoJCW1hcmdpbi1yaWdodDogLTE1cHg7CgkJbWFyZ2luLWxlZnQ6IC0xNXB4OwoJfQoJCgkuY2FyZC1kZWNrIC5jYXJkIHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXg7CgkJZGlzcGxheTogZmxleDsKCQktbXMtZmxleDogMSAwIDAlOwoJCWZsZXg6IDEgMCAwJTsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJCW1hcmdpbi1yaWdodDogMTVweDsKCQltYXJnaW4tYm90dG9tOiAwOwoJCW1hcmdpbi1sZWZ0OiAxNXB4OwoJfQp9CgouY2FyZC1ncm91cCB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCi5jYXJkLWdyb3VwID4gLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogMTVweDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuY2FyZC1ncm91cCB7CgkJLW1zLWZsZXgtZmxvdzogcm93IHdyYXA7CgkJZmxleC1mbG93OiByb3cgd3JhcDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CgkJLW1zLWZsZXg6IDEgMCAwJTsKCQlmbGV4OiAxIDAgMCU7CgkJbWFyZ2luLWJvdHRvbTogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZCArIC5jYXJkIHsKCQltYXJnaW4tbGVmdDogMDsKCQlib3JkZXItbGVmdDogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCB7CgkJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CgkJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewoJCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtZm9vdGVyIHsKCQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaGVhZGVyIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOmxhc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWZvb3RlciB7CgkJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIHsKCQlib3JkZXItcmFkaXVzOiAuMjVyZW07Cgl9CgkKCS5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaGVhZGVyIHsKCQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07CgkJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbTsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1mb290ZXIgewoJCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07CgkJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjI1cmVtOwoJfQoJCgkuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSB7CgkJYm9yZGVyLXJhZGl1czogMDsKCX0KCQoJLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKTpub3QoOmxhc3QtY2hpbGQpOm5vdCg6b25seS1jaGlsZCkgLmNhcmQtaGVhZGVyLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1mb290ZXIgewoJCWJvcmRlci1yYWRpdXM6IDA7Cgl9Cn0KCi5jYXJkLWNvbHVtbnMgLmNhcmQgewoJbWFyZ2luLWJvdHRvbTogLjc1cmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5jYXJkLWNvbHVtbnMgewoJCS1tb3otY29sdW1uLWNvdW50OiAzOwoJCS13ZWJraXQtY29sdW1uLWNvdW50OiAzOwoJCWNvbHVtbi1jb3VudDogMzsKCQktbW96LWNvbHVtbi1nYXA6IDEuMjVyZW07CgkJLXdlYmtpdC1jb2x1bW4tZ2FwOiAxLjI1cmVtOwoJCWNvbHVtbi1nYXA6IDEuMjVyZW07CgkJb3JwaGFuczogMTsKCQl3aWRvd3M6IDE7Cgl9CgkKCS5jYXJkLWNvbHVtbnMgLmNhcmQgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCQl3aWR0aDogMTAwJTsKCX0KfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpOm5vdCg6bGFzdC1vZi10eXBlKSB7Cglib3JkZXItYm90dG9tOiAwOwoJYm9yZGVyLXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpub3QoOmZpcnN0LW9mLXR5cGUpIC5jYXJkLWhlYWRlcjpmaXJzdC1jaGlsZCB7Cglib3JkZXItcmFkaXVzOiAwOwp9CgouYWNjb3JkaW9uIC5jYXJkOmZpcnN0LW9mLXR5cGUgewoJYm9yZGVyLWJvdHRvbTogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQoKLmFjY29yZGlvbiAuY2FyZDpsYXN0LW9mLXR5cGUgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9CgouYnJlYWRjcnVtYiB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC13cmFwOiB3cmFwOwoJZmxleC13cmFwOiB3cmFwOwoJcGFkZGluZzogLjc1cmVtIDFyZW07CgltYXJnaW4tYm90dG9tOiAxcmVtOwoJbGlzdC1zdHlsZTogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtIHsKCXBhZGRpbmctbGVmdDogLjVyZW07Cn0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOjpiZWZvcmUgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZy1yaWdodDogLjVyZW07Cgljb2xvcjogIzZjNzU3ZDsKCWNvbnRlbnQ6ICIvIjsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KCi5icmVhZGNydW1iLWl0ZW0uYWN0aXZlIHsKCWNvbG9yOiAjNmM3NTdkOwp9CgoucGFnaW5hdGlvbiB7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CglwYWRkaW5nLWxlZnQ6IDA7CglsaXN0LXN0eWxlOiBub25lOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoucGFnZS1saW5rIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWRpc3BsYXk6IGJsb2NrOwoJcGFkZGluZzogLjVyZW0gLjc1cmVtOwoJbWFyZ2luLWxlZnQ6IC0xcHg7CglsaW5lLWhlaWdodDogMS4yNTsKCWNvbG9yOiAjMDA3YmZmOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KCi5wYWdlLWxpbms6aG92ZXIgewoJei1pbmRleDogMjsKCWNvbG9yOiAjMDA1NmIzOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2UtbGluazpmb2N1cyB7Cgl6LWluZGV4OiAyOwoJb3V0bGluZTogMDsKCWJveC1zaGFkb3c6IDAgMCAwIC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIC4yNSk7Cn0KCi5wYWdlLWxpbms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewoJY3Vyc29yOiBwb2ludGVyOwp9CgoucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewoJbWFyZ2luLWxlZnQ6IDA7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHsKCXotaW5kZXg6IDE7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5wYWdlLWl0ZW0uZGlzYWJsZWQgLnBhZ2UtbGluayB7Cgljb2xvcjogIzZjNzU3ZDsKCXBvaW50ZXItZXZlbnRzOiBub25lOwoJY3Vyc29yOiBhdXRvOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7CglwYWRkaW5nOiAuNzVyZW0gMS41cmVtOwoJZm9udC1zaXplOiAxLjI1cmVtOwoJbGluZS1oZWlnaHQ6IDEuNTsKfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4zcmVtOwoJYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogLjNyZW07Cn0KCi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKCWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAuM3JlbTsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuM3JlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7CglwYWRkaW5nOiAuMjVyZW0gLjVyZW07Cglmb250LXNpemU6IC44NzVyZW07CglsaW5lLWhlaWdodDogMS41Owp9CgoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmZpcnN0LWNoaWxkIC5wYWdlLWxpbmsgewoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjJyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMnJlbTsKfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4ycmVtOwoJYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IC4ycmVtOwp9CgouYmFkZ2UgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZzogLjI1ZW0gLjRlbTsKCWZvbnQtc2l6ZTogNzUlOwoJZm9udC13ZWlnaHQ6IDcwMDsKCWxpbmUtaGVpZ2h0OiAxOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKCXZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKCWJvcmRlci1yYWRpdXM6IC4yNXJlbTsKfQoKLmJhZGdlOmVtcHR5IHsKCWRpc3BsYXk6IG5vbmU7Cn0KCi5idG4gLmJhZGdlIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXRvcDogLTFweDsKfQoKLmJhZGdlLXBpbGwgewoJcGFkZGluZy1yaWdodDogLjZlbTsKCXBhZGRpbmctbGVmdDogLjZlbTsKCWJvcmRlci1yYWRpdXM6IDEwcmVtOwp9CgouYmFkZ2UtcHJpbWFyeSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KCi5iYWRnZS1wcmltYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2UtcHJpbWFyeVtocmVmXTpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7Cn0KCi5iYWRnZS1zZWNvbmRhcnkgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwp9CgouYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmhvdmVyLCAuYmFkZ2Utc2Vjb25kYXJ5W2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogIzU0NWI2MjsKfQoKLmJhZGdlLXN1Y2Nlc3MgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1Owp9CgouYmFkZ2Utc3VjY2Vzc1tocmVmXTpob3ZlciwgLmJhZGdlLXN1Y2Nlc3NbaHJlZl06Zm9jdXMgewoJY29sb3I6ICNmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMWU3ZTM0Owp9CgouYmFkZ2UtaW5mbyB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7Cn0KCi5iYWRnZS1pbmZvW2hyZWZdOmhvdmVyLCAuYmFkZ2UtaW5mb1tocmVmXTpmb2N1cyB7Cgljb2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICMxMTdhOGI7Cn0KCi5iYWRnZS13YXJuaW5nIHsKCWNvbG9yOiAjMjEyNTI5OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKfQoKLmJhZGdlLXdhcm5pbmdbaHJlZl06aG92ZXIsIC5iYWRnZS13YXJuaW5nW2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjMjEyNTI5OwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogI2QzOWUwMDsKfQoKLmJhZGdlLWRhbmdlciB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7Cn0KCi5iYWRnZS1kYW5nZXJbaHJlZl06aG92ZXIsIC5iYWRnZS1kYW5nZXJbaHJlZl06Zm9jdXMgewoJY29sb3I6ICNmZmY7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwOwp9CgouYmFkZ2UtbGlnaHQgewoJY29sb3I6ICMyMTI1Mjk7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9CgouYmFkZ2UtbGlnaHRbaHJlZl06aG92ZXIsIC5iYWRnZS1saWdodFtocmVmXTpmb2N1cyB7Cgljb2xvcjogIzIxMjUyOTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNkYWUwZTU7Cn0KCi5iYWRnZS1kYXJrIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKfQoKLmJhZGdlLWRhcmtbaHJlZl06aG92ZXIsIC5iYWRnZS1kYXJrW2hyZWZdOmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJYmFja2dyb3VuZC1jb2xvcjogIzFkMjEyNDsKfQoKLmp1bWJvdHJvbiB7CglwYWRkaW5nOiAycmVtIDFyZW07CgltYXJnaW4tYm90dG9tOiAycmVtOwoJYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKCWJvcmRlci1yYWRpdXM6IC4zcmVtOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5qdW1ib3Ryb24gewoJCXBhZGRpbmc6IDRyZW0gMnJlbTsKCX0KfQoKLmp1bWJvdHJvbi1mbHVpZCB7CglwYWRkaW5nLXJpZ2h0OiAwOwoJcGFkZGluZy1sZWZ0OiAwOwoJYm9yZGVyLXJhZGl1czogMDsKfQoKLmFsZXJ0IHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOwoJbWFyZ2luLWJvdHRvbTogMXJlbTsKCWJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgouYWxlcnQtaGVhZGluZyB7Cgljb2xvcjogaW5oZXJpdDsKfQoKLmFsZXJ0LWxpbmsgewoJZm9udC13ZWlnaHQ6IDcwMDsKfQoKLmFsZXJ0LWRpc21pc3NpYmxlIHsKCXBhZGRpbmctcmlnaHQ6IDRyZW07Cn0KCi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2UgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJcmlnaHQ6IDA7CglwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsKCWNvbG9yOiBpbmhlcml0Owp9CgouYWxlcnQtcHJpbWFyeSB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICNjY2U1ZmY7Cglib3JkZXItY29sb3I6ICNiOGRhZmY7Cn0KCi5hbGVydC1wcmltYXJ5IGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICM5ZWNkZmY7Cn0KCi5hbGVydC1wcmltYXJ5IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDAyNzUyOwp9CgouYWxlcnQtc2Vjb25kYXJ5IHsKCWNvbG9yOiAjMzgzZDQxOwoJYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTsKCWJvcmRlci1jb2xvcjogI2Q2ZDhkYjsKfQoKLmFsZXJ0LXNlY29uZGFyeSBociB7Cglib3JkZXItdG9wLWNvbG9yOiAjYzhjY2NmOwp9CgouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMjEyMzI2Owp9CgouYWxlcnQtc3VjY2VzcyB7Cgljb2xvcjogIzE1NTcyNDsKCWJhY2tncm91bmQtY29sb3I6ICNkNGVkZGE7Cglib3JkZXItY29sb3I6ICNjM2U2Y2I7Cn0KCi5hbGVydC1zdWNjZXNzIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNiMWRmYmI7Cn0KCi5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMGIyZTEzOwp9CgouYWxlcnQtaW5mbyB7Cgljb2xvcjogIzBjNTQ2MDsKCWJhY2tncm91bmQtY29sb3I6ICNkMWVjZjE7Cglib3JkZXItY29sb3I6ICNiZWU1ZWI7Cn0KCi5hbGVydC1pbmZvIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNhYmRkZTU7Cn0KCi5hbGVydC1pbmZvIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDYyYzMyOwp9CgouYWxlcnQtd2FybmluZyB7Cgljb2xvcjogIzg1NjQwNDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7Cglib3JkZXItY29sb3I6ICNmZmVlYmE7Cn0KCi5hbGVydC13YXJuaW5nIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNmZmU3YTA7Cn0KCi5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNTMzZjAyOwp9CgouYWxlcnQtZGFuZ2VyIHsKCWNvbG9yOiAjNzIxYzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2Y4ZDdkYTsKCWJvcmRlci1jb2xvcjogI2Y1YzZjYjsKfQoKLmFsZXJ0LWRhbmdlciBociB7Cglib3JkZXItdG9wLWNvbG9yOiAjZjFiMWI3Owp9CgouYWxlcnQtZGFuZ2VyIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNDkxMjE3Owp9CgouYWxlcnQtbGlnaHQgewoJY29sb3I6ICM4MTgxODI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlOwoJYm9yZGVyLWNvbG9yOiAjZmRmZGZlOwp9CgouYWxlcnQtbGlnaHQgaHIgewoJYm9yZGVyLXRvcC1jb2xvcjogI2YxZjFmMTsKfQoKLmFsZXJ0LWxpZ2h0IC5hbGVydC1saW5rIHsKCWNvbG9yOiAjNjg2ODY4Owp9CgouYWxlcnQtZGFyayB7Cgljb2xvcjogIzFiMWUyMTsKCWJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7Cglib3JkZXItY29sb3I6ICNjNmM4Y2E7Cn0KCi5hbGVydC1kYXJrIGhyIHsKCWJvcmRlci10b3AtY29sb3I6ICNiOWJiYmQ7Cn0KCi5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsKCWNvbG9yOiAjMDQwNTA1Owp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgewoJZnJvbSB7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjogMXJlbSAwOwoJfQoJCgl0byB7CgkJYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwoJfQp9CgpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKCWZyb20gewoJCWJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsKCX0KCQoJdG8gewoJCWJhY2tncm91bmQtcG9zaXRpb246IDAgMDsKCX0KfQoKLnByb2dyZXNzIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCWhlaWdodDogMXJlbTsKCW92ZXJmbG93OiBoaWRkZW47Cglmb250LXNpemU6IC43NXJlbTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cglib3JkZXItcmFkaXVzOiAuMjVyZW07Cn0KCi5wcm9ncmVzcy1iYXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJLW1zLWZsZXgtcGFjazogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cgljb2xvcjogI2ZmZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKCXdoaXRlLXNwYWNlOiBub3dyYXA7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwoJLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAuNnMgZWFzZTsKCXRyYW5zaXRpb246IHdpZHRoIC42cyBlYXNlOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkucHJvZ3Jlc3MtYmFyIHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLnByb2dyZXNzLWJhci1zdHJpcGVkIHsKCWJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTUpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpOwoJYmFja2dyb3VuZC1zaXplOiAxcmVtIDFyZW07Cn0KCi5wcm9ncmVzcy1iYXItYW5pbWF0ZWQgewoJLXdlYmtpdC1hbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKCWFuaW1hdGlvbjogcHJvZ3Jlc3MtYmFyLXN0cmlwZXMgMXMgbGluZWFyIGluZmluaXRlOwp9CgoubWVkaWEgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Cn0KCi5tZWRpYS1ib2R5IHsKCS1tcy1mbGV4OiAxOwoJZmxleDogMTsKfQoKLmxpc3QtZ3JvdXAgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJcGFkZGluZy1sZWZ0OiAwOwoJbWFyZ2luLWJvdHRvbTogMDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24gewoJd2lkdGg6IDEwMCU7Cgljb2xvcjogIzQ5NTA1NzsKCXRleHQtYWxpZ246IGluaGVyaXQ7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzQ5NTA1NzsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmFjdGl2ZSB7Cgljb2xvcjogIzIxMjUyOTsKCWJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7CglwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsKCW1hcmdpbi1ib3R0b206IC0xcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTI1KTsKfQoKLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtOwp9CgoubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgewoJbWFyZ2luLWJvdHRvbTogMDsKCWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAuMjVyZW07Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW07Cn0KCi5saXN0LWdyb3VwLWl0ZW06aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgewoJei1pbmRleDogMTsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCwgLmxpc3QtZ3JvdXAtaXRlbTpkaXNhYmxlZCB7Cgljb2xvcjogIzZjNzU3ZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsKCXotaW5kZXg6IDI7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cglib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KCi5saXN0LWdyb3VwLWZsdXNoIC5saXN0LWdyb3VwLWl0ZW0gewoJYm9yZGVyLXJpZ2h0OiAwOwoJYm9yZGVyLWxlZnQ6IDA7Cglib3JkZXItcmFkaXVzOiAwOwp9CgoubGlzdC1ncm91cC1mbHVzaDpmaXJzdC1jaGlsZCAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKCWJvcmRlci10b3A6IDA7Cn0KCi5saXN0LWdyb3VwLWZsdXNoOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKCWJvcmRlci1ib3R0b206IDA7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeSB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzAwNDA4NTsKCWJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7Cgljb2xvcjogI2ZmZjsKCWJhY2tncm91bmQtY29sb3I6ICMwMDQwODU7Cglib3JkZXItY29sb3I6ICMwMDQwODU7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5IHsKCWNvbG9yOiAjMzgzZDQxOwoJYmFja2dyb3VuZC1jb2xvcjogI2Q2ZDhkYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7Cgljb2xvcjogIzM4M2Q0MTsKCWJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzM4M2Q0MTsKCWJvcmRlci1jb2xvcjogIzM4M2Q0MTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsKCWNvbG9yOiAjMTU1NzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2MzZTZjYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMTU1NzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzE1NTcyNDsKCWJvcmRlci1jb2xvcjogIzE1NTcyNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvIHsKCWNvbG9yOiAjMGM1NDYwOwoJYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMGM1NDYwOwoJYmFja2dyb3VuZC1jb2xvcjogI2FiZGRlNTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzBjNTQ2MDsKCWJvcmRlci1jb2xvcjogIzBjNTQ2MDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nIHsKCWNvbG9yOiAjODU2NDA0OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZWViYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjODU2NDA0OwoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzg1NjQwNDsKCWJvcmRlci1jb2xvcjogIzg1NjQwNDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewoJY29sb3I6ICM3MjFjMjQ7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjVjNmNiOwp9CgoubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjNzIxYzI0OwoJYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewoJY29sb3I6ICNmZmY7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNzIxYzI0OwoJYm9yZGVyLWNvbG9yOiAjNzIxYzI0Owp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0IHsKCWNvbG9yOiAjODE4MTgyOwoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewoJY29sb3I6ICM4MTgxODI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzgxODE4MjsKCWJvcmRlci1jb2xvcjogIzgxODE4MjsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrIHsKCWNvbG9yOiAjMWIxZTIxOwoJYmFja2dyb3VuZC1jb2xvcjogI2M2YzhjYTsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKCWNvbG9yOiAjMWIxZTIxOwoJYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKCWNvbG9yOiAjZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzFiMWUyMTsKCWJvcmRlci1jb2xvcjogIzFiMWUyMTsKfQoKLmNsb3NlIHsKCWZsb2F0OiByaWdodDsKCWZvbnQtc2l6ZTogMS41cmVtOwoJZm9udC13ZWlnaHQ6IDcwMDsKCWxpbmUtaGVpZ2h0OiAxOwoJY29sb3I6ICMwMDA7Cgl0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwoJb3BhY2l0eTogLjU7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmNsb3NlOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmZvY3VzIHsKCWNvbG9yOiAjMDAwOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJb3BhY2l0eTogLjc1Owp9CgpidXR0b24uY2xvc2UgewoJcGFkZGluZzogMDsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwoJYm9yZGVyOiAwOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9CgoubW9kYWwtb3BlbiB7CglvdmVyZmxvdzogaGlkZGVuOwp9CgoubW9kYWwtb3BlbiAubW9kYWwgewoJb3ZlcmZsb3cteDogaGlkZGVuOwoJb3ZlcmZsb3cteTogYXV0bzsKfQoKLm1vZGFsIHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXJpZ2h0OiAwOwoJYm90dG9tOiAwOwoJbGVmdDogMDsKCXotaW5kZXg6IDEwNTA7CglkaXNwbGF5OiBub25lOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCW91dGxpbmU6IDA7Cn0KCi5tb2RhbC1kaWFsb2cgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJd2lkdGg6IGF1dG87CgltYXJnaW46IC41cmVtOwoJcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewoJLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7Cgl0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuM3MgZWFzZS1vdXQ7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzIGVhc2Utb3V0OwoJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMjUlKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0yNSUpOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CgkubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZyB7Cgktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApOwoJdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7Cn0KCi5tb2RhbC1kaWFsb2ctY2VudGVyZWQgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgltaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoIC41cmVtICogMiApKTsKfQoKLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKCWRpc3BsYXk6IGJsb2NrOwoJaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKCAuNXJlbSAqIDIgKSk7Cgljb250ZW50OiAiIjsKfQoKLm1vZGFsLWNvbnRlbnQgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJd2lkdGg6IDEwMCU7Cglwb2ludGVyLWV2ZW50czogYXV0bzsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMik7Cglib3JkZXItcmFkaXVzOiAuM3JlbTsKCW91dGxpbmU6IDA7Cn0KCi5tb2RhbC1iYWNrZHJvcCB7Cglwb3NpdGlvbjogZml4ZWQ7Cgl0b3A6IDA7CglyaWdodDogMDsKCWJvdHRvbTogMDsKCWxlZnQ6IDA7Cgl6LWluZGV4OiAxMDQwOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoKLm1vZGFsLWJhY2tkcm9wLmZhZGUgewoJb3BhY2l0eTogMDsKfQoKLm1vZGFsLWJhY2tkcm9wLnNob3cgewoJb3BhY2l0eTogLjU7Cn0KCi5tb2RhbC1oZWFkZXIgewoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwoJcGFkZGluZzogMXJlbTsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTllY2VmOwoJYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogLjNyZW07Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjNyZW07Cn0KCi5tb2RhbC1oZWFkZXIgLmNsb3NlIHsKCXBhZGRpbmc6IDFyZW07CgltYXJnaW46IC0xcmVtIC0xcmVtIC0xcmVtIGF1dG87Cn0KCi5tb2RhbC10aXRsZSB7CgltYXJnaW4tYm90dG9tOiAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKfQoKLm1vZGFsLWJvZHkgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJLW1zLWZsZXg6IDEgMSBhdXRvOwoJZmxleDogMSAxIGF1dG87CglwYWRkaW5nOiAxcmVtOwp9CgoubW9kYWwtZm9vdGVyIHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94OwoJZGlzcGxheTogLXdlYmtpdC1mbGV4OwoJZGlzcGxheTogZmxleDsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJLW1zLWZsZXgtcGFjazogZW5kOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCXBhZGRpbmc6IDFyZW07Cglib3JkZXItdG9wOiAxcHggc29saWQgI2U5ZWNlZjsKfQoKLm1vZGFsLWZvb3RlciA+IDpub3QoOmZpcnN0LWNoaWxkKSB7CgltYXJnaW4tbGVmdDogLjI1cmVtOwp9CgoubW9kYWwtZm9vdGVyID4gOm5vdCg6bGFzdC1jaGlsZCkgewoJbWFyZ2luLXJpZ2h0OiAuMjVyZW07Cn0KCi5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC05OTk5cHg7Cgl3aWR0aDogNTBweDsKCWhlaWdodDogNTBweDsKCW92ZXJmbG93OiBzY3JvbGw7Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewoJLm1vZGFsLWRpYWxvZyB7CgkJbWF4LXdpZHRoOiA1MDBweDsKCQltYXJnaW46IDEuNzVyZW0gYXV0bzsKCX0KCQoJLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CgkJbWluLWhlaWdodDogY2FsYygxMDAlIC0gKCAxLjc1cmVtICogMiApKTsKCX0KCQoJLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKCQloZWlnaHQ6IGNhbGMoMTAwdmggLSAoIDEuNzVyZW0gKiAyICkpOwoJfQoJCgkubW9kYWwtc20gewoJCW1heC13aWR0aDogMzAwcHg7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLm1vZGFsLWxnIHsKCQltYXgtd2lkdGg6IDgwMHB4OwoJfQp9CgoudG9vbHRpcCB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiAxMDcwOwoJZGlzcGxheTogYmxvY2s7CgltYXJnaW46IDA7Cglmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCBzYW5zLXNlcmlmLCAiQXBwbGUgQ29sb3IgRW1vamkiLCAiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIiwgIk5vdG8gQ29sb3IgRW1vamkiOwoJZm9udC1zdHlsZTogbm9ybWFsOwoJZm9udC13ZWlnaHQ6IDQwMDsKCWxpbmUtaGVpZ2h0OiAxLjU7Cgl0ZXh0LWFsaWduOiBsZWZ0OwoJdGV4dC1hbGlnbjogc3RhcnQ7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cgl0ZXh0LXNoYWRvdzogbm9uZTsKCXRleHQtdHJhbnNmb3JtOiBub25lOwoJbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsKCXdvcmQtYnJlYWs6IG5vcm1hbDsKCXdvcmQtc3BhY2luZzogbm9ybWFsOwoJd2hpdGUtc3BhY2U6IG5vcm1hbDsKCWxpbmUtYnJlYWs6IGF1dG87Cglmb250LXNpemU6IC44NzVyZW07Cgl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CglvcGFjaXR5OiAwOwp9CgoudG9vbHRpcC5zaG93IHsKCW9wYWNpdHk6IC45Owp9CgoudG9vbHRpcCAuYXJyb3cgewoJcG9zaXRpb246IGFic29sdXRlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogLjhyZW07CgloZWlnaHQ6IC40cmVtOwp9CgoudG9vbHRpcCAuYXJyb3c6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgljb250ZW50OiAiIjsKCWJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cglib3JkZXItc3R5bGU6IHNvbGlkOwp9CgouYnMtdG9vbHRpcC10b3AsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSB7CglwYWRkaW5nOiAuNHJlbSAwOwp9CgouYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKCWJvdHRvbTogMDsKfQoKLmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgewoJdG9wOiAwOwoJYm9yZGVyLXdpZHRoOiAuNHJlbSAuNHJlbSAwOwoJYm9yZGVyLXRvcC1jb2xvcjogIzAwMDsKfQoKLmJzLXRvb2x0aXAtcmlnaHQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKCXBhZGRpbmc6IDAgLjRyZW07Cn0KCi5icy10b29sdGlwLXJpZ2h0IC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKCWxlZnQ6IDA7Cgl3aWR0aDogLjRyZW07CgloZWlnaHQ6IC44cmVtOwp9CgouYnMtdG9vbHRpcC1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUgewoJcmlnaHQ6IDA7Cglib3JkZXItd2lkdGg6IC40cmVtIC40cmVtIC40cmVtIDA7Cglib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKCXBhZGRpbmc6IC40cmVtIDA7Cn0KCi5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewoJdG9wOiAwOwp9CgouYnMtdG9vbHRpcC1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7Cglib3R0b206IDA7Cglib3JkZXItd2lkdGg6IDAgLjRyZW0gLjRyZW07Cglib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwOwp9CgouYnMtdG9vbHRpcC1sZWZ0LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCXBhZGRpbmc6IDAgLjRyZW07Cn0KCi5icy10b29sdGlwLWxlZnQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7CglyaWdodDogMDsKCXdpZHRoOiAuNHJlbTsKCWhlaWdodDogLjhyZW07Cn0KCi5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUgewoJbGVmdDogMDsKCWJvcmRlci13aWR0aDogLjRyZW0gMCAuNHJlbSAuNHJlbTsKCWJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9CgoudG9vbHRpcC1pbm5lciB7CgltYXgtd2lkdGg6IDIwMHB4OwoJcGFkZGluZzogLjI1cmVtIC41cmVtOwoJY29sb3I6ICNmZmY7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwoJYm9yZGVyLXJhZGl1czogLjI1cmVtOwp9CgoucG9wb3ZlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7CglsZWZ0OiAwOwoJei1pbmRleDogMTA2MDsKCWRpc3BsYXk6IGJsb2NrOwoJbWF4LXdpZHRoOiAyNzZweDsKCWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7Cglmb250LXN0eWxlOiBub3JtYWw7Cglmb250LXdlaWdodDogNDAwOwoJbGluZS1oZWlnaHQ6IDEuNTsKCXRleHQtYWxpZ246IGxlZnQ7Cgl0ZXh0LWFsaWduOiBzdGFydDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXRleHQtc2hhZG93OiBub25lOwoJdGV4dC10cmFuc2Zvcm06IG5vbmU7CglsZXR0ZXItc3BhY2luZzogbm9ybWFsOwoJd29yZC1icmVhazogbm9ybWFsOwoJd29yZC1zcGFjaW5nOiBub3JtYWw7Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwoJbGluZS1icmVhazogYXV0bzsKCWZvbnQtc2l6ZTogLjg3NXJlbTsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKCWJhY2tncm91bmQtY29sb3I6ICNmZmY7Cgktd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CgliYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwoJYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMik7Cglib3JkZXItcmFkaXVzOiAuM3JlbTsKfQoKLnBvcG92ZXIgLmFycm93IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWRpc3BsYXk6IGJsb2NrOwoJd2lkdGg6IDFyZW07CgloZWlnaHQ6IC41cmVtOwoJbWFyZ2luOiAwIC4zcmVtOwp9CgoucG9wb3ZlciAuYXJyb3c6OmJlZm9yZSwgLnBvcG92ZXIgLmFycm93OjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7CglkaXNwbGF5OiBibG9jazsKCWNvbnRlbnQ6ICIiOwoJYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlci1zdHlsZTogc29saWQ7Cn0KCi5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKCW1hcmdpbi1ib3R0b206IC41cmVtOwp9CgouYnMtcG9wb3Zlci10b3AgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKCWJvdHRvbTogY2FsYygoIC41cmVtICsgMXB4ICkgKiAtMSk7Cn0KCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewoJYm9yZGVyLXdpZHRoOiAuNXJlbSAuNXJlbSAwOwp9CgouYnMtcG9wb3Zlci10b3AgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSAuYXJyb3c6OmJlZm9yZSB7Cglib3R0b206IDA7Cglib3JkZXItdG9wLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7Cn0KCi5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjphZnRlciB7Cglib3R0b206IDFweDsKCWJvcmRlci10b3AtY29sb3I6ICNmZmY7Cn0KCi5icy1wb3BvdmVyLXJpZ2h0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSB7CgltYXJnaW4tbGVmdDogLjVyZW07Cn0KCi5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKCWxlZnQ6IGNhbGMoKCAuNXJlbSArIDFweCApICogLTEpOwoJd2lkdGg6IC41cmVtOwoJaGVpZ2h0OiAxcmVtOwoJbWFyZ2luOiAuM3JlbSAwOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YWZ0ZXIgewoJYm9yZGVyLXdpZHRoOiAuNXJlbSAuNXJlbSAuNXJlbSAwOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUgewoJbGVmdDogMDsKCWJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMjUpOwp9CgouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVyIHsKCWxlZnQ6IDFweDsKCWJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjsKfQoKLmJzLXBvcG92ZXItYm90dG9tLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gewoJbWFyZ2luLXRvcDogLjVyZW07Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewoJdG9wOiBjYWxjKCggLjVyZW0gKyAxcHggKSAqIC0xKTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93OjphZnRlciB7Cglib3JkZXItd2lkdGg6IDAgLjVyZW0gLjVyZW0gLjVyZW07Cn0KCi5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YmVmb3JlIHsKCXRvcDogMDsKCWJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgLjI1KTsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmFmdGVyIHsKCXRvcDogMXB4OwoJYm9yZGVyLWJvdHRvbS1jb2xvcjogI2ZmZjsKfQoKLmJzLXBvcG92ZXItYm90dG9tIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLnBvcG92ZXItaGVhZGVyOjpiZWZvcmUgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJbGVmdDogNTAlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMXJlbTsKCW1hcmdpbi1sZWZ0OiAtLjVyZW07Cgljb250ZW50OiAiIjsKCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdmN2Y3Owp9CgouYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKCW1hcmdpbi1yaWdodDogLjVyZW07Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdyB7CglyaWdodDogY2FsYygoIC41cmVtICsgMXB4ICkgKiAtMSk7Cgl3aWR0aDogLjVyZW07CgloZWlnaHQ6IDFyZW07CgltYXJnaW46IC4zcmVtIDA7Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmFmdGVyIHsKCWJvcmRlci13aWR0aDogLjVyZW0gMCAuNXJlbSAuNXJlbTsKfQoKLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSB7CglyaWdodDogMDsKCWJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4yNSk7Cn0KCi5icy1wb3BvdmVyLWxlZnQgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmFmdGVyIHsKCXJpZ2h0OiAxcHg7Cglib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoKLnBvcG92ZXItaGVhZGVyIHsKCXBhZGRpbmc6IC41cmVtIC43NXJlbTsKCW1hcmdpbi1ib3R0b206IDA7Cglmb250LXNpemU6IDFyZW07Cgljb2xvcjogaW5oZXJpdDsKCWJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7Cglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ViZWJlYjsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGNhbGMoLjNyZW0gLSAxcHgpOwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGMoLjNyZW0gLSAxcHgpOwp9CgoucG9wb3Zlci1oZWFkZXI6ZW1wdHkgewoJZGlzcGxheTogbm9uZTsKfQoKLnBvcG92ZXItYm9keSB7CglwYWRkaW5nOiAuNXJlbSAuNzVyZW07Cgljb2xvcjogIzIxMjUyOTsKfQoKLmNhcm91c2VsIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmNhcm91c2VsLWlubmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXdpZHRoOiAxMDAlOwoJb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLmNhcm91c2VsLWl0ZW0gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogbm9uZTsKCS1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CglhbGlnbi1pdGVtczogY2VudGVyOwoJd2lkdGg6IDEwMCU7Cgktd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKCWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsKCS13ZWJraXQtcGVyc3BlY3RpdmU6IDEwMDBweDsKCXBlcnNwZWN0aXZlOiAxMDAwcHg7Cn0KCi5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwgLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7CglkaXNwbGF5OiBibG9jazsKCS13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gLjZzIGVhc2UsIG1hcmdpbiAuNnMgZWFzZTsKCXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIC42cyBlYXNlLCBtYXJnaW4gLjZzIGVhc2U7Cgl0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjZzIGVhc2UsIG1hcmdpbiAuNnMgZWFzZTsKfQoKQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewoJLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKCQktd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CgkJdHJhbnNpdGlvbjogbm9uZTsKCX0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IDA7Cn0KCi5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewoJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cgl0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KCkBzdXBwb3J0cyAoKC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgb3IgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpKSB7CgkuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKCQktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CgkJdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKCX0KfQoKLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwoJdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwp9CgpAc3VwcG9ydHMgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIHsKCS5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CgkJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwoJCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1pdGVtLXByZXYsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0IHsKCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7Cn0KCkBzdXBwb3J0cyAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgewoJLmNhcm91c2VsLWl0ZW0tcHJldiwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQgewoJCS13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7CgkJdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtIHsKCW9wYWNpdHk6IDA7Cgl0cmFuc2l0aW9uLWR1cmF0aW9uOiAuNnM7Cgl0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LmNhcm91c2VsLWl0ZW0tcmlnaHQgewoJb3BhY2l0eTogMTsKfQoKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CglvcGFjaXR5OiAwOwp9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7Cgktd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKCXRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKfQoKQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CgkuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1sZWZ0LCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcHJldiB7CgkJLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwoJCXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7Cgl9Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYsIC5jYXJvdXNlbC1jb250cm9sLW5leHQgewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJZGlzcGxheTogLW1zLWZsZXhib3g7CglkaXNwbGF5OiAtd2Via2l0LWZsZXg7CglkaXNwbGF5OiBmbGV4OwoJLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CgktbXMtZmxleC1wYWNrOiBjZW50ZXI7CglqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCXdpZHRoOiAxNSU7Cgljb2xvcjogI2ZmZjsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW9wYWNpdHk6IC41Owp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmZvY3VzIHsKCWNvbG9yOiAjZmZmOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJb3V0bGluZTogMDsKCW9wYWNpdHk6IC45Owp9CgouY2Fyb3VzZWwtY29udHJvbC1wcmV2IHsKCWxlZnQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLW5leHQgewoJcmlnaHQ6IDA7Cn0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAyMHB4OwoJaGVpZ2h0OiAyMHB4OwoJYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXI7CgliYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIGZpbGw9XCclMjNmZmZcJyB2aWV3Qm94PVwnMCAwIDggOFwnJTNFJTNDcGF0aCBkPVwnTTUuMjUgMGwtNCA0IDQgNCAxLjUtMS41LTIuNS0yLjUgMi41LTIuNS0xLjUtMS41elwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnIGZpbGw9XCclMjNmZmZcJyB2aWV3Qm94PVwnMCAwIDggOFwnJTNFJTNDcGF0aCBkPVwnTTIuNzUgMGwtMS41IDEuNSAyLjUgMi41LTIuNSAyLjUgMS41IDEuNSA0LTQtNC00elwnLyUzRSUzQy9zdmclM0UiKTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IDA7Cglib3R0b206IDEwcHg7CglsZWZ0OiAwOwoJei1pbmRleDogMTU7CglkaXNwbGF5OiAtbXMtZmxleGJveDsKCWRpc3BsYXk6IC13ZWJraXQtZmxleDsKCWRpc3BsYXk6IGZsZXg7CgktbXMtZmxleC1wYWNrOiBjZW50ZXI7CglqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCXBhZGRpbmctbGVmdDogMDsKCW1hcmdpbi1yaWdodDogMTUlOwoJbWFyZ2luLWxlZnQ6IDE1JTsKCWxpc3Qtc3R5bGU6IG5vbmU7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCS1tcy1mbGV4OiAwIDEgYXV0bzsKCWZsZXg6IDAgMSBhdXRvOwoJd2lkdGg6IDMwcHg7CgloZWlnaHQ6IDNweDsKCW1hcmdpbi1yaWdodDogM3B4OwoJbWFyZ2luLWxlZnQ6IDNweDsKCXRleHQtaW5kZW50OiAtOTk5cHg7CgljdXJzb3I6IHBvaW50ZXI7CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KTsKfQoKLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmJlZm9yZSB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl0b3A6IC0xMHB4OwoJbGVmdDogMDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMHB4OwoJY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjphZnRlciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cglib3R0b206IC0xMHB4OwoJbGVmdDogMDsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMHB4OwoJY29udGVudDogIiI7Cn0KCi5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKLmNhcm91c2VsLWNhcHRpb24gewoJcG9zaXRpb246IGFic29sdXRlOwoJcmlnaHQ6IDE1JTsKCWJvdHRvbTogMjBweDsKCWxlZnQ6IDE1JTsKCXotaW5kZXg6IDEwOwoJcGFkZGluZy10b3A6IDIwcHg7CglwYWRkaW5nLWJvdHRvbTogMjBweDsKCWNvbG9yOiAjZmZmOwoJdGV4dC1hbGlnbjogY2VudGVyOwp9CgouYWxpZ24tYmFzZWxpbmUgewoJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi10b3AgewoJdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9CgouYWxpZ24tbWlkZGxlIHsKCXZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDsKfQoKLmFsaWduLWJvdHRvbSB7Cgl2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi10ZXh0LWJvdHRvbSB7Cgl2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsKfQoKLmFsaWduLXRleHQtdG9wIHsKCXZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50Owp9CgouYmctcHJpbWFyeSB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCmEuYmctcHJpbWFyeTpob3ZlciwgYnV0dG9uLmJnLXByaW1hcnk6aG92ZXIsIGEuYmctcHJpbWFyeTpmb2N1cywgYnV0dG9uLmJnLXByaW1hcnk6Zm9jdXMgewoJYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9CgouYmctc2Vjb25kYXJ5IHsKCWJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKYS5iZy1zZWNvbmRhcnk6aG92ZXIsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6aG92ZXIsIGEuYmctc2Vjb25kYXJ5OmZvY3VzLCBidXR0b24uYmctc2Vjb25kYXJ5OmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICM1NDViNjIgIWltcG9ydGFudDsKfQoKLmJnLXN1Y2Nlc3MgewoJYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CgphLmJnLXN1Y2Nlc3M6aG92ZXIsIGJ1dHRvbi5iZy1zdWNjZXNzOmhvdmVyLCBhLmJnLXN1Y2Nlc3M6Zm9jdXMsIGJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQgIWltcG9ydGFudDsKfQoKLmJnLWluZm8gewoJYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9CgphLmJnLWluZm86aG92ZXIsIGJ1dHRvbi5iZy1pbmZvOmhvdmVyLCBhLmJnLWluZm86Zm9jdXMsIGJ1dHRvbi5iZy1pbmZvOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoKLmJnLXdhcm5pbmcgewoJYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CgphLmJnLXdhcm5pbmc6aG92ZXIsIGJ1dHRvbi5iZy13YXJuaW5nOmhvdmVyLCBhLmJnLXdhcm5pbmc6Zm9jdXMsIGJ1dHRvbi5iZy13YXJuaW5nOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsKfQoKLmJnLWRhbmdlciB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KCmEuYmctZGFuZ2VyOmhvdmVyLCBidXR0b24uYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cywgYnV0dG9uLmJnLWRhbmdlcjpmb2N1cyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi5iZy1saWdodCB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KCmEuYmctbGlnaHQ6aG92ZXIsIGJ1dHRvbi5iZy1saWdodDpob3ZlciwgYS5iZy1saWdodDpmb2N1cywgYnV0dG9uLmJnLWxpZ2h0OmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoKLmJnLWRhcmsgewoJYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CgphLmJnLWRhcms6aG92ZXIsIGJ1dHRvbi5iZy1kYXJrOmhvdmVyLCBhLmJnLWRhcms6Zm9jdXMsIGJ1dHRvbi5iZy1kYXJrOmZvY3VzIHsKCWJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsKfQoKLmJnLXdoaXRlIHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoKLmJnLXRyYW5zcGFyZW50IHsKCWJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXIgewoJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXRvcCB7Cglib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0IHsKCWJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQoKLmJvcmRlci1ib3R0b20gewoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQoKLmJvcmRlci1sZWZ0IHsKCWJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9CgouYm9yZGVyLTAgewoJYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItdG9wLTAgewoJYm9yZGVyLXRvcDogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXJpZ2h0LTAgewoJYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItYm90dG9tLTAgewoJYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWxlZnQtMCB7Cglib3JkZXItbGVmdDogMCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXByaW1hcnkgewoJYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItc2Vjb25kYXJ5IHsKCWJvcmRlci1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXN1Y2Nlc3MgewoJYm9yZGVyLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7Cn0KCi5ib3JkZXItaW5mbyB7Cglib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKLmJvcmRlci13YXJuaW5nIHsKCWJvcmRlci1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CgouYm9yZGVyLWRhbmdlciB7Cglib3JkZXItY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsKfQoKLmJvcmRlci1saWdodCB7Cglib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQoKLmJvcmRlci1kYXJrIHsKCWJvcmRlci1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CgouYm9yZGVyLXdoaXRlIHsKCWJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Cgoucm91bmRlZCB7Cglib3JkZXItcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnJvdW5kZWQtdG9wIHsKCWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50OwoJYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50Owp9Cgoucm91bmRlZC1yaWdodCB7Cglib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLWJvdHRvbSB7Cglib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogLjI1cmVtICFpbXBvcnRhbnQ7Cglib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnJvdW5kZWQtbGVmdCB7Cglib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAuMjVyZW0gIWltcG9ydGFudDsKCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IC4yNXJlbSAhaW1wb3J0YW50Owp9Cgoucm91bmRlZC1jaXJjbGUgewoJYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7Cn0KCi5yb3VuZGVkLTAgewoJYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50Owp9CgouY2xlYXJmaXg6OmFmdGVyIHsKCWRpc3BsYXk6IGJsb2NrOwoJY2xlYXI6IGJvdGg7Cgljb250ZW50OiAiIjsKfQoKLmQtbm9uZSB7CglkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5kLWlubGluZSB7CglkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWJsb2NrIHsKCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50Owp9CgouZC1ibG9jayB7CglkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9CgouZC10YWJsZSB7CglkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9CgouZC10YWJsZS1yb3cgewoJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KCi5kLXRhYmxlLWNlbGwgewoJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50Owp9CgouZC1mbGV4IHsKCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKfQoKLmQtaW5saW5lLWZsZXggewoJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CglkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5kLXNtLW5vbmUgewoJCWRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKCX0KCQoJLmQtc20taW5saW5lIHsKCQlkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmQtc20taW5saW5lLWJsb2NrIHsKCQlkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtc20tYmxvY2sgewoJCWRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXNtLXRhYmxlIHsKCQlkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS10YWJsZS1yb3cgewoJCWRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS10YWJsZS1jZWxsIHsKCQlkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXNtLWZsZXggewoJCWRpc3BsYXk6IC1tcy1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwoJfQoJCgkuZC1zbS1pbmxpbmUtZmxleCB7CgkJZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewoJLmQtbWQtbm9uZSB7CgkJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1pbmxpbmUgewoJCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1pbmxpbmUtYmxvY2sgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1tZC1ibG9jayB7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtbWQtdGFibGUgewoJCWRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLXRhYmxlLXJvdyB7CgkJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLXRhYmxlLWNlbGwgewoJCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKCX0KCQoJLmQtbWQtZmxleCB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLW1kLWlubGluZS1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkuZC1sZy1ub25lIHsKCQlkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWlubGluZSB7CgkJZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWlubGluZS1ibG9jayB7CgkJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLWxnLWJsb2NrIHsKCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1sZy10YWJsZSB7CgkJZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKCX0KCQoJLmQtbGctdGFibGUtcm93IHsKCQlkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKCX0KCQoJLmQtbGctdGFibGUtY2VsbCB7CgkJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwoJfQoJCgkuZC1sZy1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCX0KCQoJLmQtbGctaW5saW5lLWZsZXggewoJCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CgkuZC14bC1ub25lIHsKCQlkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWlubGluZSB7CgkJZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWlubGluZS1ibG9jayB7CgkJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXhsLWJsb2NrIHsKCQlkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC14bC10YWJsZSB7CgkJZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKCX0KCQoJLmQteGwtdGFibGUtcm93IHsKCQlkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKCX0KCQoJLmQteGwtdGFibGUtY2VsbCB7CgkJZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwoJfQoJCgkuZC14bC1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtZmxleCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKCX0KCQoJLmQteGwtaW5saW5lLWZsZXggewoJCWRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCAhaW1wb3J0YW50OwoJCWRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgcHJpbnQgewoJLmQtcHJpbnQtbm9uZSB7CgkJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1pbmxpbmUgewoJCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1pbmxpbmUtYmxvY2sgewoJCWRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwoJfQoJCgkuZC1wcmludC1ibG9jayB7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKCX0KCQoJLmQtcHJpbnQtdGFibGUgewoJCWRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LXRhYmxlLXJvdyB7CgkJZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LXRhYmxlLWNlbGwgewoJCWRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsKCX0KCQoJLmQtcHJpbnQtZmxleCB7CgkJZGlzcGxheTogLW1zLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWZsZXggIWltcG9ydGFudDsKCQlkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7Cgl9CgkKCS5kLXByaW50LWlubGluZS1mbGV4IHsKCQlkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggIWltcG9ydGFudDsKCQlkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CgkJZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKCX0KfQoKLmVtYmVkLXJlc3BvbnNpdmUgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJZGlzcGxheTogYmxvY2s7Cgl3aWR0aDogMTAwJTsKCXBhZGRpbmc6IDA7CglvdmVyZmxvdzogaGlkZGVuOwp9CgouZW1iZWQtcmVzcG9uc2l2ZTo6YmVmb3JlIHsKCWRpc3BsYXk6IGJsb2NrOwoJY29udGVudDogIiI7Cn0KCi5lbWJlZC1yZXNwb25zaXZlIC5lbWJlZC1yZXNwb25zaXZlLWl0ZW0sIC5lbWJlZC1yZXNwb25zaXZlIGlmcmFtZSwgLmVtYmVkLXJlc3BvbnNpdmUgZW1iZWQsIC5lbWJlZC1yZXNwb25zaXZlIG9iamVjdCwgLmVtYmVkLXJlc3BvbnNpdmUgdmlkZW8gewoJcG9zaXRpb246IGFic29sdXRlOwoJdG9wOiAwOwoJYm90dG9tOiAwOwoJbGVmdDogMDsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYm9yZGVyOiAwOwp9CgouZW1iZWQtcmVzcG9uc2l2ZS0yMWJ5OTo6YmVmb3JlIHsKCXBhZGRpbmctdG9wOiA0Mi44NTcxNDI4NTcxJTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7CglwYWRkaW5nLXRvcDogNTYuMjUlOwp9CgouZW1iZWQtcmVzcG9uc2l2ZS00YnkzOjpiZWZvcmUgewoJcGFkZGluZy10b3A6IDc1JTsKfQoKLmVtYmVkLXJlc3BvbnNpdmUtMWJ5MTo6YmVmb3JlIHsKCXBhZGRpbmctdG9wOiAxMDAlOwp9CgouZmxleC1yb3cgewoJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKfQoKLmZsZXgtY29sdW1uIHsKCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXJvdy1yZXZlcnNlIHsKCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50Owp9CgouZmxleC1jb2x1bW4tcmV2ZXJzZSB7CgktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcCB7CgktbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CglmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKfQoKLmZsZXgtbm93cmFwIHsKCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKfQoKLmZsZXgtd3JhcC1yZXZlcnNlIHsKCS1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKfQoKLmZsZXgtZmlsbCB7CgktbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LWdyb3ctMCB7CgktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LWdyb3ctMSB7CgktbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwoJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cn0KCi5mbGV4LXNocmluay0wIHsKCS1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CglmbGV4LXNocmluazogMCAhaW1wb3J0YW50Owp9CgouZmxleC1zaHJpbmstMSB7CgktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1zdGFydCB7CgktbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKCS1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9CgouanVzdGlmeS1jb250ZW50LWNlbnRlciB7CgktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCWp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB7CgktbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CglqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQoKLmp1c3RpZnktY29udGVudC1hcm91bmQgewoJLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLXN0YXJ0IHsKCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWVuZCB7CgktbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CglhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLWl0ZW1zLWNlbnRlciB7CgktbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CglhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1pdGVtcy1iYXNlbGluZSB7CgktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCWFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50Owp9CgouYWxpZ24taXRlbXMtc3RyZXRjaCB7CgktbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKLmFsaWduLWNvbnRlbnQtc3RhcnQgewoJLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1lbmQgewoJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWNlbnRlciB7CgktbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWJldHdlZW4gewoJLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CglhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1jb250ZW50LWFyb3VuZCB7CgktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50Owp9CgouYWxpZ24tY29udGVudC1zdHJldGNoIHsKCS1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwoJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1hdXRvIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtc3RhcnQgewoJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtZW5kIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKfQoKLmFsaWduLXNlbGYtY2VudGVyIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KCi5hbGlnbi1zZWxmLWJhc2VsaW5lIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CglhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50Owp9CgouYWxpZ24tc2VsZi1zdHJldGNoIHsKCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkuZmxleC1zbS1yb3cgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1jb2x1bW4gewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1yb3ctcmV2ZXJzZSB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1jb2x1bW4tcmV2ZXJzZSB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS13cmFwIHsKCQktbXMtZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXNtLW5vd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20td3JhcC1yZXZlcnNlIHsKCQktbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1maWxsIHsKCQktbXMtZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCQlmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1zbS1ncm93LTAgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAwICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXNtLWdyb3ctMSB7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDEgIWltcG9ydGFudDsKCQlmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20tc2hyaW5rLTAgewoJCS1tcy1mbGV4LW5lZ2F0aXZlOiAwICFpbXBvcnRhbnQ7CgkJZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtc20tc2hyaW5rLTEgewoJCS1tcy1mbGV4LW5lZ2F0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1zdGFydCB7CgkJLW1zLWZsZXgtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1lbmQgewoJCS1tcy1mbGV4LXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1zbS1jZW50ZXIgewoJCS1tcy1mbGV4LXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiB7CgkJLW1zLWZsZXgtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LXNtLWFyb3VuZCB7CgkJLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1zbS1zdGFydCB7CgkJLW1zLWZsZXgtYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXNtLWVuZCB7CgkJLW1zLWZsZXgtYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tY2VudGVyIHsKCQktbXMtZmxleC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewoJCS1tcy1mbGV4LWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtc20tc3RyZXRjaCB7CgkJLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1zdGFydCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1hcm91bmQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1zbS1zdHJldGNoIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXNtLWF1dG8gewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGF1dG8gIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXNtLXN0YXJ0IHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtc20tZW5kIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1jZW50ZXIgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1iYXNlbGluZSB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1zbS1zdHJldGNoIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS5mbGV4LW1kLXJvdyB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWNvbHVtbiB7CgkJLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLXJvdy1yZXZlcnNlIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWNvbHVtbi1yZXZlcnNlIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLXdyYXAgewoJCS1tcy1mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbWQtbm93cmFwIHsKCQktbXMtZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKCQlmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC13cmFwLXJldmVyc2UgewoJCS1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWZpbGwgewoJCS1tcy1mbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwoJCWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LW1kLWdyb3ctMCB7CgkJLW1zLWZsZXgtcG9zaXRpdmU6IDAgIWltcG9ydGFudDsKCQlmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbWQtZ3Jvdy0xIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC1zaHJpbmstMCB7CgkJLW1zLWZsZXgtbmVnYXRpdmU6IDAgIWltcG9ydGFudDsKCQlmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1tZC1zaHJpbmstMSB7CgkJLW1zLWZsZXgtbmVnYXRpdmU6IDEgIWltcG9ydGFudDsKCQlmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0IHsKCQktbXMtZmxleC1wYWNrOiBzdGFydCAhaW1wb3J0YW50OwoJCWp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLWVuZCB7CgkJLW1zLWZsZXgtcGFjazogZW5kICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CgkJLW1zLWZsZXgtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1tZC1iZXR3ZWVuIHsKCQktbXMtZmxleC1wYWNrOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHsKCQktbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHsKCQktbXMtZmxleC1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtbWQtZW5kIHsKCQktbXMtZmxleC1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1jZW50ZXIgewoJCS1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1iYXNlbGluZSB7CgkJLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1tZC1zdHJldGNoIHsKCQktbXMtZmxleC1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLXN0YXJ0IHsKCQktbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1tZC1lbmQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbWQtY2VudGVyIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1tZC1iZXR3ZWVuIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbWQtYXV0byB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogYXV0byAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbWQtc3RhcnQgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1tZC1lbmQgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGVuZCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLWNlbnRlciB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLW1kLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IHN0cmV0Y2ggIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmZsZXgtbGctcm93IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctY29sdW1uIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctcm93LXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctY29sdW1uLXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1sZy1ub3dyYXAgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXdyYXAtcmV2ZXJzZSB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctZmlsbCB7CgkJLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CgkJZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgtbGctZ3Jvdy0wIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC1sZy1ncm93LTEgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXNocmluay0wIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LWxnLXNocmluay0xIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnQgewoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHsKCQktbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LWxnLWJldHdlZW4gewoJCS1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC1sZy1hcm91bmQgewoJCS1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMtbGctc3RhcnQgewoJCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy1sZy1lbmQgewoJCS1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLWNlbnRlciB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIHsKCQktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctc3RhcnQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LWxnLWVuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC1sZy1jZW50ZXIgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LWxnLWJldHdlZW4gewoJCS1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQtbGctc3RyZXRjaCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1sZy1hdXRvIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi1sZy1zdGFydCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLWxnLWVuZCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctY2VudGVyIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYtbGctc3RyZXRjaCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLmZsZXgteGwtcm93IHsKCQktbXMtZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtY29sdW1uIHsKCQktbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwoJCWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtcm93LXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtY29sdW1uLXJldmVyc2UgewoJCS1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCQlmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtd3JhcCB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC14bC1ub3dyYXAgewoJCS1tcy1mbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwoJCWZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXdyYXAtcmV2ZXJzZSB7CgkJLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CgkJZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtZmlsbCB7CgkJLW1zLWZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CgkJZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLmZsZXgteGwtZ3Jvdy0wIHsKCQktbXMtZmxleC1wb3NpdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwoJfQoJCgkuZmxleC14bC1ncm93LTEgewoJCS1tcy1mbGV4LXBvc2l0aXZlOiAxICFpbXBvcnRhbnQ7CgkJZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXNocmluay0wIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMCAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbGV4LXhsLXNocmluay0xIHsKCQktbXMtZmxleC1uZWdhdGl2ZTogMSAhaW1wb3J0YW50OwoJCWZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtc3RhcnQgewoJCS1tcy1mbGV4LXBhY2s6IHN0YXJ0ICFpbXBvcnRhbnQ7CgkJanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtZW5kIHsKCQktbXMtZmxleC1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cgl9CgkKCS5qdXN0aWZ5LWNvbnRlbnQteGwtY2VudGVyIHsKCQktbXMtZmxleC1wYWNrOiBjZW50ZXIgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwoJfQoJCgkuanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW4gewoJCS1tcy1mbGV4LXBhY2s6IGp1c3RpZnkgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmp1c3RpZnktY29udGVudC14bC1hcm91bmQgewoJCS1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24taXRlbXMteGwtc3RhcnQgewoJCS1tcy1mbGV4LWFsaWduOiBzdGFydCAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1pdGVtcy14bC1lbmQgewoJCS1tcy1mbGV4LWFsaWduOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLWNlbnRlciB7CgkJLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJCWFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKCQktbXMtZmxleC1hbGlnbjogYmFzZWxpbmUgIWltcG9ydGFudDsKCQlhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWl0ZW1zLXhsLXN0cmV0Y2ggewoJCS1tcy1mbGV4LWFsaWduOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtc3RhcnQgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXhsLWVuZCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tY29udGVudC14bC1jZW50ZXIgewoJCS1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4gewoJCS1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeSAhaW1wb3J0YW50OwoJCWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtYXJvdW5kIHsKCQktbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGUgIWltcG9ydGFudDsKCQlhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLWNvbnRlbnQteGwtc3RyZXRjaCB7CgkJLW1zLWZsZXgtbGluZS1wYWNrOiBzdHJldGNoICFpbXBvcnRhbnQ7CgkJYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi14bC1hdXRvIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBhdXRvICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkuYWxpZ24tc2VsZi14bC1zdGFydCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RhcnQgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5hbGlnbi1zZWxmLXhsLWVuZCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogZW5kICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtY2VudGVyIHsKCQktbXMtZmxleC1pdGVtLWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCQlhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtYmFzZWxpbmUgewoJCS1tcy1mbGV4LWl0ZW0tYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CgkJYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKCX0KCQoJLmFsaWduLXNlbGYteGwtc3RyZXRjaCB7CgkJLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaCAhaW1wb3J0YW50OwoJCWFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKCX0KfQoKLmZsb2F0LWxlZnQgewoJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKfQoKLmZsb2F0LXJpZ2h0IHsKCWZsb2F0OiByaWdodCAhaW1wb3J0YW50Owp9CgouZmxvYXQtbm9uZSB7CglmbG9hdDogbm9uZSAhaW1wb3J0YW50Owp9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKCS5mbG9hdC1zbS1sZWZ0IHsKCQlmbG9hdDogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkuZmxvYXQtc20tcmlnaHQgewoJCWZsb2F0OiByaWdodCAhaW1wb3J0YW50OwoJfQoJCgkuZmxvYXQtc20tbm9uZSB7CgkJZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkuZmxvYXQtbWQtbGVmdCB7CgkJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LW1kLXJpZ2h0IHsKCQlmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LW1kLW5vbmUgewoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLmZsb2F0LWxnLWxlZnQgewoJCWZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbG9hdC1sZy1yaWdodCB7CgkJZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7Cgl9CgkKCS5mbG9hdC1sZy1ub25lIHsKCQlmbG9hdDogbm9uZSAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CgkuZmxvYXQteGwtbGVmdCB7CgkJZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LXhsLXJpZ2h0IHsKCQlmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLmZsb2F0LXhsLW5vbmUgewoJCWZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cgl9Cn0KCi5wb3NpdGlvbi1zdGF0aWMgewoJcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tcmVsYXRpdmUgewoJcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7Cn0KCi5wb3NpdGlvbi1hYnNvbHV0ZSB7Cglwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKfQoKLnBvc2l0aW9uLWZpeGVkIHsKCXBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50Owp9CgoucG9zaXRpb24tc3RpY2t5IHsKCXBvc2l0aW9uOiAtd2Via2l0LXN0aWNreSAhaW1wb3J0YW50OwoJcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50Owp9CgouZml4ZWQtdG9wIHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXJpZ2h0OiAwOwoJbGVmdDogMDsKCXotaW5kZXg6IDEwMzA7Cn0KCi5maXhlZC1ib3R0b20gewoJcG9zaXRpb246IGZpeGVkOwoJcmlnaHQ6IDA7Cglib3R0b206IDA7CglsZWZ0OiAwOwoJei1pbmRleDogMTAzMDsKfQoKQHN1cHBvcnRzIChwb3NpdGlvbjogc3RpY2t5KSB7Cgkuc3RpY2t5LXRvcCB7CgkJcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwoJCXBvc2l0aW9uOiBzdGlja3k7CgkJdG9wOiAwOwoJCXotaW5kZXg6IDEwMjA7Cgl9Cn0KCi5zci1vbmx5IHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXdpZHRoOiAxcHg7CgloZWlnaHQ6IDFweDsKCXBhZGRpbmc6IDA7CglvdmVyZmxvdzogaGlkZGVuOwoJY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKCXdoaXRlLXNwYWNlOiBub3dyYXA7Cglib3JkZXI6IDA7Cn0KCi5zci1vbmx5LWZvY3VzYWJsZTphY3RpdmUsIC5zci1vbmx5LWZvY3VzYWJsZTpmb2N1cyB7Cglwb3NpdGlvbjogc3RhdGljOwoJd2lkdGg6IGF1dG87CgloZWlnaHQ6IGF1dG87CglvdmVyZmxvdzogdmlzaWJsZTsKCWNsaXA6IGF1dG87Cgl3aGl0ZS1zcGFjZTogbm9ybWFsOwp9Cgouc2hhZG93LXNtIHsKCWJveC1zaGFkb3c6IDAgLjEyNXJlbSAuMjVyZW0gcmdiYSgwLCAwLCAwLCAuMDc1KSAhaW1wb3J0YW50Owp9Cgouc2hhZG93IHsKCWJveC1zaGFkb3c6IDAgLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIC4xNSkgIWltcG9ydGFudDsKfQoKLnNoYWRvdy1sZyB7Cglib3gtc2hhZG93OiAwIDFyZW0gM3JlbSByZ2JhKDAsIDAsIDAsIC4xNzUpICFpbXBvcnRhbnQ7Cn0KCi5zaGFkb3ctbm9uZSB7Cglib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cn0KCi53LTI1IHsKCXdpZHRoOiAyNSUgIWltcG9ydGFudDsKfQoKLnctNTAgewoJd2lkdGg6IDUwJSAhaW1wb3J0YW50Owp9Cgoudy03NSB7Cgl3aWR0aDogNzUlICFpbXBvcnRhbnQ7Cn0KCi53LTEwMCB7Cgl3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Cgoudy1hdXRvIHsKCXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7Cn0KCi5oLTI1IHsKCWhlaWdodDogMjUlICFpbXBvcnRhbnQ7Cn0KCi5oLTUwIHsKCWhlaWdodDogNTAlICFpbXBvcnRhbnQ7Cn0KCi5oLTc1IHsKCWhlaWdodDogNzUlICFpbXBvcnRhbnQ7Cn0KCi5oLTEwMCB7CgloZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoKLmgtYXV0byB7CgloZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLm13LTEwMCB7CgltYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKfQoKLm1oLTEwMCB7CgltYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KCi5tLTAgewoJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cn0KCi5tdC0wLCAubXktMCB7CgltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5tci0wLCAubXgtMCB7CgltYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKfQoKLm1iLTAsIC5teS0wIHsKCW1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKfQoKLm1sLTAsIC5teC0wIHsKCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5tLTEgewoJbWFyZ2luOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTEsIC5teS0xIHsKCW1hcmdpbi10b3A6IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubXItMSwgLm14LTEgewoJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTEsIC5teS0xIHsKCW1hcmdpbi1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMSwgLm14LTEgewoJbWFyZ2luLWxlZnQ6IC4yNXJlbSAhaW1wb3J0YW50Owp9CgoubS0yIHsKCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTIsIC5teS0yIHsKCW1hcmdpbi10b3A6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0yLCAubXgtMiB7CgltYXJnaW4tcmlnaHQ6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi0yLCAubXktMiB7CgltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtMiwgLm14LTIgewoJbWFyZ2luLWxlZnQ6IC41cmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTMgewoJbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tdC0zLCAubXktMyB7CgltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tci0zLCAubXgtMyB7CgltYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoKLm1iLTMsIC5teS0zIHsKCW1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoKLm1sLTMsIC5teC0zIHsKCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5tLTQgewoJbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm10LTQsIC5teS00IHsKCW1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubXItNCwgLm14LTQgewoJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLm1iLTQsIC5teS00IHsKCW1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubWwtNCwgLm14LTQgewoJbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9CgoubS01IHsKCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9CgoubXQtNSwgLm15LTUgewoJbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9CgoubXItNSwgLm14LTUgewoJbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tYi01LCAubXktNSB7CgltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5tbC01LCAubXgtNSB7CgltYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9CgoucC0wIHsKCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoKLnB0LTAsIC5weS0wIHsKCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KCi5wci0wLCAucHgtMCB7CglwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wYi0wLCAucHktMCB7CglwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9CgoucGwtMCwgLnB4LTAgewoJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KCi5wLTEgewoJcGFkZGluZzogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wdC0xLCAucHktMSB7CglwYWRkaW5nLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0xLCAucHgtMSB7CglwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTEsIC5weS0xIHsKCXBhZGRpbmctYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKfQoKLnBsLTEsIC5weC0xIHsKCXBhZGRpbmctbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTIgewoJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKfQoKLnB0LTIsIC5weS0yIHsKCXBhZGRpbmctdG9wOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucHItMiwgLnB4LTIgewoJcGFkZGluZy1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTIsIC5weS0yIHsKCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMiwgLnB4LTIgewoJcGFkZGluZy1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50Owp9CgoucC0zIHsKCXBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKfQoKLnB0LTMsIC5weS0zIHsKCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wci0zLCAucHgtMyB7CglwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wYi0zLCAucHktMyB7CglwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50Owp9CgoucGwtMywgLnB4LTMgewoJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTQgewoJcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wdC00LCAucHktNCB7CglwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wci00LCAucHgtNCB7CglwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnBiLTQsIC5weS00IHsKCXBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKfQoKLnBsLTQsIC5weC00IHsKCXBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KCi5wLTUgewoJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50Owp9CgoucHQtNSwgLnB5LTUgewoJcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKfQoKLnByLTUsIC5weC01IHsKCXBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLnBiLTUsIC5weS01IHsKCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KCi5wbC01LCAucHgtNSB7CglwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKfQoKLm0tYXV0byB7CgltYXJnaW46IGF1dG8gIWltcG9ydGFudDsKfQoKLm10LWF1dG8sIC5teS1hdXRvIHsKCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKfQoKLm1yLWF1dG8sIC5teC1hdXRvIHsKCW1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50Owp9CgoubWItYXV0bywgLm15LWF1dG8gewoJbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50Owp9CgoubWwtYXV0bywgLm14LWF1dG8gewoJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkubS1zbS0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTAsIC5teS1zbS0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0wLCAubXgtc20tMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1zbS0wLCAubXktc20tMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMCwgLm14LXNtLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1zbS0xLCAubXktc20tMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0xLCAubXgtc20tMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTEsIC5teS1zbS0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXNtLTEsIC5teC1zbS0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTIsIC5teS1zbS0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItc20tMiwgLm14LXNtLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTIsIC5teS1zbS0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMiwgLm14LXNtLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1zbS0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXNtLTMsIC5teS1zbS0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS0zLCAubXgtc20tMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1zbS0zLCAubXktc20tMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtc20tMywgLm14LXNtLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1zbS00LCAubXktc20tNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1zbS00LCAubXgtc20tNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTQsIC5teS1zbS00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXNtLTQsIC5teC1zbS00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtc20tNSwgLm15LXNtLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLXNtLTUsIC5teC1zbS01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLTUsIC5teS1zbS01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1zbS01LCAubXgtc20tNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMCwgLnB5LXNtLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS0wLCAucHgtc20tMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMCwgLnB5LXNtLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0wLCAucHgtc20tMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXNtLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMSwgLnB5LXNtLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTEsIC5weC1zbS0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXNtLTEsIC5weS1zbS0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0xLCAucHgtc20tMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXNtLTIsIC5weS1zbS0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTIsIC5weC1zbS0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMiwgLnB5LXNtLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtc20tMiwgLnB4LXNtLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tMywgLnB5LXNtLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS0zLCAucHgtc20tMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tMywgLnB5LXNtLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS0zLCAucHgtc20tMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXNtLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tNCwgLnB5LXNtLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLXNtLTQsIC5weC1zbS00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXNtLTQsIC5weS1zbS00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS00LCAucHgtc20tNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtc20tNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtc20tNSwgLnB5LXNtLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1zbS01LCAucHgtc20tNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItc20tNSwgLnB5LXNtLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1zbS01LCAucHgtc20tNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLXNtLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtc20tYXV0bywgLm15LXNtLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLXNtLWF1dG8sIC5teC1zbS1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLXNtLWF1dG8sIC5teS1zbS1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1zbS1hdXRvLCAubXgtc20tYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CgkubS1tZC0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTAsIC5teS1tZC0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0wLCAubXgtbWQtMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1tZC0wLCAubXktbWQtMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMCwgLm14LW1kLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1tZC0xLCAubXktbWQtMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0xLCAubXgtbWQtMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTEsIC5teS1tZC0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLW1kLTEsIC5teC1tZC0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTIsIC5teS1tZC0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItbWQtMiwgLm14LW1kLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTIsIC5teS1tZC0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMiwgLm14LW1kLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1tZC0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LW1kLTMsIC5teS1tZC0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC0zLCAubXgtbWQtMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1tZC0zLCAubXktbWQtMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbWQtMywgLm14LW1kLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1tZC00LCAubXktbWQtNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1tZC00LCAubXgtbWQtNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTQsIC5teS1tZC00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLW1kLTQsIC5teC1tZC00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtbWQtNSwgLm15LW1kLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLW1kLTUsIC5teC1tZC01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLTUsIC5teS1tZC01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1tZC01LCAubXgtbWQtNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMCwgLnB5LW1kLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC0wLCAucHgtbWQtMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMCwgLnB5LW1kLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0wLCAucHgtbWQtMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLW1kLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMSwgLnB5LW1kLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTEsIC5weC1tZC0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLW1kLTEsIC5weS1tZC0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0xLCAucHgtbWQtMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LW1kLTIsIC5weS1tZC0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTIsIC5weC1tZC0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMiwgLnB5LW1kLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtbWQtMiwgLnB4LW1kLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtMywgLnB5LW1kLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC0zLCAucHgtbWQtMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtMywgLnB5LW1kLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC0zLCAucHgtbWQtMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLW1kLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtNCwgLnB5LW1kLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLW1kLTQsIC5weC1tZC00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLW1kLTQsIC5weS1tZC00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC00LCAucHgtbWQtNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbWQtNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbWQtNSwgLnB5LW1kLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1tZC01LCAucHgtbWQtNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbWQtNSwgLnB5LW1kLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1tZC01LCAucHgtbWQtNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLW1kLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtbWQtYXV0bywgLm15LW1kLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLW1kLWF1dG8sIC5teC1tZC1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLW1kLWF1dG8sIC5teS1tZC1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1tZC1hdXRvLCAubXgtbWQtYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CgkubS1sZy0wIHsKCQltYXJnaW46IDAgIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTAsIC5teS1sZy0wIHsKCQltYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0wLCAubXgtbGctMCB7CgkJbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1sZy0wLCAubXktbGctMCB7CgkJbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMCwgLm14LWxnLTAgewoJCW1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTEgewoJCW1hcmdpbjogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1sZy0xLCAubXktbGctMSB7CgkJbWFyZ2luLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0xLCAubXgtbGctMSB7CgkJbWFyZ2luLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTEsIC5teS1sZy0xIHsKCQltYXJnaW4tYm90dG9tOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLWxnLTEsIC5teC1sZy0xIHsKCQltYXJnaW4tbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTIgewoJCW1hcmdpbjogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTIsIC5teS1sZy0yIHsKCQltYXJnaW4tdG9wOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXItbGctMiwgLm14LWxnLTIgewoJCW1hcmdpbi1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTIsIC5teS1sZy0yIHsKCQltYXJnaW4tYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMiwgLm14LWxnLTIgewoJCW1hcmdpbi1sZWZ0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS1sZy0zIHsKCQltYXJnaW46IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LWxnLTMsIC5teS1sZy0zIHsKCQltYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy0zLCAubXgtbGctMyB7CgkJbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi1sZy0zLCAubXktbGctMyB7CgkJbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwtbGctMywgLm14LWxnLTMgewoJCW1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTQgewoJCW1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC1sZy00LCAubXktbGctNCB7CgkJbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci1sZy00LCAubXgtbGctNCB7CgkJbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTQsIC5teS1sZy00IHsKCQltYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLWxnLTQsIC5teC1sZy00IHsKCQltYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLTUgewoJCW1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQtbGctNSwgLm15LWxnLTUgewoJCW1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLWxnLTUsIC5teC1sZy01IHsKCQltYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLTUsIC5teS1sZy01IHsKCQltYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1sZy01LCAubXgtbGctNSB7CgkJbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMCB7CgkJcGFkZGluZzogMCAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMCwgLnB5LWxnLTAgewoJCXBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy0wLCAucHgtbGctMCB7CgkJcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMCwgLnB5LWxnLTAgewoJCXBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0wLCAucHgtbGctMCB7CgkJcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLWxnLTEgewoJCXBhZGRpbmc6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMSwgLnB5LWxnLTEgewoJCXBhZGRpbmctdG9wOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTEsIC5weC1sZy0xIHsKCQlwYWRkaW5nLXJpZ2h0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLWxnLTEsIC5weS1sZy0xIHsKCQlwYWRkaW5nLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0xLCAucHgtbGctMSB7CgkJcGFkZGluZy1sZWZ0OiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMiB7CgkJcGFkZGluZzogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LWxnLTIsIC5weS1sZy0yIHsKCQlwYWRkaW5nLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTIsIC5weC1sZy0yIHsKCQlwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMiwgLnB5LWxnLTIgewoJCXBhZGRpbmctYm90dG9tOiAuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwtbGctMiwgLnB4LWxnLTIgewoJCXBhZGRpbmctbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctMyB7CgkJcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctMywgLnB5LWxnLTMgewoJCXBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy0zLCAucHgtbGctMyB7CgkJcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctMywgLnB5LWxnLTMgewoJCXBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy0zLCAucHgtbGctMyB7CgkJcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLWxnLTQgewoJCXBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctNCwgLnB5LWxnLTQgewoJCXBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnByLWxnLTQsIC5weC1sZy00IHsKCQlwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLWxnLTQsIC5weS1sZy00IHsKCQlwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy00LCAucHgtbGctNCB7CgkJcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnAtbGctNSB7CgkJcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHQtbGctNSwgLnB5LWxnLTUgewoJCXBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci1sZy01LCAucHgtbGctNSB7CgkJcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGItbGctNSwgLnB5LWxnLTUgewoJCXBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wbC1sZy01LCAucHgtbGctNSB7CgkJcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tLWxnLWF1dG8gewoJCW1hcmdpbjogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubXQtbGctYXV0bywgLm15LWxnLWF1dG8gewoJCW1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1yLWxnLWF1dG8sIC5teC1sZy1hdXRvIHsKCQltYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm1iLWxnLWF1dG8sIC5teS1sZy1hdXRvIHsKCQltYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC1sZy1hdXRvLCAubXgtbGctYXV0byB7CgkJbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLm0teGwtMCB7CgkJbWFyZ2luOiAwICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0wLCAubXkteGwtMCB7CgkJbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMCwgLm14LXhsLTAgewoJCW1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwoJfQoJCgkubWIteGwtMCwgLm15LXhsLTAgewoJCW1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTAsIC5teC14bC0wIHsKCQltYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwoJfQoJCgkubS14bC0xIHsKCQltYXJnaW46IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQteGwtMSwgLm15LXhsLTEgewoJCW1hcmdpbi10b3A6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMSwgLm14LXhsLTEgewoJCW1hcmdpbi1yaWdodDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC0xLCAubXkteGwtMSB7CgkJbWFyZ2luLWJvdHRvbTogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC14bC0xLCAubXgteGwtMSB7CgkJbWFyZ2luLWxlZnQ6IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC0yIHsKCQltYXJnaW46IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0yLCAubXkteGwtMiB7CgkJbWFyZ2luLXRvcDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1yLXhsLTIsIC5teC14bC0yIHsKCQltYXJnaW4tcmlnaHQ6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC0yLCAubXkteGwtMiB7CgkJbWFyZ2luLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTIsIC5teC14bC0yIHsKCQltYXJnaW4tbGVmdDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLm0teGwtMyB7CgkJbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tdC14bC0zLCAubXkteGwtMyB7CgkJbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtMywgLm14LXhsLTMgewoJCW1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubWIteGwtMywgLm15LXhsLTMgewoJCW1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLm1sLXhsLTMsIC5teC14bC0zIHsKCQltYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC00IHsKCQltYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXQteGwtNCwgLm15LXhsLTQgewoJCW1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubXIteGwtNCwgLm14LXhsLTQgewoJCW1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC00LCAubXkteGwtNCB7CgkJbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tbC14bC00LCAubXgteGwtNCB7CgkJbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC01IHsKCQltYXJnaW46IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLm10LXhsLTUsIC5teS14bC01IHsKCQltYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci14bC01LCAubXgteGwtNSB7CgkJbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC01LCAubXkteGwtNSB7CgkJbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubWwteGwtNSwgLm14LXhsLTUgewoJCW1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTAgewoJCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTAsIC5weS14bC0wIHsKCQlwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtMCwgLnB4LXhsLTAgewoJCXBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTAsIC5weS14bC0wIHsKCQlwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMCwgLnB4LXhsLTAgewoJCXBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwoJfQoJCgkucC14bC0xIHsKCQlwYWRkaW5nOiAuMjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTEsIC5weS14bC0xIHsKCQlwYWRkaW5nLXRvcDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC0xLCAucHgteGwtMSB7CgkJcGFkZGluZy1yaWdodDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wYi14bC0xLCAucHkteGwtMSB7CgkJcGFkZGluZy1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMSwgLnB4LXhsLTEgewoJCXBhZGRpbmctbGVmdDogLjI1cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTIgewoJCXBhZGRpbmc6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wdC14bC0yLCAucHkteGwtMiB7CgkJcGFkZGluZy10b3A6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC0yLCAucHgteGwtMiB7CgkJcGFkZGluZy1yaWdodDogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTIsIC5weS14bC0yIHsKCQlwYWRkaW5nLWJvdHRvbTogLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBsLXhsLTIsIC5weC14bC0yIHsKCQlwYWRkaW5nLWxlZnQ6IC41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTMgewoJCXBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTMsIC5weS14bC0zIHsKCQlwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtMywgLnB4LXhsLTMgewoJCXBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTMsIC5weS14bC0zIHsKCQlwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtMywgLnB4LXhsLTMgewoJCXBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucC14bC00IHsKCQlwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTQsIC5weS14bC00IHsKCQlwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wci14bC00LCAucHgteGwtNCB7CgkJcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wYi14bC00LCAucHkteGwtNCB7CgkJcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtNCwgLnB4LXhsLTQgewoJCXBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7Cgl9CgkKCS5wLXhsLTUgewoJCXBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnB0LXhsLTUsIC5weS14bC01IHsKCQlwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucHIteGwtNSwgLnB4LXhsLTUgewoJCXBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKCX0KCQoJLnBiLXhsLTUsIC5weS14bC01IHsKCQlwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkucGwteGwtNSwgLnB4LXhsLTUgewoJCXBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwoJfQoJCgkubS14bC1hdXRvIHsKCQltYXJnaW46IGF1dG8gIWltcG9ydGFudDsKCX0KCQoJLm10LXhsLWF1dG8sIC5teS14bC1hdXRvIHsKCQltYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tci14bC1hdXRvLCAubXgteGwtYXV0byB7CgkJbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkKCS5tYi14bC1hdXRvLCAubXkteGwtYXV0byB7CgkJbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwoJfQoJCgkubWwteGwtYXV0bywgLm14LXhsLWF1dG8gewoJCW1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9Cn0KCi50ZXh0LW1vbm9zcGFjZSB7Cglmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwp9CgoudGV4dC1qdXN0aWZ5IHsKCXRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDsKfQoKLnRleHQtbm93cmFwIHsKCXdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKfQoKLnRleHQtdHJ1bmNhdGUgewoJb3ZlcmZsb3c6IGhpZGRlbjsKCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLnRleHQtbGVmdCB7Cgl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXJpZ2h0IHsKCXRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWNlbnRlciB7Cgl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CgkudGV4dC1zbS1sZWZ0IHsKCQl0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7Cgl9CgkKCS50ZXh0LXNtLXJpZ2h0IHsKCQl0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC1zbS1jZW50ZXIgewoJCXRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwoJfQp9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKCS50ZXh0LW1kLWxlZnQgewoJCXRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQtbWQtcmlnaHQgewoJCXRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7Cgl9CgkKCS50ZXh0LW1kLWNlbnRlciB7CgkJdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cgl9Cn0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewoJLnRleHQtbGctbGVmdCB7CgkJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC1sZy1yaWdodCB7CgkJdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQtbGctY2VudGVyIHsKCQl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewoJLnRleHQteGwtbGVmdCB7CgkJdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwoJfQoJCgkudGV4dC14bC1yaWdodCB7CgkJdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsKCX0KCQoJLnRleHQteGwtY2VudGVyIHsKCQl0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKCX0KfQoKLnRleHQtbG93ZXJjYXNlIHsKCXRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtdXBwZXJjYXNlIHsKCXRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQoKLnRleHQtY2FwaXRhbGl6ZSB7Cgl0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50Owp9CgouZm9udC13ZWlnaHQtbGlnaHQgewoJZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50Owp9CgouZm9udC13ZWlnaHQtbm9ybWFsIHsKCWZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsKfQoKLmZvbnQtd2VpZ2h0LWJvbGQgewoJZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50Owp9CgouZm9udC1pdGFsaWMgewoJZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlIHsKCWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXByaW1hcnkgewoJY29sb3I6ICMwMDdiZmYgIWltcG9ydGFudDsKfQoKYS50ZXh0LXByaW1hcnk6aG92ZXIsIGEudGV4dC1wcmltYXJ5OmZvY3VzIHsKCWNvbG9yOiAjMDA2MmNjICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXNlY29uZGFyeSB7Cgljb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9CgphLnRleHQtc2Vjb25kYXJ5OmhvdmVyLCBhLnRleHQtc2Vjb25kYXJ5OmZvY3VzIHsKCWNvbG9yOiAjNTQ1YjYyICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXN1Y2Nlc3MgewoJY29sb3I6ICMyOGE3NDUgIWltcG9ydGFudDsKfQoKYS50ZXh0LXN1Y2Nlc3M6aG92ZXIsIGEudGV4dC1zdWNjZXNzOmZvY3VzIHsKCWNvbG9yOiAjMWU3ZTM0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWluZm8gewoJY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQoKYS50ZXh0LWluZm86aG92ZXIsIGEudGV4dC1pbmZvOmZvY3VzIHsKCWNvbG9yOiAjMTE3YThiICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdhcm5pbmcgewoJY29sb3I6ICNmZmMxMDcgIWltcG9ydGFudDsKfQoKYS50ZXh0LXdhcm5pbmc6aG92ZXIsIGEudGV4dC13YXJuaW5nOmZvY3VzIHsKCWNvbG9yOiAjZDM5ZTAwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWRhbmdlciB7Cgljb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50Owp9CgphLnRleHQtZGFuZ2VyOmhvdmVyLCBhLnRleHQtZGFuZ2VyOmZvY3VzIHsKCWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWxpZ2h0IHsKCWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KCmEudGV4dC1saWdodDpob3ZlciwgYS50ZXh0LWxpZ2h0OmZvY3VzIHsKCWNvbG9yOiAjZGFlMGU1ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWRhcmsgewoJY29sb3I6ICMzNDNhNDAgIWltcG9ydGFudDsKfQoKYS50ZXh0LWRhcms6aG92ZXIsIGEudGV4dC1kYXJrOmZvY3VzIHsKCWNvbG9yOiAjMWQyMTI0ICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LWJvZHkgewoJY29sb3I6ICMyMTI1MjkgIWltcG9ydGFudDsKfQoKLnRleHQtbXV0ZWQgewoJY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQoKLnRleHQtYmxhY2stNTAgewoJY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpICFpbXBvcnRhbnQ7Cn0KCi50ZXh0LXdoaXRlLTUwIHsKCWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41KSAhaW1wb3J0YW50Owp9CgoudGV4dC1oaWRlIHsKCWZvbnQ6IDAvMCBhOwoJY29sb3I6IHRyYW5zcGFyZW50OwoJdGV4dC1zaGFkb3c6IG5vbmU7CgliYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKCWJvcmRlcjogMDsKfQoKLnZpc2libGUgewoJdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50Owp9CgouaW52aXNpYmxlIHsKCXZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgpAbWVkaWEgcHJpbnQgewoJKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7CgkJdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKCQlib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cgl9CgkKCWE6bm90KC5idG4pIHsKCQl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKCX0KCQoJYWJiclt0aXRsZV06OmFmdGVyIHsKCQljb250ZW50OiAiICgiIGF0dHIodGl0bGUpICIpIjsKCX0KCQoJcHJlIHsKCQl3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsKCX0KCQoJcHJlLCBibG9ja3F1b3RlIHsKCQlib3JkZXI6IDFweCBzb2xpZCAjYWRiNWJkOwoJCXBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsKCX0KCQoJdGhlYWQgewoJCWRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKCX0KCQoJdHIsIGltZyB7CgkJcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOwoJfQoJCglwLCBoMiwgaDMgewoJCW9ycGhhbnM6IDM7CgkJd2lkb3dzOiAzOwoJfQoJCgloMiwgaDMgewoJCXBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOwoJfQoJCglAcGFnZSB7CgkJc2l6ZTogYTM7Cgl9CgkKCWJvZHkgewoJCW1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDsKCX0KCQoJLmNvbnRhaW5lciB7CgkJbWluLXdpZHRoOiA5OTJweCAhaW1wb3J0YW50OwoJfQoJCgkubmF2YmFyIHsKCQlkaXNwbGF5OiBub25lOwoJfQoJCgkuYmFkZ2UgewoJCWJvcmRlcjogMXB4IHNvbGlkICMwMDA7Cgl9CgkKCS50YWJsZSB7CgkJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUgdGQsIC50YWJsZSB0aCB7CgkJYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUtYm9yZGVyZWQgdGgsIC50YWJsZS1ib3JkZXJlZCB0ZCB7CgkJYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50OwoJfQoJCgkudGFibGUtZGFyayB7CgkJY29sb3I6IGluaGVyaXQ7Cgl9CgkKCS50YWJsZS1kYXJrIHRoLCAudGFibGUtZGFyayB0ZCwgLnRhYmxlLWRhcmsgdGhlYWQgdGgsIC50YWJsZS1kYXJrIHRib2R5ICsgdGJvZHkgewoJCWJvcmRlci1jb2xvcjogI2RlZTJlNjsKCX0KCQoJLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsKCQljb2xvcjogaW5oZXJpdDsKCQlib3JkZXItY29sb3I6ICNkZWUyZTY7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKcmVxdWlyZV9vbmNlICd2ZW5kb3IvYXV0b2xvYWQucGhwJzsKCnVzZSBQYWRhbGl5YWpheVxQSFBBdXRvcHJlZml4ZXJcQXV0b3ByZWZpeGVyOwoKLy8gQ29tbW9uCi8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUmVuZGVyYWJsZS5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1NldHRpbmdzLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvT3V0cHV0Rm9ybWF0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUGFyc2VyLnBocCc7Ci8vCi8vLy8gVmFsdWUKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9WYWx1ZS5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1ZhbHVlL1ByaW1pdGl2ZVZhbHVlLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvVVJMLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvVmFsdWVMaXN0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvQ1NTRnVuY3Rpb24ucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9DYWxjRnVuY3Rpb24ucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9SdWxlVmFsdWVMaXN0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvQ2FsY1J1bGVWYWx1ZUxpc3QucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9DU1NTdHJpbmcucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9WYWx1ZS9MaW5lTmFtZS5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1ZhbHVlL0NvbG9yLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvVmFsdWUvU2l6ZS5waHAnOwovLwovLy8vIENvbW1lbnQKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9Db21tZW50L0NvbW1lbnRhYmxlLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvQ29tbWVudC9Db21tZW50LnBocCc7Ci8vCi8vLy8gUnVsZQovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1J1bGUvUnVsZS5waHAnOwovLwovLy8vIFByb3BlcnR5Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUHJvcGVydHkvU2VsZWN0b3IucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9Qcm9wZXJ0eS9BdFJ1bGUucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9Qcm9wZXJ0eS9DaGFyc2V0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUHJvcGVydHkvQ1NTTmFtZXNwYWNlLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUHJvcGVydHkvSW1wb3J0LnBocCc7Ci8vCi8vLy8gUnVsZVNldAovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1J1bGVTZXQvUnVsZVNldC5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1J1bGVTZXQvQXRSdWxlU2V0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUnVsZVNldC9EZWNsYXJhdGlvbkJsb2NrLnBocCc7Ci8vCi8vLy8gQ1NTTGlzdAovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL0NTU0xpc3QvQ1NTTGlzdC5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL0NTU0xpc3QvS2V5RnJhbWUucGhwJzsKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9DU1NMaXN0L0NTU0Jsb2NrTGlzdC5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL0NTU0xpc3QvQXRSdWxlQmxvY2tMaXN0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvQ1NTTGlzdC9Eb2N1bWVudC5waHAnOwovLwovLy8vIFBhcnNpbmcKLy9yZXF1aXJlX29uY2UgJ1BIUC1DU1MtUGFyc2VyL2xpYi9TYWJiZXJ3b3JtL0NTUy9QYXJzaW5nL1NvdXJjZUV4Y2VwdGlvbi5waHAnOwovL3JlcXVpcmVfb25jZSAnUEhQLUNTUy1QYXJzZXIvbGliL1NhYmJlcndvcm0vQ1NTL1BhcnNpbmcvT3V0cHV0RXhjZXB0aW9uLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdQSFAtQ1NTLVBhcnNlci9saWIvU2FiYmVyd29ybS9DU1MvUGFyc2luZy9VbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24ucGhwJzsKCi8vIFZlbmRvciBjb21waWxlIGFuZCBwYXJzaW5nCi8vcmVxdWlyZV9vbmNlICdwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyL3NyYy9hdXRvcHJlZml4ZXIucGhwJzsKLy8KLy9yZXF1aXJlX29uY2UgJ3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjL1ZlbmRvci5waHAnOwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvVmVuZG9yL1ZlbmRvci5waHAnOwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvVmVuZG9yL0lFLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyL3NyYy9WZW5kb3IvTW96aWxsYS5waHAnOwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvVmVuZG9yL1dlYmtpdC5waHAnOwovLwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvUGFyc2UvUHJvcGVydHkucGhwJzsKLy9yZXF1aXJlX29uY2UgJ3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjL1BhcnNlL1J1bGUucGhwJzsKLy9yZXF1aXJlX29uY2UgJ3BhZGFsaXlhamF5L3BocC1hdXRvcHJlZml4ZXIvc3JjL1BhcnNlL1NlbGVjdG9yLnBocCc7Ci8vcmVxdWlyZV9vbmNlICdwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyL3NyYy9Db21waWxlL0F0UnVsZS5waHAnOwovL3JlcXVpcmVfb25jZSAncGFkYWxpeWFqYXkvcGhwLWF1dG9wcmVmaXhlci9zcmMvQ29tcGlsZS9SdWxlU2V0LnBocCc7Ci8vcmVxdWlyZV9vbmNlICdwYWRhbGl5YWpheS9waHAtYXV0b3ByZWZpeGVyL3NyYy9Db21waWxlL0RlY2xhcmF0aW9uQmxvY2sucGhwJzsKCiRhdXRvcHJlZml4ZXIgPSBuZXcgQXV0b3ByZWZpeGVyKGZpbGVfZ2V0X2NvbnRlbnRzKCd1bnByZWZpeGVkLWJvb3RzdHJhcC5jc3MnKSk7CmZpbGVfcHV0X2NvbnRlbnRzKCdwcmVmaXhlZC1ib290c3RyYXAuY3NzJywgJGF1dG9wcmVmaXhlci0+Y29tcGlsZSgpKTsKCiRjc3NfcGFyc2VyID0gbmV3IFNhYmJlcndvcm1cQ1NTXFBhcnNlcihmaWxlX2dldF9jb250ZW50cygnb3JpZ25hbC1ib290c3RyYXAuY3NzJykpOwpmaWxlX3B1dF9jb250ZW50cygncGFyc2VkLWJvb3RzdHJhcC5jc3MnLCAkY3NzX3BhcnNlci0+cGFyc2UoKS0+cmVuZGVyKFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDo6Y3JlYXRlUHJldHR5KCkpKTsKCgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/padaliyajay/php-autoprefixer/test/unprefixed-bootstrap.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyohCiAqIEJvb3RzdHJhcCB2NC4xLjMgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pCiAqIENvcHlyaWdodCAyMDExLTIwMTggVGhlIEJvb3RzdHJhcCBBdXRob3JzCiAqIENvcHlyaWdodCAyMDExLTIwMTggVHdpdHRlciwgSW5jLgogKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKQogKi8KOnJvb3QgewogIC0tYmx1ZTogIzAwN2JmZjsKICAtLWluZGlnbzogIzY2MTBmMjsKICAtLXB1cnBsZTogIzZmNDJjMTsKICAtLXBpbms6ICNlODNlOGM7CiAgLS1yZWQ6ICNkYzM1NDU7CiAgLS1vcmFuZ2U6ICNmZDdlMTQ7CiAgLS15ZWxsb3c6ICNmZmMxMDc7CiAgLS1ncmVlbjogIzI4YTc0NTsKICAtLXRlYWw6ICMyMGM5OTc7CiAgLS1jeWFuOiAjMTdhMmI4OwogIC0td2hpdGU6ICNmZmY7CiAgLS1ncmF5OiAjNmM3NTdkOwogIC0tZ3JheS1kYXJrOiAjMzQzYTQwOwogIC0tcHJpbWFyeTogIzAwN2JmZjsKICAtLXNlY29uZGFyeTogIzZjNzU3ZDsKICAtLXN1Y2Nlc3M6ICMyOGE3NDU7CiAgLS1pbmZvOiAjMTdhMmI4OwogIC0td2FybmluZzogI2ZmYzEwNzsKICAtLWRhbmdlcjogI2RjMzU0NTsKICAtLWxpZ2h0OiAjZjhmOWZhOwogIC0tZGFyazogIzM0M2E0MDsKICAtLWJyZWFrcG9pbnQteHM6IDA7CiAgLS1icmVha3BvaW50LXNtOiA1NzZweDsKICAtLWJyZWFrcG9pbnQtbWQ6IDc2OHB4OwogIC0tYnJlYWtwb2ludC1sZzogOTkycHg7CiAgLS1icmVha3BvaW50LXhsOiAxMjAwcHg7CiAgLS1mb250LWZhbWlseS1zYW5zLXNlcmlmOiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFNlZ29lIFVJLCBSb2JvdG8sIEhlbHZldGljYSBOZXVlLCBBcmlhbCwgc2Fucy1zZXJpZiwgQXBwbGUgQ29sb3IgRW1vamksIFNlZ29lIFVJIEVtb2ppLCBTZWdvZSBVSSBTeW1ib2wsIE5vdG8gQ29sb3IgRW1vamk7CiAgLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgTGliZXJhdGlvbiBNb25vLCBDb3VyaWVyIE5ldywgbW9ub3NwYWNlOwp9CiosICo6OmJlZm9yZSwgKjo6YWZ0ZXIgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KaHRtbCB7CiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7CiAgbGluZS1oZWlnaHQ6IDEuMTU7CiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogc2Nyb2xsYmFyOwogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKfQpALW1zLXZpZXdwb3J0IHsKICB3aWR0aDogZGV2aWNlLXdpZHRoOwp9CmFydGljbGUsIGFzaWRlLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG5hdiwgc2VjdGlvbiB7CiAgZGlzcGxheTogYmxvY2s7Cn0KYm9keSB7CiAgbWFyZ2luOiAwOwogIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSI7CiAgZm9udC1zaXplOiAxcmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzIxMjUyOTsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KW3RhYmluZGV4PSItMSJdOmZvY3VzIHsKICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7Cn0KaHIgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIGhlaWdodDogMDsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKfQpwIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDFyZW07Cn0KYWJiclt0aXRsZV0sIGFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0gewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsKICBjdXJzb3I6IGhlbHA7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQphZGRyZXNzIHsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKfQpvbCwgdWwsIGRsIHsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDFyZW07Cn0Kb2wgb2wsIHVsIHVsLCBvbCB1bCwgdWwgb2wgewogIG1hcmdpbi1ib3R0b206IDA7Cn0KZHQgewogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KZGQgewogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBtYXJnaW4tbGVmdDogMDsKfQpibG9ja3F1b3RlIHsKICBtYXJnaW46IDAgMCAxcmVtOwp9CmRmbiB7CiAgZm9udC1zdHlsZTogaXRhbGljOwp9CmIsIHN0cm9uZyB7CiAgZm9udC13ZWlnaHQ6IGJvbGRlcjsKfQpzbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7Cn0Kc3ViLCBzdXAgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmb250LXNpemU6IDc1JTsKICBsaW5lLWhlaWdodDogMDsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0Kc3ViIHsKICBib3R0b206IC0wLjI1ZW07Cn0Kc3VwIHsKICB0b3A6IC0wLjVlbTsKfQphIHsKICBjb2xvcjogIzAwN2JmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogb2JqZWN0czsKfQphOmhvdmVyIHsKICBjb2xvcjogIzAwNTZiMzsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQphOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKSB7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmhvdmVyLCBhOm5vdChbaHJlZl0pOm5vdChbdGFiaW5kZXhdKTpmb2N1cyB7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CmE6bm90KFtocmVmXSk6bm90KFt0YWJpbmRleF0pOmZvY3VzIHsKICBvdXRsaW5lOiAwOwp9CnByZSwgY29kZSwga2JkLCBzYW1wIHsKICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwogIGZvbnQtc2l6ZTogMWVtOwp9CnByZSB7CiAgbWFyZ2luLXRvcDogMDsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIG92ZXJmbG93OiBhdXRvOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogc2Nyb2xsYmFyOwp9CmZpZ3VyZSB7CiAgbWFyZ2luOiAwIDAgMXJlbTsKfQppbWcgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgYm9yZGVyLXN0eWxlOiBub25lOwp9CnN2ZyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CnRhYmxlIHsKICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwp9CmNhcHRpb24gewogIHBhZGRpbmctdG9wOiAwLjc1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjc1cmVtOwogIGNvbG9yOiAjNmM3NTdkOwogIHRleHQtYWxpZ246IGxlZnQ7CiAgY2FwdGlvbi1zaWRlOiBib3R0b207Cn0KdGggewogIHRleHQtYWxpZ246IGluaGVyaXQ7Cn0KbGFiZWwgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KYnV0dG9uIHsKICBib3JkZXItcmFkaXVzOiAwOwp9CmJ1dHRvbjpmb2N1cyB7CiAgb3V0bGluZTogMXB4IGRvdHRlZDsKICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7Cn0KaW5wdXQsIGJ1dHRvbiwgc2VsZWN0LCBvcHRncm91cCwgdGV4dGFyZWEgewogIG1hcmdpbjogMDsKICBmb250LWZhbWlseTogaW5oZXJpdDsKICBmb250LXNpemU6IGluaGVyaXQ7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KYnV0dG9uLCBpbnB1dCB7CiAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KYnV0dG9uLCBzZWxlY3QgewogIHRleHQtdHJhbnNmb3JtOiBub25lOwp9CmJ1dHRvbiwgaHRtbCBbdHlwZT0iYnV0dG9uIl0sIFt0eXBlPSJyZXNldCJdLCBbdHlwZT0ic3VibWl0Il0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOwp9CmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9ImJ1dHRvbiJdOjotbW96LWZvY3VzLWlubmVyLCBbdHlwZT0icmVzZXQiXTo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9InN1Ym1pdCJdOjotbW96LWZvY3VzLWlubmVyIHsKICBwYWRkaW5nOiAwOwogIGJvcmRlci1zdHlsZTogbm9uZTsKfQppbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIHBhZGRpbmc6IDA7Cn0KaW5wdXRbdHlwZT0iZGF0ZSJdLCBpbnB1dFt0eXBlPSJ0aW1lIl0sIGlucHV0W3R5cGU9ImRhdGV0aW1lLWxvY2FsIl0sIGlucHV0W3R5cGU9Im1vbnRoIl0gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdGJveDsKfQp0ZXh0YXJlYSB7CiAgb3ZlcmZsb3c6IGF1dG87CiAgcmVzaXplOiB2ZXJ0aWNhbDsKfQpmaWVsZHNldCB7CiAgbWluLXdpZHRoOiAwOwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwogIGJvcmRlcjogMDsKfQpsZWdlbmQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG1heC13aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBmb250LXNpemU6IDEuNXJlbTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICBjb2xvcjogaW5oZXJpdDsKICB3aGl0ZS1zcGFjZTogbm9ybWFsOwp9CnByb2dyZXNzIHsKICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cn0KW3R5cGU9Im51bWJlciJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCBbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24gewogIGhlaWdodDogYXV0bzsKfQpbdHlwZT0ic2VhcmNoIl0gewogIG91dGxpbmUtb2Zmc2V0OiAtMnB4OwogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKfQpbdHlwZT0ic2VhcmNoIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sIFt0eXBlPSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwp9Cjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24gewogIGZvbnQ6IGluaGVyaXQ7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247Cn0Kb3V0cHV0IHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0Kc3VtbWFyeSB7CiAgZGlzcGxheTogbGlzdC1pdGVtOwogIGN1cnNvcjogcG9pbnRlcjsKfQp0ZW1wbGF0ZSB7CiAgZGlzcGxheTogbm9uZTsKfQpbaGlkZGVuXSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9CmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIC5oMSwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYgewogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBmb250LWZhbWlseTogaW5oZXJpdDsKICBmb250LXdlaWdodDogNTAwOwogIGxpbmUtaGVpZ2h0OiAxLjI7CiAgY29sb3I6IGluaGVyaXQ7Cn0KaDEsIC5oMSB7CiAgZm9udC1zaXplOiAyLjVyZW07Cn0KaDIsIC5oMiB7CiAgZm9udC1zaXplOiAycmVtOwp9CmgzLCAuaDMgewogIGZvbnQtc2l6ZTogMS43NXJlbTsKfQpoNCwgLmg0IHsKICBmb250LXNpemU6IDEuNXJlbTsKfQpoNSwgLmg1IHsKICBmb250LXNpemU6IDEuMjVyZW07Cn0KaDYsIC5oNiB7CiAgZm9udC1zaXplOiAxcmVtOwp9Ci5sZWFkIHsKICBmb250LXNpemU6IDEuMjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKfQouZGlzcGxheS0xIHsKICBmb250LXNpemU6IDZyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBsaW5lLWhlaWdodDogMS4yOwp9Ci5kaXNwbGF5LTIgewogIGZvbnQtc2l6ZTogNS41cmVtOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuMjsKfQouZGlzcGxheS0zIHsKICBmb250LXNpemU6IDQuNXJlbTsKICBmb250LXdlaWdodDogMzAwOwogIGxpbmUtaGVpZ2h0OiAxLjI7Cn0KLmRpc3BsYXktNCB7CiAgZm9udC1zaXplOiAzLjVyZW07CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBsaW5lLWhlaWdodDogMS4yOwp9CmhyIHsKICBtYXJnaW4tdG9wOiAxcmVtOwogIG1hcmdpbi1ib3R0b206IDFyZW07CiAgYm9yZGVyOiAwOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0Kc21hbGwsIC5zbWFsbCB7CiAgZm9udC1zaXplOiA4MCU7CiAgZm9udC13ZWlnaHQ6IDQwMDsKfQptYXJrLCAubWFyayB7CiAgcGFkZGluZzogMC4yZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoubGlzdC11bnN0eWxlZCB7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLmxpc3QtaW5saW5lIHsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKfQoubGlzdC1pbmxpbmUtaXRlbSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Ci5saXN0LWlubGluZS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgewogIG1hcmdpbi1yaWdodDogMC41cmVtOwp9Ci5pbml0aWFsaXNtIHsKICBmb250LXNpemU6IDkwJTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9Ci5ibG9ja3F1b3RlIHsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKfQouYmxvY2txdW90ZS1mb290ZXIgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogODAlOwogIGNvbG9yOiAjNmM3NTdkOwp9Ci5ibG9ja3F1b3RlLWZvb3Rlcjo6YmVmb3JlIHsKICBjb250ZW50OiAiXDIwMTQgXDAwQTAiOwp9Ci5pbWctZmx1aWQgewogIG1heC13aWR0aDogMTAwJTsKICBoZWlnaHQ6IGF1dG87Cn0KLmltZy10aHVtYm5haWwgewogIHBhZGRpbmc6IDAuMjVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2OwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgbWF4LXdpZHRoOiAxMDAlOwogIGhlaWdodDogYXV0bzsKfQouZmlndXJlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KLmZpZ3VyZS1pbWcgewogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBsaW5lLWhlaWdodDogMTsKfQouZmlndXJlLWNhcHRpb24gewogIGZvbnQtc2l6ZTogOTAlOwogIGNvbG9yOiAjNmM3NTdkOwp9CmNvZGUgewogIGZvbnQtc2l6ZTogODcuNSU7CiAgY29sb3I6ICNlODNlOGM7CiAgd29yZC1icmVhazogYnJlYWstd29yZDsKfQphID4gY29kZSB7CiAgY29sb3I6IGluaGVyaXQ7Cn0Ka2JkIHsKICBwYWRkaW5nOiAwLjJyZW0gMC40cmVtOwogIGZvbnQtc2l6ZTogODcuNSU7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIxMjUyOTsKICBib3JkZXItcmFkaXVzOiAwLjJyZW07Cn0Ka2JkIGtiZCB7CiAgcGFkZGluZzogMDsKICBmb250LXNpemU6IDEwMCU7CiAgZm9udC13ZWlnaHQ6IDcwMDsKfQpwcmUgewogIGRpc3BsYXk6IGJsb2NrOwogIGZvbnQtc2l6ZTogODcuNSU7CiAgY29sb3I6ICMyMTI1Mjk7Cn0KcHJlIGNvZGUgewogIGZvbnQtc2l6ZTogaW5oZXJpdDsKICBjb2xvcjogaW5oZXJpdDsKICB3b3JkLWJyZWFrOiBub3JtYWw7Cn0KLnByZS1zY3JvbGxhYmxlIHsKICBtYXgtaGVpZ2h0OiAzNDBweDsKICBvdmVyZmxvdy15OiBzY3JvbGw7Cn0KLmNvbnRhaW5lciB7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy1yaWdodDogMTVweDsKICBwYWRkaW5nLWxlZnQ6IDE1cHg7CiAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jb250YWluZXIgewogICAgbWF4LXdpZHRoOiA1NDBweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLmNvbnRhaW5lciB7CiAgICBtYXgtd2lkdGg6IDcyMHB4OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogOTYwcHg7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuY29udGFpbmVyIHsKICAgIG1heC13aWR0aDogMTE0MHB4OwogIH0KfQouY29udGFpbmVyLWZsdWlkIHsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgbWFyZ2luLWxlZnQ6IGF1dG87Cn0KLnJvdyB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgbWFyZ2luLXJpZ2h0OiAtMTVweDsKICBtYXJnaW4tbGVmdDogLTE1cHg7Cn0KLm5vLWd1dHRlcnMgewogIG1hcmdpbi1yaWdodDogMDsKICBtYXJnaW4tbGVmdDogMDsKfQoubm8tZ3V0dGVycyA+IC5jb2wsIC5uby1ndXR0ZXJzID4gW2NsYXNzKj0iY29sLSJdIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQouY29sLTEsIC5jb2wtMiwgLmNvbC0zLCAuY29sLTQsIC5jb2wtNSwgLmNvbC02LCAuY29sLTcsIC5jb2wtOCwgLmNvbC05LCAuY29sLTEwLCAuY29sLTExLCAuY29sLTEyLCAuY29sLCAuY29sLWF1dG8sIC5jb2wtc20tMSwgLmNvbC1zbS0yLCAuY29sLXNtLTMsIC5jb2wtc20tNCwgLmNvbC1zbS01LCAuY29sLXNtLTYsIC5jb2wtc20tNywgLmNvbC1zbS04LCAuY29sLXNtLTksIC5jb2wtc20tMTAsIC5jb2wtc20tMTEsIC5jb2wtc20tMTIsIC5jb2wtc20sIC5jb2wtc20tYXV0bywgLmNvbC1tZC0xLCAuY29sLW1kLTIsIC5jb2wtbWQtMywgLmNvbC1tZC00LCAuY29sLW1kLTUsIC5jb2wtbWQtNiwgLmNvbC1tZC03LCAuY29sLW1kLTgsIC5jb2wtbWQtOSwgLmNvbC1tZC0xMCwgLmNvbC1tZC0xMSwgLmNvbC1tZC0xMiwgLmNvbC1tZCwgLmNvbC1tZC1hdXRvLCAuY29sLWxnLTEsIC5jb2wtbGctMiwgLmNvbC1sZy0zLCAuY29sLWxnLTQsIC5jb2wtbGctNSwgLmNvbC1sZy02LCAuY29sLWxnLTcsIC5jb2wtbGctOCwgLmNvbC1sZy05LCAuY29sLWxnLTEwLCAuY29sLWxnLTExLCAuY29sLWxnLTEyLCAuY29sLWxnLCAuY29sLWxnLWF1dG8sIC5jb2wteGwtMSwgLmNvbC14bC0yLCAuY29sLXhsLTMsIC5jb2wteGwtNCwgLmNvbC14bC01LCAuY29sLXhsLTYsIC5jb2wteGwtNywgLmNvbC14bC04LCAuY29sLXhsLTksIC5jb2wteGwtMTAsIC5jb2wteGwtMTEsIC5jb2wteGwtMTIsIC5jb2wteGwsIC5jb2wteGwtYXV0byB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIG1pbi1oZWlnaHQ6IDFweDsKICBwYWRkaW5nLXJpZ2h0OiAxNXB4OwogIHBhZGRpbmctbGVmdDogMTVweDsKfQouY29sIHsKICBmbGV4LWJhc2lzOiAwOwogIGZsZXgtZ3JvdzogMTsKICBtYXgtd2lkdGg6IDEwMCU7Cn0KLmNvbC1hdXRvIHsKICBmbGV4OiAwIDAgYXV0bzsKICB3aWR0aDogYXV0bzsKICBtYXgtd2lkdGg6IG5vbmU7Cn0KLmNvbC0xIHsKICBmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKICBtYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7Cn0KLmNvbC0yIHsKICBmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CiAgbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKfQouY29sLTMgewogIGZsZXg6IDAgMCAyNSU7CiAgbWF4LXdpZHRoOiAyNSU7Cn0KLmNvbC00IHsKICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CiAgbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKfQouY29sLTUgewogIGZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKICBtYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwp9Ci5jb2wtNiB7CiAgZmxleDogMCAwIDUwJTsKICBtYXgtd2lkdGg6IDUwJTsKfQouY29sLTcgewogIGZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKICBtYXgtd2lkdGg6IDU4LjMzMzMzMzMzMzMlOwp9Ci5jb2wtOCB7CiAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwogIG1heC13aWR0aDogNjYuNjY2NjY2NjY2NyU7Cn0KLmNvbC05IHsKICBmbGV4OiAwIDAgNzUlOwogIG1heC13aWR0aDogNzUlOwp9Ci5jb2wtMTAgewogIGZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKICBtYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwp9Ci5jb2wtMTEgewogIGZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKICBtYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwp9Ci5jb2wtMTIgewogIGZsZXg6IDAgMCAxMDAlOwogIG1heC13aWR0aDogMTAwJTsKfQoub3JkZXItZmlyc3QgewogIG9yZGVyOiAtMTsKfQoub3JkZXItbGFzdCB7CiAgb3JkZXI6IDEzOwp9Ci5vcmRlci0wIHsKICBvcmRlcjogMDsKfQoub3JkZXItMSB7CiAgb3JkZXI6IDE7Cn0KLm9yZGVyLTIgewogIG9yZGVyOiAyOwp9Ci5vcmRlci0zIHsKICBvcmRlcjogMzsKfQoub3JkZXItNCB7CiAgb3JkZXI6IDQ7Cn0KLm9yZGVyLTUgewogIG9yZGVyOiA1Owp9Ci5vcmRlci02IHsKICBvcmRlcjogNjsKfQoub3JkZXItNyB7CiAgb3JkZXI6IDc7Cn0KLm9yZGVyLTggewogIG9yZGVyOiA4Owp9Ci5vcmRlci05IHsKICBvcmRlcjogOTsKfQoub3JkZXItMTAgewogIG9yZGVyOiAxMDsKfQoub3JkZXItMTEgewogIG9yZGVyOiAxMTsKfQoub3JkZXItMTIgewogIG9yZGVyOiAxMjsKfQoub2Zmc2V0LTEgewogIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwp9Ci5vZmZzZXQtMiB7CiAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwp9Ci5vZmZzZXQtMyB7CiAgbWFyZ2luLWxlZnQ6IDI1JTsKfQoub2Zmc2V0LTQgewogIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKfQoub2Zmc2V0LTUgewogIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKfQoub2Zmc2V0LTYgewogIG1hcmdpbi1sZWZ0OiA1MCU7Cn0KLm9mZnNldC03IHsKICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7Cn0KLm9mZnNldC04IHsKICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7Cn0KLm9mZnNldC05IHsKICBtYXJnaW4tbGVmdDogNzUlOwp9Ci5vZmZzZXQtMTAgewogIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKfQoub2Zmc2V0LTExIHsKICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmNvbC1zbSB7CiAgICBmbGV4LWJhc2lzOiAwOwogICAgZmxleC1ncm93OiAxOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAuY29sLXNtLWF1dG8gewogICAgZmxleDogMCAwIGF1dG87CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogbm9uZTsKICB9CiAgLmNvbC1zbS0xIHsKICAgIGZsZXg6IDAgMCA4LjMzMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4LjMzMzMzMzMzMzMlOwogIH0KICAuY29sLXNtLTIgewogICAgZmxleDogMCAwIDE2LjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiAxNi42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC1zbS0zIHsKICAgIGZsZXg6IDAgMCAyNSU7CiAgICBtYXgtd2lkdGg6IDI1JTsKICB9CiAgLmNvbC1zbS00IHsKICAgIGZsZXg6IDAgMCAzMy4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogMzMuMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wtc20tNSB7CiAgICBmbGV4OiAwIDAgNDEuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDQxLjY2NjY2NjY2NjclOwogIH0KICAuY29sLXNtLTYgewogICAgZmxleDogMCAwIDUwJTsKICAgIG1heC13aWR0aDogNTAlOwogIH0KICAuY29sLXNtLTcgewogICAgZmxleDogMCAwIDU4LjMzMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA1OC4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS04IHsKICAgIGZsZXg6IDAgMCA2Ni42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogNjYuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wtc20tOSB7CiAgICBmbGV4OiAwIDAgNzUlOwogICAgbWF4LXdpZHRoOiA3NSU7CiAgfQogIC5jb2wtc20tMTAgewogICAgZmxleDogMCAwIDgzLjMzMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiA4My4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC1zbS0xMSB7CiAgICBmbGV4OiAwIDAgOTEuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDkxLjY2NjY2NjY2NjclOwogIH0KICAuY29sLXNtLTEyIHsKICAgIGZsZXg6IDAgMCAxMDAlOwogICAgbWF4LXdpZHRoOiAxMDAlOwogIH0KICAub3JkZXItc20tZmlyc3QgewogICAgb3JkZXI6IC0xOwogIH0KICAub3JkZXItc20tbGFzdCB7CiAgICBvcmRlcjogMTM7CiAgfQogIC5vcmRlci1zbS0wIHsKICAgIG9yZGVyOiAwOwogIH0KICAub3JkZXItc20tMSB7CiAgICBvcmRlcjogMTsKICB9CiAgLm9yZGVyLXNtLTIgewogICAgb3JkZXI6IDI7CiAgfQogIC5vcmRlci1zbS0zIHsKICAgIG9yZGVyOiAzOwogIH0KICAub3JkZXItc20tNCB7CiAgICBvcmRlcjogNDsKICB9CiAgLm9yZGVyLXNtLTUgewogICAgb3JkZXI6IDU7CiAgfQogIC5vcmRlci1zbS02IHsKICAgIG9yZGVyOiA2OwogIH0KICAub3JkZXItc20tNyB7CiAgICBvcmRlcjogNzsKICB9CiAgLm9yZGVyLXNtLTggewogICAgb3JkZXI6IDg7CiAgfQogIC5vcmRlci1zbS05IHsKICAgIG9yZGVyOiA5OwogIH0KICAub3JkZXItc20tMTAgewogICAgb3JkZXI6IDEwOwogIH0KICAub3JkZXItc20tMTEgewogICAgb3JkZXI6IDExOwogIH0KICAub3JkZXItc20tMTIgewogICAgb3JkZXI6IDEyOwogIH0KICAub2Zmc2V0LXNtLTAgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgfQogIC5vZmZzZXQtc20tMSB7CiAgICBtYXJnaW4tbGVmdDogOC4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1zbS0yIHsKICAgIG1hcmdpbi1sZWZ0OiAxNi42NjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAyNSU7CiAgfQogIC5vZmZzZXQtc20tNCB7CiAgICBtYXJnaW4tbGVmdDogMzMuMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtc20tNSB7CiAgICBtYXJnaW4tbGVmdDogNDEuNjY2NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtc20tNiB7CiAgICBtYXJnaW4tbGVmdDogNTAlOwogIH0KICAub2Zmc2V0LXNtLTcgewogICAgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXNtLTggewogICAgbWFyZ2luLWxlZnQ6IDY2LjY2NjY2NjY2NjclOwogIH0KICAub2Zmc2V0LXNtLTkgewogICAgbWFyZ2luLWxlZnQ6IDc1JTsKICB9CiAgLm9mZnNldC1zbS0xMCB7CiAgICBtYXJnaW4tbGVmdDogODMuMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtc20tMTEgewogICAgbWFyZ2luLWxlZnQ6IDkxLjY2NjY2NjY2NjclOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuY29sLW1kIHsKICAgIGZsZXgtYmFzaXM6IDA7CiAgICBmbGV4LWdyb3c6IDE7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5jb2wtbWQtYXV0byB7CiAgICBmbGV4OiAwIDAgYXV0bzsKICAgIHdpZHRoOiBhdXRvOwogICAgbWF4LXdpZHRoOiBub25lOwogIH0KICAuY29sLW1kLTEgewogICAgZmxleDogMCAwIDguMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDguMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wtbWQtMiB7CiAgICBmbGV4OiAwIDAgMTYuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDE2LjY2NjY2NjY2NjclOwogIH0KICAuY29sLW1kLTMgewogICAgZmxleDogMCAwIDI1JTsKICAgIG1heC13aWR0aDogMjUlOwogIH0KICAuY29sLW1kLTQgewogICAgZmxleDogMCAwIDMzLjMzMzMzMzMzMzMlOwogICAgbWF4LXdpZHRoOiAzMy4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC1tZC01IHsKICAgIGZsZXg6IDAgMCA0MS42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogNDEuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtNiB7CiAgICBmbGV4OiAwIDAgNTAlOwogICAgbWF4LXdpZHRoOiA1MCU7CiAgfQogIC5jb2wtbWQtNyB7CiAgICBmbGV4OiAwIDAgNTguMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDU4LjMzMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTggewogICAgZmxleDogMCAwIDY2LjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA2Ni42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC1tZC05IHsKICAgIGZsZXg6IDAgMCA3NSU7CiAgICBtYXgtd2lkdGg6IDc1JTsKICB9CiAgLmNvbC1tZC0xMCB7CiAgICBmbGV4OiAwIDAgODMuMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDgzLjMzMzMzMzMzMzMlOwogIH0KICAuY29sLW1kLTExIHsKICAgIGZsZXg6IDAgMCA5MS42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogOTEuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wtbWQtMTIgewogICAgZmxleDogMCAwIDEwMCU7CiAgICBtYXgtd2lkdGg6IDEwMCU7CiAgfQogIC5vcmRlci1tZC1maXJzdCB7CiAgICBvcmRlcjogLTE7CiAgfQogIC5vcmRlci1tZC1sYXN0IHsKICAgIG9yZGVyOiAxMzsKICB9CiAgLm9yZGVyLW1kLTAgewogICAgb3JkZXI6IDA7CiAgfQogIC5vcmRlci1tZC0xIHsKICAgIG9yZGVyOiAxOwogIH0KICAub3JkZXItbWQtMiB7CiAgICBvcmRlcjogMjsKICB9CiAgLm9yZGVyLW1kLTMgewogICAgb3JkZXI6IDM7CiAgfQogIC5vcmRlci1tZC00IHsKICAgIG9yZGVyOiA0OwogIH0KICAub3JkZXItbWQtNSB7CiAgICBvcmRlcjogNTsKICB9CiAgLm9yZGVyLW1kLTYgewogICAgb3JkZXI6IDY7CiAgfQogIC5vcmRlci1tZC03IHsKICAgIG9yZGVyOiA3OwogIH0KICAub3JkZXItbWQtOCB7CiAgICBvcmRlcjogODsKICB9CiAgLm9yZGVyLW1kLTkgewogICAgb3JkZXI6IDk7CiAgfQogIC5vcmRlci1tZC0xMCB7CiAgICBvcmRlcjogMTA7CiAgfQogIC5vcmRlci1tZC0xMSB7CiAgICBvcmRlcjogMTE7CiAgfQogIC5vcmRlci1tZC0xMiB7CiAgICBvcmRlcjogMTI7CiAgfQogIC5vZmZzZXQtbWQtMCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLm9mZnNldC1tZC0xIHsKICAgIG1hcmdpbi1sZWZ0OiA4LjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LW1kLTIgewogICAgbWFyZ2luLWxlZnQ6IDE2LjY2NjY2NjY2NjclOwogIH0KICAub2Zmc2V0LW1kLTMgewogICAgbWFyZ2luLWxlZnQ6IDI1JTsKICB9CiAgLm9mZnNldC1tZC00IHsKICAgIG1hcmdpbi1sZWZ0OiAzMy4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1tZC01IHsKICAgIG1hcmdpbi1sZWZ0OiA0MS42NjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1tZC02IHsKICAgIG1hcmdpbi1sZWZ0OiA1MCU7CiAgfQogIC5vZmZzZXQtbWQtNyB7CiAgICBtYXJnaW4tbGVmdDogNTguMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbWQtOCB7CiAgICBtYXJnaW4tbGVmdDogNjYuNjY2NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbWQtOSB7CiAgICBtYXJnaW4tbGVmdDogNzUlOwogIH0KICAub2Zmc2V0LW1kLTEwIHsKICAgIG1hcmdpbi1sZWZ0OiA4My4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1tZC0xMSB7CiAgICBtYXJnaW4tbGVmdDogOTEuNjY2NjY2NjY2NyU7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5jb2wtbGcgewogICAgZmxleC1iYXNpczogMDsKICAgIGZsZXgtZ3JvdzogMTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLmNvbC1sZy1hdXRvIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQogIC5jb2wtbGctMSB7CiAgICBmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC1sZy0yIHsKICAgIGZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogMTYuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wtbGctMyB7CiAgICBmbGV4OiAwIDAgMjUlOwogICAgbWF4LXdpZHRoOiAyNSU7CiAgfQogIC5jb2wtbGctNCB7CiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMlOwogIH0KICAuY29sLWxnLTUgewogICAgZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy02IHsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC1sZy03IHsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctOCB7CiAgICBmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwogIH0KICAuY29sLWxnLTkgewogICAgZmxleDogMCAwIDc1JTsKICAgIG1heC13aWR0aDogNzUlOwogIH0KICAuY29sLWxnLTEwIHsKICAgIGZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wtbGctMTEgewogICAgZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA5MS42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC1sZy0xMiB7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLWxnLWZpcnN0IHsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLWxnLWxhc3QgewogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXItbGctMCB7CiAgICBvcmRlcjogMDsKICB9CiAgLm9yZGVyLWxnLTEgewogICAgb3JkZXI6IDE7CiAgfQogIC5vcmRlci1sZy0yIHsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXItbGctMyB7CiAgICBvcmRlcjogMzsKICB9CiAgLm9yZGVyLWxnLTQgewogICAgb3JkZXI6IDQ7CiAgfQogIC5vcmRlci1sZy01IHsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXItbGctNiB7CiAgICBvcmRlcjogNjsKICB9CiAgLm9yZGVyLWxnLTcgewogICAgb3JkZXI6IDc7CiAgfQogIC5vcmRlci1sZy04IHsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXItbGctOSB7CiAgICBvcmRlcjogOTsKICB9CiAgLm9yZGVyLWxnLTEwIHsKICAgIG9yZGVyOiAxMDsKICB9CiAgLm9yZGVyLWxnLTExIHsKICAgIG9yZGVyOiAxMTsKICB9CiAgLm9yZGVyLWxnLTEyIHsKICAgIG9yZGVyOiAxMjsKICB9CiAgLm9mZnNldC1sZy0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAub2Zmc2V0LWxnLTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQtbGctMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQtbGctMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LWxnLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LWxnLTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclOwogIH0KICAub2Zmc2V0LWxnLTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLm9mZnNldC1sZy03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC1sZy04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC1sZy05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5vZmZzZXQtbGctMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LWxnLTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5jb2wteGwgewogICAgZmxleC1iYXNpczogMDsKICAgIGZsZXgtZ3JvdzogMTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLmNvbC14bC1hdXRvIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IGF1dG87CiAgICBtYXgtd2lkdGg6IG5vbmU7CiAgfQogIC5jb2wteGwtMSB7CiAgICBmbGV4OiAwIDAgOC4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogOC4zMzMzMzMzMzMzJTsKICB9CiAgLmNvbC14bC0yIHsKICAgIGZsZXg6IDAgMCAxNi42NjY2NjY2NjY3JTsKICAgIG1heC13aWR0aDogMTYuNjY2NjY2NjY2NyU7CiAgfQogIC5jb2wteGwtMyB7CiAgICBmbGV4OiAwIDAgMjUlOwogICAgbWF4LXdpZHRoOiAyNSU7CiAgfQogIC5jb2wteGwtNCB7CiAgICBmbGV4OiAwIDAgMzMuMzMzMzMzMzMzMyU7CiAgICBtYXgtd2lkdGg6IDMzLjMzMzMzMzMzMzMlOwogIH0KICAuY29sLXhsLTUgewogICAgZmxleDogMCAwIDQxLjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA0MS42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC14bC02IHsKICAgIGZsZXg6IDAgMCA1MCU7CiAgICBtYXgtd2lkdGg6IDUwJTsKICB9CiAgLmNvbC14bC03IHsKICAgIGZsZXg6IDAgMCA1OC4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogNTguMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wteGwtOCB7CiAgICBmbGV4OiAwIDAgNjYuNjY2NjY2NjY2NyU7CiAgICBtYXgtd2lkdGg6IDY2LjY2NjY2NjY2NjclOwogIH0KICAuY29sLXhsLTkgewogICAgZmxleDogMCAwIDc1JTsKICAgIG1heC13aWR0aDogNzUlOwogIH0KICAuY29sLXhsLTEwIHsKICAgIGZsZXg6IDAgMCA4My4zMzMzMzMzMzMzJTsKICAgIG1heC13aWR0aDogODMuMzMzMzMzMzMzMyU7CiAgfQogIC5jb2wteGwtMTEgewogICAgZmxleDogMCAwIDkxLjY2NjY2NjY2NjclOwogICAgbWF4LXdpZHRoOiA5MS42NjY2NjY2NjY3JTsKICB9CiAgLmNvbC14bC0xMiB7CiAgICBmbGV4OiAwIDAgMTAwJTsKICAgIG1heC13aWR0aDogMTAwJTsKICB9CiAgLm9yZGVyLXhsLWZpcnN0IHsKICAgIG9yZGVyOiAtMTsKICB9CiAgLm9yZGVyLXhsLWxhc3QgewogICAgb3JkZXI6IDEzOwogIH0KICAub3JkZXIteGwtMCB7CiAgICBvcmRlcjogMDsKICB9CiAgLm9yZGVyLXhsLTEgewogICAgb3JkZXI6IDE7CiAgfQogIC5vcmRlci14bC0yIHsKICAgIG9yZGVyOiAyOwogIH0KICAub3JkZXIteGwtMyB7CiAgICBvcmRlcjogMzsKICB9CiAgLm9yZGVyLXhsLTQgewogICAgb3JkZXI6IDQ7CiAgfQogIC5vcmRlci14bC01IHsKICAgIG9yZGVyOiA1OwogIH0KICAub3JkZXIteGwtNiB7CiAgICBvcmRlcjogNjsKICB9CiAgLm9yZGVyLXhsLTcgewogICAgb3JkZXI6IDc7CiAgfQogIC5vcmRlci14bC04IHsKICAgIG9yZGVyOiA4OwogIH0KICAub3JkZXIteGwtOSB7CiAgICBvcmRlcjogOTsKICB9CiAgLm9yZGVyLXhsLTEwIHsKICAgIG9yZGVyOiAxMDsKICB9CiAgLm9yZGVyLXhsLTExIHsKICAgIG9yZGVyOiAxMTsKICB9CiAgLm9yZGVyLXhsLTEyIHsKICAgIG9yZGVyOiAxMjsKICB9CiAgLm9mZnNldC14bC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogIH0KICAub2Zmc2V0LXhsLTEgewogICAgbWFyZ2luLWxlZnQ6IDguMzMzMzMzMzMzMyU7CiAgfQogIC5vZmZzZXQteGwtMiB7CiAgICBtYXJnaW4tbGVmdDogMTYuNjY2NjY2NjY2NyU7CiAgfQogIC5vZmZzZXQteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMjUlOwogIH0KICAub2Zmc2V0LXhsLTQgewogICAgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXhsLTUgewogICAgbWFyZ2luLWxlZnQ6IDQxLjY2NjY2NjY2NjclOwogIH0KICAub2Zmc2V0LXhsLTYgewogICAgbWFyZ2luLWxlZnQ6IDUwJTsKICB9CiAgLm9mZnNldC14bC03IHsKICAgIG1hcmdpbi1sZWZ0OiA1OC4zMzMzMzMzMzMzJTsKICB9CiAgLm9mZnNldC14bC04IHsKICAgIG1hcmdpbi1sZWZ0OiA2Ni42NjY2NjY2NjY3JTsKICB9CiAgLm9mZnNldC14bC05IHsKICAgIG1hcmdpbi1sZWZ0OiA3NSU7CiAgfQogIC5vZmZzZXQteGwtMTAgewogICAgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzMzMzMzMlOwogIH0KICAub2Zmc2V0LXhsLTExIHsKICAgIG1hcmdpbi1sZWZ0OiA5MS42NjY2NjY2NjY3JTsKICB9Cn0KLnRhYmxlIHsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci50YWJsZSB0aCwgLnRhYmxlIHRkIHsKICBwYWRkaW5nOiAwLjc1cmVtOwogIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkZWUyZTY7Cn0KLnRhYmxlIHRoZWFkIHRoIHsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjZGVlMmU2Owp9Ci50YWJsZSB0Ym9keSArIHRib2R5IHsKICBib3JkZXItdG9wOiAycHggc29saWQgI2RlZTJlNjsKfQoudGFibGUgLnRhYmxlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci50YWJsZS1zbSB0aCwgLnRhYmxlLXNtIHRkIHsKICBwYWRkaW5nOiAwLjNyZW07Cn0KLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2Owp9Ci50YWJsZS1ib3JkZXJlZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGVlMmU2Owp9Ci50YWJsZS1ib3JkZXJlZCB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmVkIHRoZWFkIHRkIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KLnRhYmxlLWJvcmRlcmxlc3MgdGgsIC50YWJsZS1ib3JkZXJsZXNzIHRkLCAudGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmxlc3MgdGJvZHkgKyB0Ym9keSB7CiAgYm9yZGVyOiAwOwp9Ci50YWJsZS1zdHJpcGVkIHRib2R5IHRyOm50aC1vZi10eXBlKG9kZCkgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7Cn0KLnRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoudGFibGUtcHJpbWFyeSwgLnRhYmxlLXByaW1hcnkgPiB0aCwgLnRhYmxlLXByaW1hcnkgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2I4ZGFmZjsKfQoudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICM5ZWNkZmY7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1wcmltYXJ5OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWVjZGZmOwp9Ci50YWJsZS1zZWNvbmRhcnksIC50YWJsZS1zZWNvbmRhcnkgPiB0aCwgLnRhYmxlLXNlY29uZGFyeSA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDZkOGRiOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzhjY2NmOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNjOGNjY2Y7Cn0KLnRhYmxlLXN1Y2Nlc3MsIC50YWJsZS1zdWNjZXNzID4gdGgsIC50YWJsZS1zdWNjZXNzID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNjM2U2Y2I7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1zdWNjZXNzOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjFkZmJiOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoudGFibGUtaW5mbywgLnRhYmxlLWluZm8gPiB0aCwgLnRhYmxlLWluZm8gPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWluZm86aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWJkZGU1Owp9Ci50YWJsZS13YXJuaW5nLCAudGFibGUtd2FybmluZyA+IHRoLCAudGFibGUtd2FybmluZyA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlZWJhOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtd2FybmluZzpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZTdhMDsKfQoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmZmU3YTA7Cn0KLnRhYmxlLWRhbmdlciwgLnRhYmxlLWRhbmdlciA+IHRoLCAudGFibGUtZGFuZ2VyID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmMWIxYjc7Cn0KLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoudGFibGUtbGlnaHQsIC50YWJsZS1saWdodCA+IHRoLCAudGFibGUtbGlnaHQgPiB0ZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodDpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOwp9Ci50YWJsZS1kYXJrLCAudGFibGUtZGFyayA+IHRoLCAudGFibGUtZGFyayA+IHRkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzZjOGNhOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtZGFyazpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmJiZDsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNiOWJiYmQ7Cn0KLnRhYmxlLWFjdGl2ZSwgLnRhYmxlLWFjdGl2ZSA+IHRoLCAudGFibGUtYWN0aXZlID4gdGQgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNzUpOwp9Ci50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTsKfQoudGFibGUgLnRoZWFkLWRhcmsgdGggewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7CiAgYm9yZGVyLWNvbG9yOiAjMzIzODNlOwp9Ci50YWJsZSAudGhlYWQtbGlnaHQgdGggewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2Owp9Ci50YWJsZS1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyNTI5Owp9Ci50YWJsZS1kYXJrIHRoLCAudGFibGUtZGFyayB0ZCwgLnRhYmxlLWRhcmsgdGhlYWQgdGggewogIGJvcmRlci1jb2xvcjogIzMyMzgzZTsKfQoudGFibGUtZGFyay50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAwOwp9Ci50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKfQoudGFibGUtZGFyay50YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3NSk7Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7CiAgLnRhYmxlLXJlc3BvbnNpdmUtc20gewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTAwJTsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAtbXMtb3ZlcmZsb3ctc3R5bGU6IC1tcy1hdXRvaGlkaW5nLXNjcm9sbGJhcjsKICB9CiAgLnRhYmxlLXJlc3BvbnNpdmUtc20gPiAudGFibGUtYm9yZGVyZWQgewogICAgYm9yZGVyOiAwOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsKICAudGFibGUtcmVzcG9uc2l2ZS1tZCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxMDAlOwogICAgb3ZlcmZsb3cteDogYXV0bzsKICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwogIH0KICAudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7CiAgICBib3JkZXI6IDA7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC50YWJsZS1yZXNwb25zaXZlLWxnIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlLWxnID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgewogIC50YWJsZS1yZXNwb25zaXZlLXhsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgLW1zLW92ZXJmbG93LXN0eWxlOiAtbXMtYXV0b2hpZGluZy1zY3JvbGxiYXI7CiAgfQogIC50YWJsZS1yZXNwb25zaXZlLXhsID4gLnRhYmxlLWJvcmRlcmVkIHsKICAgIGJvcmRlcjogMDsKICB9Cn0KLnRhYmxlLXJlc3BvbnNpdmUgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIG92ZXJmbG93LXg6IGF1dG87CiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogIC1tcy1vdmVyZmxvdy1zdHlsZTogLW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyOwp9Ci50YWJsZS1yZXNwb25zaXZlID4gLnRhYmxlLWJvcmRlcmVkIHsKICBib3JkZXI6IDA7Cn0KLmZvcm0tY29udHJvbCB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBjYWxjKDIuMjVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07CiAgZm9udC1zaXplOiAxcmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5mb3JtLWNvbnRyb2wgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmZvcm0tY29udHJvbDo6LW1zLWV4cGFuZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9Ci5mb3JtLWNvbnRyb2w6Zm9jdXMgewogIGNvbG9yOiAjNDk1MDU3OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYm9yZGVyLWNvbG9yOiAjODBiZGZmOwogIG91dGxpbmU6IDA7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9Ci5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHsKICBjb2xvcjogIzZjNzU3ZDsKICBvcGFjaXR5OiAxOwp9Ci5mb3JtLWNvbnRyb2w6ZGlzYWJsZWQsIC5mb3JtLWNvbnRyb2xbcmVhZG9ubHldIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIG9wYWNpdHk6IDE7Cn0Kc2VsZWN0LmZvcm0tY29udHJvbDpmb2N1czo6LW1zLXZhbHVlIHsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5mb3JtLWNvbnRyb2wtZmlsZSwgLmZvcm0tY29udHJvbC1yYW5nZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6IDEwMCU7Cn0KLmNvbC1mb3JtLWxhYmVsIHsKICBwYWRkaW5nLXRvcDogY2FsYygwLjM3NXJlbSArIDFweCk7CiAgcGFkZGluZy1ib3R0b206IGNhbGMoMC4zNzVyZW0gKyAxcHgpOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiBpbmhlcml0OwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLmNvbC1mb3JtLWxhYmVsLWxnIHsKICBwYWRkaW5nLXRvcDogY2FsYygwLjVyZW0gKyAxcHgpOwogIHBhZGRpbmctYm90dG9tOiBjYWxjKDAuNXJlbSArIDFweCk7CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLmNvbC1mb3JtLWxhYmVsLXNtIHsKICBwYWRkaW5nLXRvcDogY2FsYygwLjI1cmVtICsgMXB4KTsKICBwYWRkaW5nLWJvdHRvbTogY2FsYygwLjI1cmVtICsgMXB4KTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLmZvcm0tY29udHJvbC1wbGFpbnRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmctdG9wOiAwLjM3NXJlbTsKICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXdpZHRoOiAxcHggMDsKfQouZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc20sIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZyB7CiAgcGFkZGluZy1yaWdodDogMDsKICBwYWRkaW5nLWxlZnQ6IDA7Cn0KLmZvcm0tY29udHJvbC1zbSB7CiAgaGVpZ2h0OiBjYWxjKDEuODEyNXJlbSArIDJweCk7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQouZm9ybS1jb250cm9sLWxnIHsKICBoZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQpzZWxlY3QuZm9ybS1jb250cm9sW3NpemVdLCBzZWxlY3QuZm9ybS1jb250cm9sW211bHRpcGxlXSB7CiAgaGVpZ2h0OiBhdXRvOwp9CnRleHRhcmVhLmZvcm0tY29udHJvbCB7CiAgaGVpZ2h0OiBhdXRvOwp9Ci5mb3JtLWdyb3VwIHsKICBtYXJnaW4tYm90dG9tOiAxcmVtOwp9Ci5mb3JtLXRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIG1hcmdpbi10b3A6IDAuMjVyZW07Cn0KLmZvcm0tcm93IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBtYXJnaW4tcmlnaHQ6IC01cHg7CiAgbWFyZ2luLWxlZnQ6IC01cHg7Cn0KLmZvcm0tcm93ID4gLmNvbCwgLmZvcm0tcm93ID4gW2NsYXNzKj0iY29sLSJdIHsKICBwYWRkaW5nLXJpZ2h0OiA1cHg7CiAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KLmZvcm0tY2hlY2sgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07Cn0KLmZvcm0tY2hlY2staW5wdXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBtYXJnaW4tdG9wOiAwLjNyZW07CiAgbWFyZ2luLWxlZnQ6IC0xLjI1cmVtOwp9Ci5mb3JtLWNoZWNrLWlucHV0OmRpc2FibGVkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjNmM3NTdkOwp9Ci5mb3JtLWNoZWNrLWxhYmVsIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5mb3JtLWNoZWNrLWlubGluZSB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtOwp9Ci5mb3JtLWNoZWNrLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1yaWdodDogMC4zMTI1cmVtOwogIG1hcmdpbi1sZWZ0OiAwOwp9Ci52YWxpZC1mZWVkYmFjayB7CiAgZGlzcGxheTogbm9uZTsKICB3aWR0aDogMTAwJTsKICBtYXJnaW4tdG9wOiAwLjI1cmVtOwogIGZvbnQtc2l6ZTogODAlOwogIGNvbG9yOiAjMjhhNzQ1Owp9Ci52YWxpZC10b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAxMDAlOwogIHotaW5kZXg6IDU7CiAgZGlzcGxheTogbm9uZTsKICBtYXgtd2lkdGg6IDEwMCU7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgbWFyZ2luLXRvcDogMC4xcmVtOwogIGZvbnQtc2l6ZTogMC44NzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQwLCAxNjcsIDY5LCAwLjkpOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6dmFsaWQ6Zm9jdXMsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkOmZvY3VzIHsKICBib3JkZXItY29sb3I6ICMyOGE3NDU7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuZm9ybS1jb250cm9sLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tc2VsZWN0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2wtZmlsZTp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY29udHJvbC1maWxlLmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwsIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OnZhbGlkIH4gLnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jaGVjay1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogIGNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzcxZGQ4YTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzRjZTU3Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDp2YWxpZDpmb2N1cyB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjI1KTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDp2YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewogIGJvcmRlci1jb2xvcjogaW5oZXJpdDsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkIH4gLnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuMjUpOwp9Ci5pbnZhbGlkLWZlZWRiYWNrIHsKICBkaXNwbGF5OiBub25lOwogIHdpZHRoOiAxMDAlOwogIG1hcmdpbi10b3A6IDAuMjVyZW07CiAgZm9udC1zaXplOiA4MCU7CiAgY29sb3I6ICNkYzM1NDU7Cn0KLmludmFsaWQtdG9vbHRpcCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICB6LWluZGV4OiA1OwogIGRpc3BsYXk6IG5vbmU7CiAgbWF4LXdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtOwogIG1hcmdpbi10b3A6IDAuMXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjAsIDUzLCA2OSwgMC45KTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCwgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLCAuY3VzdG9tLXNlbGVjdC5pcy1pbnZhbGlkIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkOmZvY3VzLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLXNlbGVjdDppbnZhbGlkOmZvY3VzLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQ6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC4yNSk7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1zZWxlY3Q6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jb250cm9sLWZpbGUuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sLWZpbGU6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5mb3JtLWNvbnRyb2wtZmlsZS5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgewogIGNvbG9yOiAjZGMzNTQ1Owp9Ci53YXMtdmFsaWRhdGVkIC5mb3JtLWNoZWNrLWlucHV0OmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICNkYzM1NDU7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2VmYTJhOTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7CiAgZGlzcGxheTogYmxvY2s7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlNDYwNmQ7Cn0KLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0Owp9Ci53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC5jdXN0b20tZmlsZS1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuaW52YWxpZC10b29sdGlwIHsKICBkaXNwbGF5OiBibG9jazsKfQoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyMCwgNTMsIDY5LCAwLjI1KTsKfQouZm9ybS1pbmxpbmUgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1mbG93OiByb3cgd3JhcDsKICBhbGlnbi1pdGVtczogY2VudGVyOwp9Ci5mb3JtLWlubGluZSAuZm9ybS1jaGVjayB7CiAgd2lkdGg6IDEwMCU7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmZvcm0taW5saW5lIGxhYmVsIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tZ3JvdXAgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogIH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogYXV0bzsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgfQogIC5mb3JtLWlubGluZSAuZm9ybS1jb250cm9sLXBsYWludGV4dCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgfQogIC5mb3JtLWlubGluZSAuaW5wdXQtZ3JvdXAsIC5mb3JtLWlubGluZSAuY3VzdG9tLXNlbGVjdCB7CiAgICB3aWR0aDogYXV0bzsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogYXV0bzsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWNoZWNrLWlucHV0IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07CiAgICBtYXJnaW4tbGVmdDogMDsKICB9CiAgLmZvcm0taW5saW5lIC5jdXN0b20tY29udHJvbCB7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgfQogIC5mb3JtLWlubGluZSAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICB9Cn0KLmJ0biB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIGZvbnQtc2l6ZTogMXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKfQpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmJ0biB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQouYnRuOmhvdmVyLCAuYnRuOmZvY3VzIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmJ0bjpmb2N1cywgLmJ0bi5mb2N1cyB7CiAgb3V0bGluZTogMDsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KLmJ0bi5kaXNhYmxlZCwgLmJ0bjpkaXNhYmxlZCB7CiAgb3BhY2l0eTogMC42NTsKfQouYnRuOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KYS5idG4uZGlzYWJsZWQsIGZpZWxkc2V0OmRpc2FibGVkIGEuYnRuIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQouYnRuLXByaW1hcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5idG4tcHJpbWFyeTpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjlkOTsKICBib3JkZXItY29sb3I6ICMwMDYyY2M7Cn0KLmJ0bi1wcmltYXJ5OmZvY3VzLCAuYnRuLXByaW1hcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5idG4tcHJpbWFyeS5kaXNhYmxlZCwgLmJ0bi1wcmltYXJ5OmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQouYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDYyY2M7CiAgYm9yZGVyLWNvbG9yOiAjMDA1Y2JmOwp9Ci5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1wcmltYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KLmJ0bi1zZWNvbmRhcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9Ci5idG4tc2Vjb25kYXJ5OmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWE2MjY4OwogIGJvcmRlci1jb2xvcjogIzU0NWI2MjsKfQouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KLmJ0bi1zZWNvbmRhcnkuZGlzYWJsZWQsIC5idG4tc2Vjb25kYXJ5OmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwogIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQouYnRuLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7CiAgYm9yZGVyLWNvbG9yOiAjNGU1NTViOwp9Ci5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTA4LCAxMTcsIDEyNSwgMC41KTsKfQouYnRuLXN1Y2Nlc3MgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci5idG4tc3VjY2Vzczpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzIxODgzODsKICBib3JkZXItY29sb3I6ICMxZTdlMzQ7Cn0KLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9Ci5idG4tc3VjY2Vzcy5kaXNhYmxlZCwgLmJ0bi1zdWNjZXNzOmRpc2FibGVkIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQouYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQ7CiAgYm9yZGVyLWNvbG9yOiAjMWM3NDMwOwp9Ci5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1zdWNjZXNzLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNDAsIDE2NywgNjksIDAuNSk7Cn0KLmJ0bi1pbmZvIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTdhMmI4OwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQouYnRuLWluZm86aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxMzg0OTY7CiAgYm9yZGVyLWNvbG9yOiAjMTE3YThiOwp9Ci5idG4taW5mbzpmb2N1cywgLmJ0bi1pbmZvLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KLmJ0bi1pbmZvLmRpc2FibGVkLCAuYnRuLWluZm86ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7CiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9Ci5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1pbmZvLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzExN2E4YjsKICBib3JkZXItY29sb3I6ICMxMDcwN2Y7Cn0KLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLWluZm8uZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KLmJ0bi13YXJuaW5nIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3OwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQouYnRuLXdhcm5pbmc6aG92ZXIgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNlMGE4MDA7CiAgYm9yZGVyLWNvbG9yOiAjZDM5ZTAwOwp9Ci5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQouYnRuLXdhcm5pbmcuZGlzYWJsZWQsIC5idG4td2FybmluZzpkaXNhYmxlZCB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KLmJ0bi13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDM5ZTAwOwogIGJvcmRlci1jb2xvcjogI2M2OTUwMDsKfQouYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4td2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI1NSwgMTkzLCA3LCAwLjUpOwp9Ci5idG4tZGFuZ2VyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1OwogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQouYnRuLWRhbmdlcjpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M4MjMzMzsKICBib3JkZXItY29sb3I6ICNiZDIxMzA7Cn0KLmJ0bi1kYW5nZXI6Zm9jdXMsIC5idG4tZGFuZ2VyLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQouYnRuLWRhbmdlci5kaXNhYmxlZCwgLmJ0bi1kYW5nZXI6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Ci5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKICBib3JkZXItY29sb3I6ICNiMjFmMmQ7Cn0KLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQouYnRuLWxpZ2h0IHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwogIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQouYnRuLWxpZ2h0OmhvdmVyIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlNmVhOwogIGJvcmRlci1jb2xvcjogI2RhZTBlNTsKfQouYnRuLWxpZ2h0OmZvY3VzLCAuYnRuLWxpZ2h0LmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9Ci5idG4tbGlnaHQuZGlzYWJsZWQsIC5idG4tbGlnaHQ6ZGlzYWJsZWQgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7CiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhOwp9Ci5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RhZTBlNTsKICBib3JkZXItY29sb3I6ICNkM2Q5ZGY7Cn0KLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9Ci5idG4tZGFyayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1kYXJrOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyNzJiOwogIGJvcmRlci1jb2xvcjogIzFkMjEyNDsKfQouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQouYnRuLWRhcmsuZGlzYWJsZWQsIC5idG4tZGFyazpkaXNhYmxlZCB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyMTI0OwogIGJvcmRlci1jb2xvcjogIzE3MWExZDsKfQouYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tZGFyay5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDUyLCA1OCwgNjQsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXByaW1hcnkgewogIGNvbG9yOiAjMDA3YmZmOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmOwp9Ci5idG4tb3V0bGluZS1wcmltYXJ5OmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQouYnRuLW91dGxpbmUtcHJpbWFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1wcmltYXJ5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpkaXNhYmxlZCB7CiAgY29sb3I6ICMwMDdiZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXByaW1hcnkuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlci1jb2xvcjogIzAwN2JmZjsKfQouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1zZWNvbmRhcnkgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9Ci5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7CiAgYm9yZGVyLWNvbG9yOiAjNmM3NTdkOwp9Ci5idG4tb3V0bGluZS1zZWNvbmRhcnk6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmM3NTdkOwogIGJvcmRlci1jb2xvcjogIzZjNzU3ZDsKfQouYnRuLW91dGxpbmUtc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEwOCwgMTE3LCAxMjUsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgewogIGNvbG9yOiAjMjhhNzQ1OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1Owp9Ci5idG4tb3V0bGluZS1zdWNjZXNzOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQouYnRuLW91dGxpbmUtc3VjY2Vzczpmb2N1cywgLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1zdWNjZXNzLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtc3VjY2VzczpkaXNhYmxlZCB7CiAgY29sb3I6ICMyOGE3NDU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhhNzQ1OwogIGJvcmRlci1jb2xvcjogIzI4YTc0NTsKfQouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgewogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQwLCAxNjcsIDY5LCAwLjUpOwp9Ci5idG4tb3V0bGluZS1pbmZvIHsKICBjb2xvcjogIzE3YTJiODsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogIzE3YTJiODsKfQouYnRuLW91dGxpbmUtaW5mbzpob3ZlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKICBib3JkZXItY29sb3I6ICMxN2EyYjg7Cn0KLmJ0bi1vdXRsaW5lLWluZm86Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMywgMTYyLCAxODQsIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQsIC5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIHsKICBjb2xvcjogIzE3YTJiODsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtaW5mby5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxN2EyYjg7CiAgYm9yZGVyLWNvbG9yOiAjMTdhMmI4Owp9Ci5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tb3V0bGluZS1pbmZvLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMsIDE2MiwgMTg0LCAwLjUpOwp9Ci5idG4tb3V0bGluZS13YXJuaW5nIHsKICBjb2xvcjogI2ZmYzEwNzsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogI2ZmYzEwNzsKfQouYnRuLW91dGxpbmUtd2FybmluZzpob3ZlciB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KLmJ0bi1vdXRsaW5lLXdhcm5pbmc6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQouYnRuLW91dGxpbmUtd2FybmluZy5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6ZGlzYWJsZWQgewogIGNvbG9yOiAjZmZjMTA3OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNzsKICBib3JkZXItY29sb3I6ICNmZmMxMDc7Cn0KLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDE5MywgNywgMC41KTsKfQouYnRuLW91dGxpbmUtZGFuZ2VyIHsKICBjb2xvcjogI2RjMzU0NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQouYnRuLW91dGxpbmUtZGFuZ2VyOmhvdmVyIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1OwogIGJvcmRlci1jb2xvcjogI2RjMzU0NTsKfQouYnRuLW91dGxpbmUtZGFuZ2VyOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyLmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjAsIDUzLCA2OSwgMC41KTsKfQouYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkIHsKICBjb2xvcjogI2RjMzU0NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDU7CiAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1Owp9Ci5idG4tb3V0bGluZS1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtZGFuZ2VyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjIwLCA1MywgNjksIDAuNSk7Cn0KLmJ0bi1vdXRsaW5lLWxpZ2h0IHsKICBjb2xvcjogI2Y4ZjlmYTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwogIGJvcmRlci1jb2xvcjogI2Y4ZjlmYTsKfQouYnRuLW91dGxpbmUtbGlnaHQ6aG92ZXIgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7CiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhOwp9Ci5idG4tb3V0bGluZS1saWdodDpmb2N1cywgLmJ0bi1vdXRsaW5lLWxpZ2h0LmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDgsIDI0OSwgMjUwLCAwLjUpOwp9Ci5idG4tb3V0bGluZS1saWdodC5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWxpZ2h0OmRpc2FibGVkIHsKICBjb2xvcjogI2Y4ZjlmYTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1saWdodC5kcm9wZG93bi10b2dnbGUgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7CiAgYm9yZGVyLWNvbG9yOiAjZjhmOWZhOwp9Ci5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ4LCAyNDksIDI1MCwgMC41KTsKfQouYnRuLW91dGxpbmUtZGFyayB7CiAgY29sb3I6ICMzNDNhNDA7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1vdXRsaW5lLWRhcms6aG92ZXIgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMzNDNhNDA7CiAgYm9yZGVyLWNvbG9yOiAjMzQzYTQwOwp9Ci5idG4tb3V0bGluZS1kYXJrOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyay5mb2N1cyB7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTIsIDU4LCA2NCwgMC41KTsKfQouYnRuLW91dGxpbmUtZGFyay5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLWRhcms6ZGlzYWJsZWQgewogIGNvbG9yOiAjMzQzYTQwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Ci5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1kYXJrLmRyb3Bkb3duLXRvZ2dsZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MDsKICBib3JkZXItY29sb3I6ICMzNDNhNDA7Cn0KLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1MiwgNTgsIDY0LCAwLjUpOwp9Ci5idG4tbGluayB7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBjb2xvcjogIzAwN2JmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouYnRuLWxpbms6aG92ZXIgewogIGNvbG9yOiAjMDA1NmIzOwogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KLmJ0bi1saW5rOmZvY3VzLCAuYnRuLWxpbmsuZm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm94LXNoYWRvdzogbm9uZTsKfQouYnRuLWxpbms6ZGlzYWJsZWQsIC5idG4tbGluay5kaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLmJ0bi1sZywgLmJ0bi1ncm91cC1sZyA+IC5idG4gewogIHBhZGRpbmc6IDAuNXJlbSAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGJvcmRlci1yYWRpdXM6IDAuMnJlbTsKfQouYnRuLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKfQouYnRuLWJsb2NrICsgLmJ0bi1ibG9jayB7CiAgbWFyZ2luLXRvcDogMC41cmVtOwp9CmlucHV0W3R5cGU9InN1Ym1pdCJdLmJ0bi1ibG9jaywgaW5wdXRbdHlwZT0icmVzZXQiXS5idG4tYmxvY2ssIGlucHV0W3R5cGU9ImJ1dHRvbiJdLmJ0bi1ibG9jayB7CiAgd2lkdGg6IDEwMCU7Cn0KLmZhZGUgewogIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgbGluZWFyOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuZmFkZSB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQouZmFkZTpub3QoLnNob3cpIHsKICBvcGFjaXR5OiAwOwp9Ci5jb2xsYXBzZTpub3QoLnNob3cpIHsKICBkaXNwbGF5OiBub25lOwp9Ci5jb2xsYXBzaW5nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgaGVpZ2h0OiAwOwogIG92ZXJmbG93OiBoaWRkZW47CiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMzVzIGVhc2U7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jb2xsYXBzaW5nIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9Ci5kcm9wdXAsIC5kcm9wcmlnaHQsIC5kcm9wZG93biwgLmRyb3BsZWZ0IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7CiAgYm9yZGVyLXRvcDogMC4zZW0gc29saWQ7CiAgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItYm90dG9tOiAwOwogIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQouZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmRyb3Bkb3duLW1lbnUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDEwMCU7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDAwOwogIGRpc3BsYXk6IG5vbmU7CiAgZmxvYXQ6IGxlZnQ7CiAgbWluLXdpZHRoOiAxMHJlbTsKICBwYWRkaW5nOiAwLjVyZW0gMDsKICBtYXJnaW46IDAuMTI1cmVtIDAgMDsKICBmb250LXNpemU6IDFyZW07CiAgY29sb3I6ICMyMTI1Mjk7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBsaXN0LXN0eWxlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTUpOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmRyb3Bkb3duLW1lbnUtcmlnaHQgewogIHJpZ2h0OiAwOwogIGxlZnQ6IGF1dG87Cn0KLmRyb3B1cCAuZHJvcGRvd24tbWVudSB7CiAgdG9wOiBhdXRvOwogIGJvdHRvbTogMTAwJTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1ib3R0b206IDAuMTI1cmVtOwp9Ci5kcm9wdXAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMDsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07CiAgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07CiAgY29udGVudDogIiI7CiAgYm9yZGVyLXRvcDogMDsKICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDAuM2VtIHNvbGlkOwogIGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKfQouZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQouZHJvcHJpZ2h0IC5kcm9wZG93bi1tZW51IHsKICB0b3A6IDA7CiAgcmlnaHQ6IGF1dG87CiAgbGVmdDogMTAwJTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1sZWZ0OiAwLjEyNXJlbTsKfQouZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAwLjI1NWVtOwogIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtOwogIGNvbnRlbnQ6ICIiOwogIGJvcmRlci10b3A6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OwogIGJvcmRlci1yaWdodDogMDsKICBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItbGVmdDogMC4zZW0gc29saWQ7Cn0KLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgdmVydGljYWwtYWxpZ246IDA7Cn0KLmRyb3BsZWZ0IC5kcm9wZG93bi1tZW51IHsKICB0b3A6IDA7CiAgcmlnaHQ6IDEwMCU7CiAgbGVmdDogYXV0bzsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1yaWdodDogMC4xMjVyZW07Cn0KLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAwLjI1NWVtOwogIHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtOwogIGNvbnRlbnQ6ICIiOwp9Ci5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7CiAgZGlzcGxheTogbm9uZTsKfQouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIG1hcmdpbi1yaWdodDogMC4yNTVlbTsKICB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItdG9wOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkOwogIGJvcmRlci1ib3R0b206IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50Owp9Ci5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmRyb3BsZWZ0IC5kcm9wZG93bi10b2dnbGU6OmJlZm9yZSB7CiAgdmVydGljYWwtYWxpZ246IDA7Cn0KLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJ0b3AiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJyaWdodCJdLCAuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49ImJvdHRvbSJdLCAuZHJvcGRvd24tbWVudVt4LXBsYWNlbWVudF49ImxlZnQiXSB7CiAgcmlnaHQ6IGF1dG87CiAgYm90dG9tOiBhdXRvOwp9Ci5kcm9wZG93bi1kaXZpZGVyIHsKICBoZWlnaHQ6IDA7CiAgbWFyZ2luOiAwLjVyZW0gMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllY2VmOwp9Ci5kcm9wZG93bi1pdGVtIHsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMTAwJTsKICBwYWRkaW5nOiAwLjI1cmVtIDEuNXJlbTsKICBjbGVhcjogYm90aDsKICBmb250LXdlaWdodDogNDAwOwogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXI6IDA7Cn0KLmRyb3Bkb3duLWl0ZW06aG92ZXIsIC5kcm9wZG93bi1pdGVtOmZvY3VzIHsKICBjb2xvcjogIzE2MTgxYjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYTsKfQouZHJvcGRvd24taXRlbS5hY3RpdmUsIC5kcm9wZG93bi1pdGVtOmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsIC5kcm9wZG93bi1pdGVtOmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQouZHJvcGRvd24tbWVudS5zaG93IHsKICBkaXNwbGF5OiBibG9jazsKfQouZHJvcGRvd24taGVhZGVyIHsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAwLjVyZW0gMS41cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBjb2xvcjogIzZjNzU3ZDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5kcm9wZG93bi1pdGVtLXRleHQgewogIGRpc3BsYXk6IGJsb2NrOwogIHBhZGRpbmc6IDAuMjVyZW0gMS41cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9Ci5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9Ci5idG4tZ3JvdXAgPiAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGZsZXg6IDAgMSBhdXRvOwp9Ci5idG4tZ3JvdXAgPiAuYnRuOmhvdmVyLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpob3ZlciB7CiAgei1pbmRleDogMTsKfQouYnRuLWdyb3VwID4gLmJ0bjpmb2N1cywgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46Zm9jdXMsIC5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46YWN0aXZlLCAuYnRuLWdyb3VwID4gLmJ0bi5hY3RpdmUsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSB7CiAgei1pbmRleDogMTsKfQouYnRuLWdyb3VwIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4gKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwLCAuYnRuLWdyb3VwLXZlcnRpY2FsIC5idG4tZ3JvdXAgKyAuYnRuLWdyb3VwIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQouYnRuLXRvb2xiYXIgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQouYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHsKICB3aWR0aDogYXV0bzsKfQouYnRuLWdyb3VwID4gLmJ0bjpmaXJzdC1jaGlsZCB7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmJ0bi1ncm91cCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKfQouYnRuLWdyb3VwID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwgLmJ0bi1ncm91cCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC41NjI1cmVtOwogIHBhZGRpbmctbGVmdDogMC41NjI1cmVtOwp9Ci5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLCAuZHJvcHVwIC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLCAuZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyIHsKICBtYXJnaW4tbGVmdDogMDsKfQouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdDo6YmVmb3JlIHsKICBtYXJnaW4tcmlnaHQ6IDA7Cn0KLmJ0bi1zbSArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5idG4tZ3JvdXAtc20gPiAuYnRuICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7CiAgcGFkZGluZy1yaWdodDogMC4zNzVyZW07CiAgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbTsKfQouYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCwgLmJ0bi1ncm91cC1sZyA+IC5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHsKICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtOwogIHBhZGRpbmctbGVmdDogMC43NXJlbTsKfQouYnRuLWdyb3VwLXZlcnRpY2FsIHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgLmJ0biwgLmJ0bi1ncm91cC12ZXJ0aWNhbCAuYnRuLWdyb3VwIHsKICB3aWR0aDogMTAwJTsKfQouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biArIC5idG4sIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuICsgLmJ0bi1ncm91cCwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXAgKyAuYnRuLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cCArIC5idG4tZ3JvdXAgewogIG1hcmdpbi10b3A6IC0xcHg7CiAgbWFyZ2luLWxlZnQ6IDA7Cn0KLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4gewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7Cn0KLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIGlucHV0W3R5cGU9InJhZGlvIl0sIC5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuIGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBjbGlwOiByZWN0KDAsIDAsIDAsIDApOwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Ci5pbnB1dC1ncm91cCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogIHdpZHRoOiAxMDAlOwp9Ci5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBmbGV4OiAxIDEgYXV0bzsKICB3aWR0aDogMSU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuZm9ybS1jb250cm9sLCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0ICsgLmN1c3RvbS1zZWxlY3QsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sICsgLmN1c3RvbS1maWxlLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5jdXN0b20tZmlsZSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1maWxlIHsKICBtYXJnaW4tbGVmdDogLTFweDsKfQouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOmZvY3VzLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpmb2N1cywgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgei1pbmRleDogMzsKfQouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIHsKICB6LWluZGV4OiA0Owp9Ci5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6bm90KDpsYXN0LWNoaWxkKSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpsYXN0LWNoaWxkKSB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7Cn0KLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbDpub3QoOmZpcnN0LWNoaWxkKSwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3Q6bm90KDpmaXJzdC1jaGlsZCkgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQouaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGU6bm90KDpsYXN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbDo6YWZ0ZXIgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9Ci5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmZpcnN0LWNoaWxkKSAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKfQouaW5wdXQtZ3JvdXAtcHJlcGVuZCwgLmlucHV0LWdyb3VwLWFwcGVuZCB7CiAgZGlzcGxheTogZmxleDsKfQouaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwp9Ci5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG4gKyAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gKyAuYnRuLCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biwgLmlucHV0LWdyb3VwLWFwcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5idG4gewogIG1hcmdpbi1sZWZ0OiAtMXB4Owp9Ci5pbnB1dC1ncm91cC1wcmVwZW5kIHsKICBtYXJnaW4tcmlnaHQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLWFwcGVuZCB7CiAgbWFyZ2luLWxlZnQ6IC0xcHg7Cn0KLmlucHV0LWdyb3VwLXRleHQgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwogIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQouaW5wdXQtZ3JvdXAtdGV4dCBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuaW5wdXQtZ3JvdXAtdGV4dCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsKICBtYXJnaW4tdG9wOiAwOwp9Ci5pbnB1dC1ncm91cC1sZyA+IC5mb3JtLWNvbnRyb2wsIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuYnRuLCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmJ0biB7CiAgaGVpZ2h0OiBjYWxjKDIuODc1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBib3JkZXItcmFkaXVzOiAwLjNyZW07Cn0KLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTsKICBmb250LXNpemU6IDAuODc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgYm9yZGVyLXJhZGl1czogMC4ycmVtOwp9Ci5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCkgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOwp9Ci5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6Zmlyc3QtY2hpbGQpIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7Cn0KLmN1c3RvbS1jb250cm9sIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgbWluLWhlaWdodDogMS41cmVtOwogIHBhZGRpbmctbGVmdDogMS41cmVtOwp9Ci5jdXN0b20tY29udHJvbC1pbmxpbmUgewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIG1hcmdpbi1yaWdodDogMXJlbTsKfQouY3VzdG9tLWNvbnRyb2wtaW5wdXQgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiAtMTsKICBvcGFjaXR5OiAwOwp9Ci5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KLmN1c3RvbS1jb250cm9sLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KLmN1c3RvbS1jb250cm9sLWlucHV0OmFjdGl2ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjNkN2ZmOwp9Ci5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCB7CiAgY29sb3I6ICM2Yzc1N2Q7Cn0KLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7Cn0KLmN1c3RvbS1jb250cm9sLWxhYmVsIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMC4yNXJlbTsKICBsZWZ0OiAtMS41cmVtOwogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBjb250ZW50OiAiIjsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2Owp9Ci5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDAuMjVyZW07CiAgbGVmdDogLTEuNXJlbTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDFyZW07CiAgY29udGVudDogIiI7CiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOwogIGJhY2tncm91bmQtc2l6ZTogNTAlIDUwJTsKfQouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBmaWxsPSclMjNmZmYnIGQ9J002LjU2NC43NWwtMy41OSAzLjYxMi0xLjUzOC0xLjU1TDAgNC4yNiAyLjk3NCA3LjI1IDggMi4xOTN6Jy8lM0UlM0Mvc3ZnJTNFIik7Cn0KLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwp9Ci5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNCclM0UlM0NwYXRoIHN0cm9rZT0nJTIzZmZmJyBkPSdNMCAyaDQnLyUzRSUzQy9zdmclM0UiKTsKfQouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTIzLCAyNTUsIDAuNSk7Cn0KLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDEyMywgMjU1LCAwLjUpOwp9Ci5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJvcmRlci1yYWRpdXM6IDUwJTsKfQouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgewogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7Cn0KLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyUyM2ZmZicvJTNFJTNDL3N2ZyUzRSIpOwp9Ci5jdXN0b20tcmFkaW8gLmN1c3RvbS1jb250cm9sLWlucHV0OmRpc2FibGVkOmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjMsIDI1NSwgMC41KTsKfQouY3VzdG9tLXNlbGVjdCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjM3NXJlbSAxLjc1cmVtIDAuMzc1cmVtIDAuNzVyZW07CiAgbGluZS1oZWlnaHQ6IDEuNTsKICBjb2xvcjogIzQ5NTA1NzsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIGJhY2tncm91bmQ6ICNmZmYgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUnJTNFJTNDcGF0aCBmaWxsPSclMjMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzRSUzQy9zdmclM0UiKSBuby1yZXBlYXQgcmlnaHQgMC43NXJlbSBjZW50ZXI7CiAgYmFja2dyb3VuZC1zaXplOiA4cHggMTBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgYXBwZWFyYW5jZTogbm9uZTsKfQouY3VzdG9tLXNlbGVjdDpmb2N1cyB7CiAgYm9yZGVyLWNvbG9yOiAjODBiZGZmOwogIG91dGxpbmU6IDA7CiAgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTI4LCAxODksIDI1NSwgMC41KTsKfQouY3VzdG9tLXNlbGVjdDpmb2N1czo6LW1zLXZhbHVlIHsKICBjb2xvcjogIzQ5NTA1NzsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwp9Ci5jdXN0b20tc2VsZWN0W211bHRpcGxlXSwgLmN1c3RvbS1zZWxlY3Rbc2l6ZV06bm90KFtzaXplPSIxIl0pIHsKICBoZWlnaHQ6IGF1dG87CiAgcGFkZGluZy1yaWdodDogMC43NXJlbTsKICBiYWNrZ3JvdW5kLWltYWdlOiBub25lOwp9Ci5jdXN0b20tc2VsZWN0OmRpc2FibGVkIHsKICBjb2xvcjogIzZjNzU3ZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOwp9Ci5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHsKICBvcGFjaXR5OiAwOwp9Ci5jdXN0b20tc2VsZWN0LXNtIHsKICBoZWlnaHQ6IGNhbGMoMS44MTI1cmVtICsgMnB4KTsKICBwYWRkaW5nLXRvcDogMC4zNzVyZW07CiAgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtOwogIGZvbnQtc2l6ZTogNzUlOwp9Ci5jdXN0b20tc2VsZWN0LWxnIHsKICBoZWlnaHQ6IGNhbGMoMi44NzVyZW0gKyAycHgpOwogIHBhZGRpbmctdG9wOiAwLjM3NXJlbTsKICBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW07CiAgZm9udC1zaXplOiAxMjUlOwp9Ci5jdXN0b20tZmlsZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IGNhbGMoMi4yNXJlbSArIDJweCk7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY3VzdG9tLWZpbGUtaW5wdXQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB6LWluZGV4OiAyOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBtYXJnaW46IDA7CiAgb3BhY2l0eTogMDsKfQouY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgewogIGJvcmRlci1jb2xvcjogIzgwYmRmZjsKICBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7Cn0KLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgYm9yZGVyLWNvbG9yOiAjODBiZGZmOwp9Ci5jdXN0b20tZmlsZS1pbnB1dDpkaXNhYmxlZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQouY3VzdG9tLWZpbGUtaW5wdXQ6bGFuZyhlbikgfiAuY3VzdG9tLWZpbGUtbGFiZWw6OmFmdGVyIHsKICBjb250ZW50OiAiQnJvd3NlIjsKfQouY3VzdG9tLWZpbGUtbGFiZWwgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxOwogIGhlaWdodDogY2FsYygyLjI1cmVtICsgMnB4KTsKICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgei1pbmRleDogMzsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IDIuMjVyZW07CiAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsKICBsaW5lLWhlaWdodDogMS41OwogIGNvbG9yOiAjNDk1MDU3OwogIGNvbnRlbnQ6ICJCcm93c2UiOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2VkNGRhOwogIGJvcmRlci1yYWRpdXM6IDAgMC4yNXJlbSAwLjI1cmVtIDA7Cn0KLmN1c3RvbS1yYW5nZSB7CiAgd2lkdGg6IDEwMCU7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KLmN1c3RvbS1yYW5nZTpmb2N1cyB7CiAgb3V0bGluZTogbm9uZTsKfQouY3VzdG9tLXJhbmdlOmZvY3VzOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQouY3VzdG9tLXJhbmdlOmZvY3VzOjotbW96LXJhbmdlLXRodW1iIHsKICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgMC4ycmVtIHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOwp9Ci5jdXN0b20tcmFuZ2U6Zm9jdXM6Oi1tcy10aHVtYiB7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQouY3VzdG9tLXJhbmdlOjotbW96LWZvY3VzLW91dGVyIHsKICBib3JkZXI6IDA7Cn0KLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgewogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBtYXJnaW4tdG9wOiAtMC4yNXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmOwogIGJvcmRlcjogMDsKICBib3JkZXItcmFkaXVzOiAxcmVtOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsKICBhcHBlYXJhbmNlOiBub25lOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItcnVubmFibGUtdHJhY2sgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMC41cmVtOwogIGNvbG9yOiB0cmFuc3BhcmVudDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsKICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1yYWRpdXM6IDFyZW07Cn0KLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYiB7CiAgd2lkdGg6IDFyZW07CiAgaGVpZ2h0OiAxcmVtOwogIGJhY2tncm91bmQtY29sb3I6ICMwMDdiZmY7CiAgYm9yZGVyOiAwOwogIGJvcmRlci1yYWRpdXM6IDFyZW07CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0OwogIGFwcGVhcmFuY2U6IG5vbmU7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10cmFjayB7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAwLjVyZW07CiAgY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWIgewogIHdpZHRoOiAxcmVtOwogIGhlaWdodDogMXJlbTsKICBtYXJnaW4tdG9wOiAwOwogIG1hcmdpbi1yaWdodDogMC4ycmVtOwogIG1hcmdpbi1sZWZ0OiAwLjJyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXI6IDA7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7CiAgYXBwZWFyYW5jZTogbm9uZTsKfQpAbWVkaWEgc2NyZWVuIGFuZCAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iIHsKICAgIHRyYW5zaXRpb246IG5vbmU7CiAgfQp9Ci5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYjphY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNiM2Q3ZmY7Cn0KLmN1c3RvbS1yYW5nZTo6LW1zLXRyYWNrIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDAuNXJlbTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXdpZHRoOiAwLjVyZW07Cn0KLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtbG93ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC11cHBlciB7CiAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogIGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7CiAgYm9yZGVyLXJhZGl1czogMXJlbTsKfQouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7CiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0Owp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7CiAgICB0cmFuc2l0aW9uOiBub25lOwogIH0KfQoubmF2IHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5uYXYtbGluayB7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC41cmVtIDFyZW07Cn0KLm5hdi1saW5rOmhvdmVyLCAubmF2LWxpbms6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwp9Ci5uYXYtdGFicyB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTY7Cn0KLm5hdi10YWJzIC5uYXYtaXRlbSB7CiAgbWFyZ2luLWJvdHRvbTogLTFweDsKfQoubmF2LXRhYnMgLm5hdi1saW5rIHsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5uYXYtdGFicyAubmF2LWxpbms6aG92ZXIsIC5uYXYtdGFicyAubmF2LWxpbms6Zm9jdXMgewogIGJvcmRlci1jb2xvcjogI2U5ZWNlZiAjZTllY2VmICNkZWUyZTY7Cn0KLm5hdi10YWJzIC5uYXYtbGluay5kaXNhYmxlZCB7CiAgY29sb3I6ICM2Yzc1N2Q7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoubmF2LXRhYnMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi10YWJzIC5uYXYtaXRlbS5zaG93IC5uYXYtbGluayB7CiAgY29sb3I6ICM0OTUwNTc7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTYgI2RlZTJlNiAjZmZmOwp9Ci5uYXYtdGFicyAuZHJvcGRvd24tbWVudSB7CiAgbWFyZ2luLXRvcDogLTFweDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5uYXYtcGlsbHMgLm5hdi1saW5rIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5uYXYtcGlsbHMgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdi1waWxscyAuc2hvdyA+IC5uYXYtbGluayB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQoubmF2LWZpbGwgLm5hdi1pdGVtIHsKICBmbGV4OiAxIDEgYXV0bzsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLm5hdi1qdXN0aWZpZWQgLm5hdi1pdGVtIHsKICBmbGV4LWJhc2lzOiAwOwogIGZsZXgtZ3JvdzogMTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnRhYi1jb250ZW50ID4gLnRhYi1wYW5lIHsKICBkaXNwbGF5OiBub25lOwp9Ci50YWItY29udGVudCA+IC5hY3RpdmUgewogIGRpc3BsYXk6IGJsb2NrOwp9Ci5uYXZiYXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKfQoubmF2YmFyID4gLmNvbnRhaW5lciwgLm5hdmJhciA+IC5jb250YWluZXItZmx1aWQgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC13cmFwOiB3cmFwOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwp9Ci5uYXZiYXItYnJhbmQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXRvcDogMC4zMTI1cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjMxMjVyZW07CiAgbWFyZ2luLXJpZ2h0OiAxcmVtOwogIGZvbnQtc2l6ZTogMS4yNXJlbTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Ci5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItYnJhbmQ6Zm9jdXMgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKfQoubmF2YmFyLW5hdiB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHBhZGRpbmctbGVmdDogMDsKICBtYXJnaW4tYm90dG9tOiAwOwogIGxpc3Qtc3R5bGU6IG5vbmU7Cn0KLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICBwYWRkaW5nLXJpZ2h0OiAwOwogIHBhZGRpbmctbGVmdDogMDsKfQoubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgcG9zaXRpb246IHN0YXRpYzsKICBmbG9hdDogbm9uZTsKfQoubmF2YmFyLXRleHQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nLXRvcDogMC41cmVtOwogIHBhZGRpbmctYm90dG9tOiAwLjVyZW07Cn0KLm5hdmJhci1jb2xsYXBzZSB7CiAgZmxleC1iYXNpczogMTAwJTsKICBmbGV4LWdyb3c6IDE7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoubmF2YmFyLXRvZ2dsZXIgewogIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTsKICBmb250LXNpemU6IDEuMjVyZW07CiAgbGluZS1oZWlnaHQ6IDE7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoubmF2YmFyLXRvZ2dsZXI6aG92ZXIsIC5uYXZiYXItdG9nZ2xlcjpmb2N1cyB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5uYXZiYXItdG9nZ2xlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSB7CiAgY3Vyc29yOiBwb2ludGVyOwp9Ci5uYXZiYXItdG9nZ2xlci1pY29uIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEuNWVtOwogIGhlaWdodDogMS41ZW07CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICBjb250ZW50OiAiIjsKICBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwogICAgcGFkZGluZy1sZWZ0OiAwOwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAubmF2YmFyLWV4cGFuZC1zbSB7CiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtOwogIH0KICAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1jb2xsYXBzZSB7CiAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICBmbGV4LWJhc2lzOiBhdXRvOwogIH0KICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLXRvZ2dsZXIgewogICAgZGlzcGxheTogbm9uZTsKICB9Cn0KQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7CiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLm5hdmJhci1leHBhbmQtbWQgewogICAgZmxleC1mbG93OiByb3cgbm93cmFwOwogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogIH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItZmx1aWQgewogICAgZmxleC13cmFwOiBub3dyYXA7CiAgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItY29sbGFwc2UgewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgZmxleC1iYXNpczogYXV0bzsKICB9CiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci10b2dnbGVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgewogIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIHBhZGRpbmctcmlnaHQ6IDA7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgewogIC5uYXZiYXItZXhwYW5kLWxnIHsKICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgewogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIGZsZXgtd3JhcDogbm93cmFwOwogIH0KICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNlIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItdG9nZ2xlciB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQpAbWVkaWEgKG1heC13aWR0aDogMTE5OS45OHB4KSB7CiAgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItZmx1aWQgewogICAgcGFkZGluZy1yaWdodDogMDsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5uYXZiYXItZXhwYW5kLXhsIHsKICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgewogICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtOwogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07CiAgfQogIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLWZsdWlkIHsKICAgIGZsZXgtd3JhcDogbm93cmFwOwogIH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLWNvbGxhcHNlIHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgfQogIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItdG9nZ2xlciB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KfQoubmF2YmFyLWV4cGFuZCB7CiAgZmxleC1mbG93OiByb3cgbm93cmFwOwogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgcGFkZGluZy1yaWdodDogMDsKICBwYWRkaW5nLWxlZnQ6IDA7Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgewogIGZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgewogIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsKICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsKfQoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCB7CiAgZmxleC13cmFwOiBub3dyYXA7Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci1jb2xsYXBzZSB7CiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIGZsZXgtYmFzaXM6IGF1dG87Cn0KLm5hdmJhci1leHBhbmQgLm5hdmJhci10b2dnbGVyIHsKICBkaXNwbGF5OiBub25lOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZCB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpmb2N1cyB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluayB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKfQoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpob3ZlciwgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNyk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuYWN0aXZlID4gLm5hdi1saW5rLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXIgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXItaWNvbiB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB2aWV3Qm94PScwIDAgMzAgMzAnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIHN0cm9rZT0ncmdiYSgwLCAwLCAwLCAwLjUpJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLW1pdGVybGltaXQ9JzEwJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNFJTNDL3N2ZyUzRSIpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOwp9Ci5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgewogIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7Cn0KLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1saWdodCAubmF2YmFyLXRleHQgYTpmb2N1cyB7CiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci1icmFuZCB7CiAgY29sb3I6ICNmZmY7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsKICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAuc2hvdyA+IC5uYXYtbGluaywgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5hY3RpdmUgPiAubmF2LWxpbmssIC5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdywgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXIgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7CiAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItdG9nZ2xlci1pY29uIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHZpZXdCb3g9JzAgMCAzMCAzMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggc3Ryb2tlPSdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFIik7Cn0KLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCB7CiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsKfQoubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IGEgewogIGNvbG9yOiAjZmZmOwp9Ci5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKfQouY2FyZCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBtaW4td2lkdGg6IDA7CiAgd29yZC13cmFwOiBicmVhay13b3JkOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94OwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLmNhcmQgPiBociB7CiAgbWFyZ2luLXJpZ2h0OiAwOwogIG1hcmdpbi1sZWZ0OiAwOwp9Ci5jYXJkID4gLmxpc3QtZ3JvdXA6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKfQouY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5jYXJkLWJvZHkgewogIGZsZXg6IDEgMSBhdXRvOwogIHBhZGRpbmc6IDEuMjVyZW07Cn0KLmNhcmQtdGl0bGUgewogIG1hcmdpbi1ib3R0b206IDAuNzVyZW07Cn0KLmNhcmQtc3VidGl0bGUgewogIG1hcmdpbi10b3A6IC0wLjM3NXJlbTsKICBtYXJnaW4tYm90dG9tOiAwOwp9Ci5jYXJkLXRleHQ6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQouY2FyZC1saW5rOmhvdmVyIHsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmNhcmQtbGluayArIC5jYXJkLWxpbmsgewogIG1hcmdpbi1sZWZ0OiAxLjI1cmVtOwp9Ci5jYXJkLWhlYWRlciB7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KLmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxkIHsKICBib3JkZXItcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCkgMCAwOwp9Ci5jYXJkLWhlYWRlciArIC5saXN0LWdyb3VwIC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgewogIGJvcmRlci10b3A6IDA7Cn0KLmNhcmQtZm9vdGVyIHsKICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzKTsKICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7Cn0KLmNhcmQtZm9vdGVyOmxhc3QtY2hpbGQgewogIGJvcmRlci1yYWRpdXM6IDAgMCBjYWxjKDAuMjVyZW0gLSAxcHgpIGNhbGMoMC4yNXJlbSAtIDFweCk7Cn0KLmNhcmQtaGVhZGVyLXRhYnMgewogIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtOwogIG1hcmdpbi1ib3R0b206IC0wLjc1cmVtOwogIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07CiAgYm9yZGVyLWJvdHRvbTogMDsKfQouY2FyZC1oZWFkZXItcGlsbHMgewogIG1hcmdpbi1yaWdodDogLTAuNjI1cmVtOwogIG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07Cn0KLmNhcmQtaW1nLW92ZXJsYXkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgcGFkZGluZzogMS4yNXJlbTsKfQouY2FyZC1pbWcgewogIHdpZHRoOiAxMDAlOwogIGJvcmRlci1yYWRpdXM6IGNhbGMoMC4yNXJlbSAtIDFweCk7Cn0KLmNhcmQtaW1nLXRvcCB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKfQouY2FyZC1pbWctYm90dG9tIHsKICB3aWR0aDogMTAwJTsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpOwp9Ci5jYXJkLWRlY2sgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQouY2FyZC1kZWNrIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jYXJkLWRlY2sgewogICAgZmxleC1mbG93OiByb3cgd3JhcDsKICAgIG1hcmdpbi1yaWdodDogLTE1cHg7CiAgICBtYXJnaW4tbGVmdDogLTE1cHg7CiAgfQogIC5jYXJkLWRlY2sgLmNhcmQgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXg6IDEgMCAwJTsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgfQp9Ci5jYXJkLWdyb3VwIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KLmNhcmQtZ3JvdXAgPiAuY2FyZCB7CiAgbWFyZ2luLWJvdHRvbTogMTVweDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuY2FyZC1ncm91cCB7CiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkIHsKICAgIGZsZXg6IDEgMCAwJTsKICAgIG1hcmdpbi1ib3R0b206IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQgKyAuY2FyZCB7CiAgICBtYXJnaW4tbGVmdDogMDsKICAgIGJvcmRlci1sZWZ0OiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOmZpcnN0LWNoaWxkIHsKICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewogICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6Zmlyc3QtY2hpbGQgLmNhcmQtaW1nLWJvdHRvbSwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpmaXJzdC1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy10b3AsIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1oZWFkZXIgewogICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpsYXN0LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6bGFzdC1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIHsKICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07CiAgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm9ubHktY2hpbGQgLmNhcmQtaGVhZGVyIHsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpvbmx5LWNoaWxkIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6b25seS1jaGlsZCAuY2FyZC1mb290ZXIgewogICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07CiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1pbWctYm90dG9tLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpOm5vdCg6bGFzdC1jaGlsZCk6bm90KDpvbmx5LWNoaWxkKSAuY2FyZC1oZWFkZXIsIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKTpub3QoOm9ubHktY2hpbGQpIC5jYXJkLWZvb3RlciB7CiAgICBib3JkZXItcmFkaXVzOiAwOwogIH0KfQouY2FyZC1jb2x1bW5zIC5jYXJkIHsKICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5jYXJkLWNvbHVtbnMgewogICAgY29sdW1uLWNvdW50OiAzOwogICAgY29sdW1uLWdhcDogMS4yNXJlbTsKICAgIG9ycGhhbnM6IDE7CiAgICB3aWRvd3M6IDE7CiAgfQogIC5jYXJkLWNvbHVtbnMgLmNhcmQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDEwMCU7CiAgfQp9Ci5hY2NvcmRpb24gLmNhcmQ6bm90KDpmaXJzdC1vZi10eXBlKTpub3QoOmxhc3Qtb2YtdHlwZSkgewogIGJvcmRlci1ib3R0b206IDA7CiAgYm9yZGVyLXJhZGl1czogMDsKfQouYWNjb3JkaW9uIC5jYXJkOm5vdCg6Zmlyc3Qtb2YtdHlwZSkgLmNhcmQtaGVhZGVyOmZpcnN0LWNoaWxkIHsKICBib3JkZXItcmFkaXVzOiAwOwp9Ci5hY2NvcmRpb24gLmNhcmQ6Zmlyc3Qtb2YtdHlwZSB7CiAgYm9yZGVyLWJvdHRvbTogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOwp9Ci5hY2NvcmRpb24gLmNhcmQ6bGFzdC1vZi10eXBlIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOwp9Ci5icmVhZGNydW1iIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtd3JhcDogd3JhcDsKICBwYWRkaW5nOiAwLjc1cmVtIDFyZW07CiAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICBsaXN0LXN0eWxlOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQouYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbSB7CiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07Cn0KLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06OmJlZm9yZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsKICBjb2xvcjogIzZjNzU3ZDsKICBjb250ZW50OiAiLyI7Cn0KLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5icmVhZGNydW1iLWl0ZW0uYWN0aXZlIHsKICBjb2xvcjogIzZjNzU3ZDsKfQoucGFnaW5hdGlvbiB7CiAgZGlzcGxheTogZmxleDsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbGlzdC1zdHlsZTogbm9uZTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5wYWdlLWxpbmsgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBibG9jazsKICBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTsKICBtYXJnaW4tbGVmdDogLTFweDsKICBsaW5lLWhlaWdodDogMS4yNTsKICBjb2xvcjogIzAwN2JmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7Cn0KLnBhZ2UtbGluazpob3ZlciB7CiAgei1pbmRleDogMjsKICBjb2xvcjogIzAwNTZiMzsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KLnBhZ2UtbGluazpmb2N1cyB7CiAgei1pbmRleDogMjsKICBvdXRsaW5lOiAwOwogIGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTsKfQoucGFnZS1saW5rOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHsKICBtYXJnaW4tbGVmdDogMDsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW07Cn0KLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgewogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5wYWdlLWl0ZW0uYWN0aXZlIC5wYWdlLWxpbmsgewogIHotaW5kZXg6IDE7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KLnBhZ2UtaXRlbS5kaXNhYmxlZCAucGFnZS1saW5rIHsKICBjb2xvcjogIzZjNzU3ZDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBjdXJzb3I6IGF1dG87CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXItY29sb3I6ICNkZWUyZTY7Cn0KLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7CiAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07CiAgZm9udC1zaXplOiAxLjI1cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KLnBhZ2luYXRpb24tbGcgLnBhZ2UtaXRlbTpmaXJzdC1jaGlsZCAucGFnZS1saW5rIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjNyZW07CiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMC4zcmVtOwp9Ci5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06bGFzdC1jaGlsZCAucGFnZS1saW5rIHsKICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4zcmVtOwogIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjNyZW07Cn0KLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7CiAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07CiAgZm9udC1zaXplOiAwLjg3NXJlbTsKICBsaW5lLWhlaWdodDogMS41Owp9Ci5wYWdpbmF0aW9uLXNtIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4ycmVtOwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMnJlbTsKfQoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGluayB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMnJlbTsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4ycmVtOwp9Ci5iYWRnZSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDAuMjVlbSAwLjRlbTsKICBmb250LXNpemU6IDc1JTsKICBmb250LXdlaWdodDogNzAwOwogIGxpbmUtaGVpZ2h0OiAxOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtOwp9Ci5iYWRnZTplbXB0eSB7CiAgZGlzcGxheTogbm9uZTsKfQouYnRuIC5iYWRnZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRvcDogLTFweDsKfQouYmFkZ2UtcGlsbCB7CiAgcGFkZGluZy1yaWdodDogMC42ZW07CiAgcGFkZGluZy1sZWZ0OiAwLjZlbTsKICBib3JkZXItcmFkaXVzOiAxMHJlbTsKfQouYmFkZ2UtcHJpbWFyeSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKfQouYmFkZ2UtcHJpbWFyeVtocmVmXTpob3ZlciwgLmJhZGdlLXByaW1hcnlbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA2MmNjOwp9Ci5iYWRnZS1zZWNvbmRhcnkgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2Q7Cn0KLmJhZGdlLXNlY29uZGFyeVtocmVmXTpob3ZlciwgLmJhZGdlLXNlY29uZGFyeVtocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICM1NDViNjI7Cn0KLmJhZGdlLXN1Y2Nlc3MgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMyOGE3NDU7Cn0KLmJhZGdlLXN1Y2Nlc3NbaHJlZl06aG92ZXIsIC5iYWRnZS1zdWNjZXNzW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFlN2UzNDsKfQouYmFkZ2UtaW5mbyB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiODsKfQouYmFkZ2UtaW5mb1tocmVmXTpob3ZlciwgLmJhZGdlLWluZm9baHJlZl06Zm9jdXMgewogIGNvbG9yOiAjZmZmOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE3YThiOwp9Ci5iYWRnZS13YXJuaW5nIHsKICBjb2xvcjogIzIxMjUyOTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjMTA3Owp9Ci5iYWRnZS13YXJuaW5nW2hyZWZdOmhvdmVyLCAuYmFkZ2Utd2FybmluZ1tocmVmXTpmb2N1cyB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICNkMzllMDA7Cn0KLmJhZGdlLWRhbmdlciB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogI2RjMzU0NTsKfQouYmFkZ2UtZGFuZ2VyW2hyZWZdOmhvdmVyLCAuYmFkZ2UtZGFuZ2VyW2hyZWZdOmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JkMjEzMDsKfQouYmFkZ2UtbGlnaHQgewogIGNvbG9yOiAjMjEyNTI5OwogIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7Cn0KLmJhZGdlLWxpZ2h0W2hyZWZdOmhvdmVyLCAuYmFkZ2UtbGlnaHRbaHJlZl06Zm9jdXMgewogIGNvbG9yOiAjMjEyNTI5OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGFlMGU1Owp9Ci5iYWRnZS1kYXJrIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQzYTQwOwp9Ci5iYWRnZS1kYXJrW2hyZWZdOmhvdmVyLCAuYmFkZ2UtZGFya1tocmVmXTpmb2N1cyB7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQ7Cn0KLmp1bWJvdHJvbiB7CiAgcGFkZGluZzogMnJlbSAxcmVtOwogIG1hcmdpbi1ib3R0b206IDJyZW07CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKICBib3JkZXItcmFkaXVzOiAwLjNyZW07Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLmp1bWJvdHJvbiB7CiAgICBwYWRkaW5nOiA0cmVtIDJyZW07CiAgfQp9Ci5qdW1ib3Ryb24tZmx1aWQgewogIHBhZGRpbmctcmlnaHQ6IDA7CiAgcGFkZGluZy1sZWZ0OiAwOwogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmFsZXJ0IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIG1hcmdpbi1ib3R0b206IDFyZW07CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQouYWxlcnQtaGVhZGluZyB7CiAgY29sb3I6IGluaGVyaXQ7Cn0KLmFsZXJ0LWxpbmsgewogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KLmFsZXJ0LWRpc21pc3NpYmxlIHsKICBwYWRkaW5nLXJpZ2h0OiA0cmVtOwp9Ci5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2UgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIGNvbG9yOiBpbmhlcml0Owp9Ci5hbGVydC1wcmltYXJ5IHsKICBjb2xvcjogIzAwNDA4NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NlNWZmOwogIGJvcmRlci1jb2xvcjogI2I4ZGFmZjsKfQouYWxlcnQtcHJpbWFyeSBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogIzllY2RmZjsKfQouYWxlcnQtcHJpbWFyeSAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwMDI3NTI7Cn0KLmFsZXJ0LXNlY29uZGFyeSB7CiAgY29sb3I6ICMzODNkNDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTNlNTsKICBib3JkZXItY29sb3I6ICNkNmQ4ZGI7Cn0KLmFsZXJ0LXNlY29uZGFyeSBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2M4Y2NjZjsKfQouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsKICBjb2xvcjogIzIxMjMyNjsKfQouYWxlcnQtc3VjY2VzcyB7CiAgY29sb3I6ICMxNTU3MjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2Q0ZWRkYTsKICBib3JkZXItY29sb3I6ICNjM2U2Y2I7Cn0KLmFsZXJ0LXN1Y2Nlc3MgaHIgewogIGJvcmRlci10b3AtY29sb3I6ICNiMWRmYmI7Cn0KLmFsZXJ0LXN1Y2Nlc3MgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjMGIyZTEzOwp9Ci5hbGVydC1pbmZvIHsKICBjb2xvcjogIzBjNTQ2MDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFlY2YxOwogIGJvcmRlci1jb2xvcjogI2JlZTVlYjsKfQouYWxlcnQtaW5mbyBociB7CiAgYm9yZGVyLXRvcC1jb2xvcjogI2FiZGRlNTsKfQouYWxlcnQtaW5mbyAuYWxlcnQtbGluayB7CiAgY29sb3I6ICMwNjJjMzI7Cn0KLmFsZXJ0LXdhcm5pbmcgewogIGNvbG9yOiAjODU2NDA0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmYzY2Q7CiAgYm9yZGVyLWNvbG9yOiAjZmZlZWJhOwp9Ci5hbGVydC13YXJuaW5nIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjZmZlN2EwOwp9Ci5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzUzM2YwMjsKfQouYWxlcnQtZGFuZ2VyIHsKICBjb2xvcjogIzcyMWMyNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhkN2RhOwogIGJvcmRlci1jb2xvcjogI2Y1YzZjYjsKfQouYWxlcnQtZGFuZ2VyIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjZjFiMWI3Owp9Ci5hbGVydC1kYW5nZXIgLmFsZXJ0LWxpbmsgewogIGNvbG9yOiAjNDkxMjE3Owp9Ci5hbGVydC1saWdodCB7CiAgY29sb3I6ICM4MTgxODI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZmVmZTsKICBib3JkZXItY29sb3I6ICNmZGZkZmU7Cn0KLmFsZXJ0LWxpZ2h0IGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjZjFmMWYxOwp9Ci5hbGVydC1saWdodCAuYWxlcnQtbGluayB7CiAgY29sb3I6ICM2ODY4Njg7Cn0KLmFsZXJ0LWRhcmsgewogIGNvbG9yOiAjMWIxZTIxOwogIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZDk7CiAgYm9yZGVyLWNvbG9yOiAjYzZjOGNhOwp9Ci5hbGVydC1kYXJrIGhyIHsKICBib3JkZXItdG9wLWNvbG9yOiAjYjliYmJkOwp9Ci5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsKICBjb2xvcjogIzA0MDUwNTsKfQpAa2V5ZnJhbWVzIHByb2dyZXNzLWJhci1zdHJpcGVzIHsKICBmcm9tIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IDFyZW0gMDsKICB9CiAgdG8gewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOwogIH0KfQoucHJvZ3Jlc3MgewogIGRpc3BsYXk6IGZsZXg7CiAgaGVpZ2h0OiAxcmVtOwogIG92ZXJmbG93OiBoaWRkZW47CiAgZm9udC1zaXplOiAwLjc1cmVtOwogIGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7CiAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsKfQoucHJvZ3Jlc3MtYmFyIHsKICBkaXNwbGF5OiBmbGV4OwogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICB0cmFuc2l0aW9uOiB3aWR0aCAwLjZzIGVhc2U7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5wcm9ncmVzcy1iYXIgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLnByb2dyZXNzLWJhci1zdHJpcGVkIHsKICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsKICBiYWNrZ3JvdW5kLXNpemU6IDFyZW0gMXJlbTsKfQoucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHsKICBhbmltYXRpb246IHByb2dyZXNzLWJhci1zdHJpcGVzIDFzIGxpbmVhciBpbmZpbml0ZTsKfQoubWVkaWEgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7Cn0KLm1lZGlhLWJvZHkgewogIGZsZXg6IDE7Cn0KLmxpc3QtZ3JvdXAgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLWJvdHRvbTogMDsKfQoubGlzdC1ncm91cC1pdGVtLWFjdGlvbiB7CiAgd2lkdGg6IDEwMCU7CiAgY29sb3I6ICM0OTUwNTc7CiAgdGV4dC1hbGlnbjogaW5oZXJpdDsKfQoubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjNDk1MDU3OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhOwp9Ci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmFjdGl2ZSB7CiAgY29sb3I6ICMyMTI1Mjk7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsKfQoubGlzdC1ncm91cC1pdGVtIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogYmxvY2s7CiAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOwogIG1hcmdpbi1ib3R0b206IC0xcHg7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsKfQoubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtOwp9Ci5saXN0LWdyb3VwLWl0ZW06aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW06Zm9jdXMgewogIHotaW5kZXg6IDE7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci5saXN0LWdyb3VwLWl0ZW0uZGlzYWJsZWQsIC5saXN0LWdyb3VwLWl0ZW06ZGlzYWJsZWQgewogIGNvbG9yOiAjNmM3NTdkOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgewogIHotaW5kZXg6IDI7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwN2JmZjsKICBib3JkZXItY29sb3I6ICMwMDdiZmY7Cn0KLmxpc3QtZ3JvdXAtZmx1c2ggLmxpc3QtZ3JvdXAtaXRlbSB7CiAgYm9yZGVyLXJpZ2h0OiAwOwogIGJvcmRlci1sZWZ0OiAwOwogIGJvcmRlci1yYWRpdXM6IDA7Cn0KLmxpc3QtZ3JvdXAtZmx1c2g6Zmlyc3QtY2hpbGQgLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7CiAgYm9yZGVyLXRvcDogMDsKfQoubGlzdC1ncm91cC1mbHVzaDpsYXN0LWNoaWxkIC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7CiAgYm9yZGVyLWJvdHRvbTogMDsKfQoubGlzdC1ncm91cC1pdGVtLXByaW1hcnkgewogIGNvbG9yOiAjMDA0MDg1OwogIGJhY2tncm91bmQtY29sb3I6ICNiOGRhZmY7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzAwNDA4NTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjOWVjZGZmOwp9Ci5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDA4NTsKICBib3JkZXItY29sb3I6ICMwMDQwODU7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkgewogIGNvbG9yOiAjMzgzZDQxOwogIGJhY2tncm91bmQtY29sb3I6ICNkNmQ4ZGI7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1zZWNvbmRhcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMzODNkNDE7CiAgYmFja2dyb3VuZC1jb2xvcjogI2M4Y2NjZjsKfQoubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM4M2Q0MTsKICBib3JkZXItY29sb3I6ICMzODNkNDE7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsKICBjb2xvcjogIzE1NTcyNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNlNmNiOwp9Ci5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICMxNTU3MjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2IxZGZiYjsKfQoubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY29sb3I6ICMxNTU3MjQ7CiAgYm9yZGVyLWNvbG9yOiAjMTU1NzI0Owp9Ci5saXN0LWdyb3VwLWl0ZW0taW5mbyB7CiAgY29sb3I6ICMwYzU0NjA7CiAgYmFja2dyb3VuZC1jb2xvcjogI2JlZTVlYjsKfQoubGlzdC1ncm91cC1pdGVtLWluZm8ubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgewogIGNvbG9yOiAjMGM1NDYwOwogIGJhY2tncm91bmQtY29sb3I6ICNhYmRkZTU7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGM1NDYwOwogIGJvcmRlci1jb2xvcjogIzBjNTQ2MDsKfQoubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcgewogIGNvbG9yOiAjODU2NDA0OwogIGJhY2tncm91bmQtY29sb3I6ICNmZmVlYmE7Cn0KLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzg1NjQwNDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlN2EwOwp9Ci5saXN0LWdyb3VwLWl0ZW0td2FybmluZy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzg1NjQwNDsKICBib3JkZXItY29sb3I6ICM4NTY0MDQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgewogIGNvbG9yOiAjNzIxYzI0OwogIGJhY2tncm91bmQtY29sb3I6ICNmNWM2Y2I7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM3MjFjMjQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxYjFiNzsKfQoubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzcyMWMyNDsKICBib3JkZXItY29sb3I6ICM3MjFjMjQ7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1saWdodCB7CiAgY29sb3I6ICM4MTgxODI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZmRmZTsKfQoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7CiAgY29sb3I6ICM4MTgxODI7CiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKfQoubGlzdC1ncm91cC1pdGVtLWxpZ2h0Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjODE4MTgyOwogIGJvcmRlci1jb2xvcjogIzgxODE4MjsKfQoubGlzdC1ncm91cC1pdGVtLWRhcmsgewogIGNvbG9yOiAjMWIxZTIxOwogIGJhY2tncm91bmQtY29sb3I6ICNjNmM4Y2E7Cn0KLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsKICBjb2xvcjogIzFiMWUyMTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliYmJkOwp9Ci5saXN0LWdyb3VwLWl0ZW0tZGFyay5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7CiAgY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jb2xvcjogIzFiMWUyMTsKICBib3JkZXItY29sb3I6ICMxYjFlMjE7Cn0KLmNsb3NlIHsKICBmbG9hdDogcmlnaHQ7CiAgZm9udC1zaXplOiAxLjVyZW07CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBsaW5lLWhlaWdodDogMTsKICBjb2xvcjogIzAwMDsKICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmOwogIG9wYWNpdHk6IDAuNTsKfQouY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgewogIGN1cnNvcjogcG9pbnRlcjsKfQouY2xvc2U6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpmb2N1cyB7CiAgY29sb3I6ICMwMDA7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIG9wYWNpdHk6IDAuNzU7Cn0KYnV0dG9uLmNsb3NlIHsKICBwYWRkaW5nOiAwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMDsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cn0KLm1vZGFsLW9wZW4gewogIG92ZXJmbG93OiBoaWRkZW47Cn0KLm1vZGFsLW9wZW4gLm1vZGFsIHsKICBvdmVyZmxvdy14OiBoaWRkZW47CiAgb3ZlcmZsb3cteTogYXV0bzsKfQoubW9kYWwgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAwOwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTA1MDsKICBkaXNwbGF5OiBub25lOwogIG92ZXJmbG93OiBoaWRkZW47CiAgb3V0bGluZTogMDsKfQoubW9kYWwtZGlhbG9nIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgd2lkdGg6IGF1dG87CiAgbWFyZ2luOiAwLjVyZW07CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZyB7CiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTI1JSk7Cn0KQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogIC5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLm1vZGFsLnNob3cgLm1vZGFsLWRpYWxvZyB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7Cn0KLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtICgwLjVyZW0gKiAyKSk7Cn0KLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKICBkaXNwbGF5OiBibG9jazsKICBoZWlnaHQ6IGNhbGMoMTAwdmggLSAoMC41cmVtICogMikpOwogIGNvbnRlbnQ6ICIiOwp9Ci5tb2RhbC1jb250ZW50IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIHdpZHRoOiAxMDAlOwogIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgYm9yZGVyLXJhZGl1czogMC4zcmVtOwogIG91dGxpbmU6IDA7Cn0KLm1vZGFsLWJhY2tkcm9wIHsKICBwb3NpdGlvbjogZml4ZWQ7CiAgdG9wOiAwOwogIHJpZ2h0OiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHotaW5kZXg6IDEwNDA7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKfQoubW9kYWwtYmFja2Ryb3AuZmFkZSB7CiAgb3BhY2l0eTogMDsKfQoubW9kYWwtYmFja2Ryb3Auc2hvdyB7CiAgb3BhY2l0eTogMC41Owp9Ci5tb2RhbC1oZWFkZXIgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHBhZGRpbmc6IDFyZW07CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlOWVjZWY7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4zcmVtOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjNyZW07Cn0KLm1vZGFsLWhlYWRlciAuY2xvc2UgewogIHBhZGRpbmc6IDFyZW07CiAgbWFyZ2luOiAtMXJlbSAtMXJlbSAtMXJlbSBhdXRvOwp9Ci5tb2RhbC10aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICBsaW5lLWhlaWdodDogMS41Owp9Ci5tb2RhbC1ib2R5IHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxleDogMSAxIGF1dG87CiAgcGFkZGluZzogMXJlbTsKfQoubW9kYWwtZm9vdGVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICBwYWRkaW5nOiAxcmVtOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllY2VmOwp9Ci5tb2RhbC1mb290ZXIgPiA6bm90KDpmaXJzdC1jaGlsZCkgewogIG1hcmdpbi1sZWZ0OiAwLjI1cmVtOwp9Ci5tb2RhbC1mb290ZXIgPiA6bm90KDpsYXN0LWNoaWxkKSB7CiAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtOwp9Ci5tb2RhbC1zY3JvbGxiYXItbWVhc3VyZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTk5OTlweDsKICB3aWR0aDogNTBweDsKICBoZWlnaHQ6IDUwcHg7CiAgb3ZlcmZsb3c6IHNjcm9sbDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAubW9kYWwtZGlhbG9nIHsKICAgIG1heC13aWR0aDogNTAwcHg7CiAgICBtYXJnaW46IDEuNzVyZW0gYXV0bzsKICB9CiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZCB7CiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMCUgLSAoMS43NXJlbSAqIDIpKTsKICB9CiAgLm1vZGFsLWRpYWxvZy1jZW50ZXJlZDo6YmVmb3JlIHsKICAgIGhlaWdodDogY2FsYygxMDB2aCAtICgxLjc1cmVtICogMikpOwogIH0KICAubW9kYWwtc20gewogICAgbWF4LXdpZHRoOiAzMDBweDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLm1vZGFsLWxnIHsKICAgIG1heC13aWR0aDogODAwcHg7CiAgfQp9Ci50b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgei1pbmRleDogMTA3MDsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDA7CiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCIsICJOb3RvIENvbG9yIEVtb2ppIjsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMS41OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1hbGlnbjogc3RhcnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRleHQtc2hhZG93OiBub25lOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgd29yZC1icmVhazogbm9ybWFsOwogIHdvcmQtc3BhY2luZzogbm9ybWFsOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgbGluZS1icmVhazogYXV0bzsKICBmb250LXNpemU6IDAuODc1cmVtOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBvcGFjaXR5OiAwOwp9Ci50b29sdGlwLnNob3cgewogIG9wYWNpdHk6IDAuOTsKfQoudG9vbHRpcCAuYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMC44cmVtOwogIGhlaWdodDogMC40cmVtOwp9Ci50b29sdGlwIC5hcnJvdzo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgY29udGVudDogIiI7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci5icy10b29sdGlwLXRvcCwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKICBwYWRkaW5nOiAwLjRyZW0gMDsKfQouYnMtdG9vbHRpcC10b3AgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93IHsKICBib3R0b206IDA7Cn0KLmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgewogIHRvcDogMDsKICBib3JkZXItd2lkdGg6IDAuNHJlbSAwLjRyZW0gMDsKICBib3JkZXItdG9wLWNvbG9yOiAjMDAwOwp9Ci5icy10b29sdGlwLXJpZ2h0LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSB7CiAgcGFkZGluZzogMCAwLjRyZW07Cn0KLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3cgewogIGxlZnQ6IDA7CiAgd2lkdGg6IDAuNHJlbTsKICBoZWlnaHQ6IDAuOHJlbTsKfQouYnMtdG9vbHRpcC1yaWdodCAuYXJyb3c6OmJlZm9yZSwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93OjpiZWZvcmUgewogIHJpZ2h0OiAwOwogIGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwLjRyZW0gMDsKICBib3JkZXItcmlnaHQtY29sb3I6ICMwMDA7Cn0KLmJzLXRvb2x0aXAtYm90dG9tLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gewogIHBhZGRpbmc6IDAuNHJlbSAwOwp9Ci5icy10b29sdGlwLWJvdHRvbSAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3cgewogIHRvcDogMDsKfQouYnMtdG9vbHRpcC1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7CiAgYm90dG9tOiAwOwogIGJvcmRlci13aWR0aDogMCAwLjRyZW0gMC40cmVtOwogIGJvcmRlci1ib3R0b20tY29sb3I6ICMwMDA7Cn0KLmJzLXRvb2x0aXAtbGVmdCwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSB7CiAgcGFkZGluZzogMCAwLjRyZW07Cn0KLmJzLXRvb2x0aXAtbGVmdCAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93IHsKICByaWdodDogMDsKICB3aWR0aDogMC40cmVtOwogIGhlaWdodDogMC44cmVtOwp9Ci5icy10b29sdGlwLWxlZnQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjpiZWZvcmUgewogIGxlZnQ6IDA7CiAgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMCAwLjRyZW0gMC40cmVtOwogIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwOwp9Ci50b29sdGlwLWlubmVyIHsKICBtYXgtd2lkdGg6IDIwMHB4OwogIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtOwogIGNvbG9yOiAjZmZmOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07Cn0KLnBvcG92ZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0b3A6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDYwOwogIGRpc3BsYXk6IGJsb2NrOwogIG1heC13aWR0aDogMjc2cHg7CiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCIsICJOb3RvIENvbG9yIEVtb2ppIjsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBsaW5lLWhlaWdodDogMS41OwogIHRleHQtYWxpZ246IGxlZnQ7CiAgdGV4dC1hbGlnbjogc3RhcnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRleHQtc2hhZG93OiBub25lOwogIHRleHQtdHJhbnNmb3JtOiBub25lOwogIGxldHRlci1zcGFjaW5nOiBub3JtYWw7CiAgd29yZC1icmVhazogbm9ybWFsOwogIHdvcmQtc3BhY2luZzogbm9ybWFsOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgbGluZS1icmVhazogYXV0bzsKICBmb250LXNpemU6IDAuODc1cmVtOwogIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjIpOwogIGJvcmRlci1yYWRpdXM6IDAuM3JlbTsKfQoucG9wb3ZlciAuYXJyb3cgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBoZWlnaHQ6IDAuNXJlbTsKICBtYXJnaW46IDAgMC4zcmVtOwp9Ci5wb3BvdmVyIC5hcnJvdzo6YmVmb3JlLCAucG9wb3ZlciAuYXJyb3c6OmFmdGVyIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgZGlzcGxheTogYmxvY2s7CiAgY29udGVudDogIiI7CiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsKICBib3JkZXItc3R5bGU6IHNvbGlkOwp9Ci5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KLmJzLXBvcG92ZXItdG9wIC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdyB7CiAgYm90dG9tOiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwp9Ci5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAuNXJlbSAwOwp9Ci5icy1wb3BvdmVyLXRvcCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YmVmb3JlIHsKICBib3R0b206IDA7CiAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci10b3AgLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvdHRvbTogMXB4OwogIGJvcmRlci10b3AtY29sb3I6ICNmZmY7Cn0KLmJzLXBvcG92ZXItcmlnaHQsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsKICBtYXJnaW4tbGVmdDogMC41cmVtOwp9Ci5icy1wb3BvdmVyLXJpZ2h0IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gLmFycm93IHsKICBsZWZ0OiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwogIHdpZHRoOiAwLjVyZW07CiAgaGVpZ2h0OiAxcmVtOwogIG1hcmdpbjogMC4zcmVtIDA7Cn0KLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVyIHsKICBib3JkZXItd2lkdGg6IDAuNXJlbSAwLjVyZW0gMC41cmVtIDA7Cn0KLmJzLXBvcG92ZXItcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlIHsKICBsZWZ0OiAwOwogIGJvcmRlci1yaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci1yaWdodCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3c6OmFmdGVyIHsKICBsZWZ0OiAxcHg7CiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjZmZmOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIHsKICBtYXJnaW4tdG9wOiAwLjVyZW07Cn0KLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdyB7CiAgdG9wOiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMCAwLjVyZW0gMC41cmVtIDAuNXJlbTsKfQouYnMtcG9wb3Zlci1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7CiAgdG9wOiAwOwogIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7Cn0KLmJzLXBvcG92ZXItYm90dG9tIC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmFmdGVyIHsKICB0b3A6IDFweDsKICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmOwp9Ci5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGxlZnQ6IDUwJTsKICBkaXNwbGF5OiBibG9jazsKICB3aWR0aDogMXJlbTsKICBtYXJnaW4tbGVmdDogLTAuNXJlbTsKICBjb250ZW50OiAiIjsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Y3ZjdmNzsKfQouYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsKICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3cgewogIHJpZ2h0OiBjYWxjKCgwLjVyZW0gKyAxcHgpICogLTEpOwogIHdpZHRoOiAwLjVyZW07CiAgaGVpZ2h0OiAxcmVtOwogIG1hcmdpbjogMC4zcmVtIDA7Cn0KLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItbGVmdCAuYXJyb3c6OmFmdGVyLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YWZ0ZXIgewogIGJvcmRlci13aWR0aDogMC41cmVtIDAgMC41cmVtIDAuNXJlbTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YmVmb3JlIHsKICByaWdodDogMDsKICBib3JkZXItbGVmdC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsKfQouYnMtcG9wb3Zlci1sZWZ0IC5hcnJvdzo6YWZ0ZXIsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93OjphZnRlciB7CiAgcmlnaHQ6IDFweDsKICBib3JkZXItbGVmdC1jb2xvcjogI2ZmZjsKfQoucG9wb3Zlci1oZWFkZXIgewogIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOwogIG1hcmdpbi1ib3R0b206IDA7CiAgZm9udC1zaXplOiAxcmVtOwogIGNvbG9yOiBpbmhlcml0OwogIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjNyZW0gLSAxcHgpOwogIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKDAuM3JlbSAtIDFweCk7Cn0KLnBvcG92ZXItaGVhZGVyOmVtcHR5IHsKICBkaXNwbGF5OiBub25lOwp9Ci5wb3BvdmVyLWJvZHkgewogIHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOwogIGNvbG9yOiAjMjEyNTI5Owp9Ci5jYXJvdXNlbCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9Ci5jYXJvdXNlbC1pbm5lciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHdpZHRoOiAxMDAlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmNhcm91c2VsLWl0ZW0gewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBkaXNwbGF5OiBub25lOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgd2lkdGg6IDEwMCU7CiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOwogIHBlcnNwZWN0aXZlOiAxMDAwcHg7Cn0KLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICBkaXNwbGF5OiBibG9jazsKICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC42cyBlYXNlLCBtYXJnaW4gMC42cyBlYXNlOwp9CkBtZWRpYSBzY3JlZW4gYW5kIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuY2Fyb3VzZWwtaXRlbS5hY3RpdmUsIC5jYXJvdXNlbC1pdGVtLW5leHQsIC5jYXJvdXNlbC1pdGVtLXByZXYgewogICAgdHJhbnNpdGlvbjogbm9uZTsKICB9Cn0KLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKfQouY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KQHN1cHBvcnRzICgoLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSBvciAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkpIHsKICAuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CiAgfQp9Ci5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwp9CkBzdXBwb3J0cyAodHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCkgewogIC5jYXJvdXNlbC1pdGVtLW5leHQsIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApOwogIH0KfQouY2Fyb3VzZWwtaXRlbS1wcmV2LCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCB7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKfQpAc3VwcG9ydHMgKHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QpIHsKICAuY2Fyb3VzZWwtaXRlbS1wcmV2LCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTsKICB9Cn0KLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0gewogIG9wYWNpdHk6IDA7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC42czsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5Owp9Ci5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dC5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLXByZXYuY2Fyb3VzZWwtaXRlbS1yaWdodCB7CiAgb3BhY2l0eTogMTsKfQouY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsKICBvcGFjaXR5OiAwOwp9Ci5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLW5leHQsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLXByZXYsIC5jYXJvdXNlbC1mYWRlIC5jYXJvdXNlbC1pdGVtLmFjdGl2ZSwgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1wcmV2IHsKICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7Cn0KQHN1cHBvcnRzICh0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkKSB7CiAgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tcHJldiwgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtZmFkZSAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLXByZXYgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICB9Cn0KLmNhcm91c2VsLWNvbnRyb2wtcHJldiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMDsKICBib3R0b206IDA7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHdpZHRoOiAxNSU7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIG9wYWNpdHk6IDAuNTsKfQouY2Fyb3VzZWwtY29udHJvbC1wcmV2OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmhvdmVyLCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2OmZvY3VzLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0OmZvY3VzIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgb3V0bGluZTogMDsKICBvcGFjaXR5OiAwLjk7Cn0KLmNhcm91c2VsLWNvbnRyb2wtcHJldiB7CiAgbGVmdDogMDsKfQouY2Fyb3VzZWwtY29udHJvbC1uZXh0IHsKICByaWdodDogMDsKfQouY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24sIC5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiAyMHB4OwogIGhlaWdodDogMjBweDsKICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsKICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKfQouY2Fyb3VzZWwtY29udHJvbC1wcmV2LWljb24gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPSclMjNmZmYnIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNNS4yNSAwbC00IDQgNCA0IDEuNS0xLjUtMi41LTIuNSAyLjUtMi41LTEuNS0xLjV6Jy8lM0UlM0Mvc3ZnJTNFIik7Cn0KLmNhcm91c2VsLWNvbnRyb2wtbmV4dC1pY29uIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nJTIzZmZmJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZD0nTTIuNzUgMGwtMS41IDEuNSAyLjUgMi41LTIuNSAyLjUgMS41IDEuNSA0LTQtNC00eicvJTNFJTNDL3N2ZyUzRSIpOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDA7CiAgYm90dG9tOiAxMHB4OwogIGxlZnQ6IDA7CiAgei1pbmRleDogMTU7CiAgZGlzcGxheTogZmxleDsKICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICBwYWRkaW5nLWxlZnQ6IDA7CiAgbWFyZ2luLXJpZ2h0OiAxNSU7CiAgbWFyZ2luLWxlZnQ6IDE1JTsKICBsaXN0LXN0eWxlOiBub25lOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgZmxleDogMCAxIGF1dG87CiAgd2lkdGg6IDMwcHg7CiAgaGVpZ2h0OiAzcHg7CiAgbWFyZ2luLXJpZ2h0OiAzcHg7CiAgbWFyZ2luLWxlZnQ6IDNweDsKICB0ZXh0LWluZGVudDogLTk5OXB4OwogIGN1cnNvcjogcG9pbnRlcjsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Cn0KLmNhcm91c2VsLWluZGljYXRvcnMgbGk6OmJlZm9yZSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTEwcHg7CiAgbGVmdDogMDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbnRlbnQ6ICIiOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpOjphZnRlciB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIGJvdHRvbTogLTEwcHg7CiAgbGVmdDogMDsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiAxMHB4OwogIGNvbnRlbnQ6ICIiOwp9Ci5jYXJvdXNlbC1pbmRpY2F0b3JzIC5hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLmNhcm91c2VsLWNhcHRpb24gewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICByaWdodDogMTUlOwogIGJvdHRvbTogMjBweDsKICBsZWZ0OiAxNSU7CiAgei1pbmRleDogMTA7CiAgcGFkZGluZy10b3A6IDIwcHg7CiAgcGFkZGluZy1ib3R0b206IDIwcHg7CiAgY29sb3I6ICNmZmY7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5hbGlnbi1iYXNlbGluZSB7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXRvcCB7CiAgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50Owp9Ci5hbGlnbi1taWRkbGUgewogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDsKfQouYWxpZ24tYm90dG9tIHsKICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXRleHQtYm90dG9tIHsKICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsKfQouYWxpZ24tdGV4dC10b3AgewogIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcCAhaW1wb3J0YW50Owp9Ci5iZy1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KYS5iZy1wcmltYXJ5OmhvdmVyLCBidXR0b24uYmctcHJpbWFyeTpob3ZlciwgYS5iZy1wcmltYXJ5OmZvY3VzLCBidXR0b24uYmctcHJpbWFyeTpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzAwNjJjYyAhaW1wb3J0YW50Owp9Ci5iZy1zZWNvbmRhcnkgewogIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDsKfQphLmJnLXNlY29uZGFyeTpob3ZlciwgYnV0dG9uLmJnLXNlY29uZGFyeTpob3ZlciwgYS5iZy1zZWNvbmRhcnk6Zm9jdXMsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICM1NDViNjIgIWltcG9ydGFudDsKfQouYmctc3VjY2VzcyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CmEuYmctc3VjY2Vzczpob3ZlciwgYnV0dG9uLmJnLXN1Y2Nlc3M6aG92ZXIsIGEuYmctc3VjY2Vzczpmb2N1cywgYnV0dG9uLmJnLXN1Y2Nlc3M6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMxZTdlMzQgIWltcG9ydGFudDsKfQouYmctaW5mbyB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9CmEuYmctaW5mbzpob3ZlciwgYnV0dG9uLmJnLWluZm86aG92ZXIsIGEuYmctaW5mbzpmb2N1cywgYnV0dG9uLmJnLWluZm86Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQouYmctd2FybmluZyB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CmEuYmctd2FybmluZzpob3ZlciwgYnV0dG9uLmJnLXdhcm5pbmc6aG92ZXIsIGEuYmctd2FybmluZzpmb2N1cywgYnV0dG9uLmJnLXdhcm5pbmc6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsKfQouYmctZGFuZ2VyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KYS5iZy1kYW5nZXI6aG92ZXIsIGJ1dHRvbi5iZy1kYW5nZXI6aG92ZXIsIGEuYmctZGFuZ2VyOmZvY3VzLCBidXR0b24uYmctZGFuZ2VyOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQyMTMwICFpbXBvcnRhbnQ7Cn0KLmJnLWxpZ2h0IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOWZhICFpbXBvcnRhbnQ7Cn0KYS5iZy1saWdodDpob3ZlciwgYnV0dG9uLmJnLWxpZ2h0OmhvdmVyLCBhLmJnLWxpZ2h0OmZvY3VzLCBidXR0b24uYmctbGlnaHQ6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQouYmctZGFyayB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CmEuYmctZGFyazpob3ZlciwgYnV0dG9uLmJnLWRhcms6aG92ZXIsIGEuYmctZGFyazpmb2N1cywgYnV0dG9uLmJnLWRhcms6Zm9jdXMgewogIGJhY2tncm91bmQtY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsKfQouYmctd2hpdGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQouYmctdHJhbnNwYXJlbnQgewogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Cn0KLmJvcmRlciB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9Ci5ib3JkZXItdG9wIHsKICBib3JkZXItdG9wOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9Ci5ib3JkZXItcmlnaHQgewogIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQouYm9yZGVyLWJvdHRvbSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTYgIWltcG9ydGFudDsKfQouYm9yZGVyLWxlZnQgewogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50Owp9Ci5ib3JkZXItMCB7CiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci10b3AtMCB7CiAgYm9yZGVyLXRvcDogMCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItcmlnaHQtMCB7CiAgYm9yZGVyLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1ib3R0b20tMCB7CiAgYm9yZGVyLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItbGVmdC0wIHsKICBib3JkZXItbGVmdDogMCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItcHJpbWFyeSB7CiAgYm9yZGVyLWNvbG9yOiAjMDA3YmZmICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1zZWNvbmRhcnkgewogIGJvcmRlci1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItc3VjY2VzcyB7CiAgYm9yZGVyLWNvbG9yOiAjMjhhNzQ1ICFpbXBvcnRhbnQ7Cn0KLmJvcmRlci1pbmZvIHsKICBib3JkZXItY29sb3I6ICMxN2EyYjggIWltcG9ydGFudDsKfQouYm9yZGVyLXdhcm5pbmcgewogIGJvcmRlci1jb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9Ci5ib3JkZXItZGFuZ2VyIHsKICBib3JkZXItY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDsKfQouYm9yZGVyLWxpZ2h0IHsKICBib3JkZXItY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQouYm9yZGVyLWRhcmsgewogIGJvcmRlci1jb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9Ci5ib3JkZXItd2hpdGUgewogIGJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50Owp9Ci5yb3VuZGVkIHsKICBib3JkZXItcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KLnJvdW5kZWQtdG9wIHsKICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucm91bmRlZC1yaWdodCB7CiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5yb3VuZGVkLWJvdHRvbSB7CiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KLnJvdW5kZWQtbGVmdCB7CiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMC4yNXJlbSAhaW1wb3J0YW50OwogIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucm91bmRlZC1jaXJjbGUgewogIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50Owp9Ci5yb3VuZGVkLTAgewogIGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKfQouY2xlYXJmaXg6OmFmdGVyIHsKICBkaXNwbGF5OiBibG9jazsKICBjbGVhcjogYm90aDsKICBjb250ZW50OiAiIjsKfQouZC1ub25lIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLmQtaW5saW5lIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQouZC1pbmxpbmUtYmxvY2sgewogIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50Owp9Ci5kLWJsb2NrIHsKICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9Ci5kLXRhYmxlIHsKICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50Owp9Ci5kLXRhYmxlLXJvdyB7CiAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7Cn0KLmQtdGFibGUtY2VsbCB7CiAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50Owp9Ci5kLWZsZXggewogIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKfQouZC1pbmxpbmUtZmxleCB7CiAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuZC1zbS1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtc20taW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtc20tdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLXNtLWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1zbS1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZC1tZC1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtbWQtdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLW1kLWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1tZC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAuZC1sZy1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtbGctaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1sZy1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtbGctdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLWxnLWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1sZy1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmQteGwtbm9uZSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLWlubGluZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKICB9CiAgLmQteGwtaW5saW5lLWJsb2NrIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OwogIH0KICAuZC14bC1ibG9jayB7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogIH0KICAuZC14bC10YWJsZSB7CiAgICBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OwogIH0KICAuZC14bC10YWJsZS1yb3cgewogICAgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5kLXhsLXRhYmxlLWNlbGwgewogICAgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OwogIH0KICAuZC14bC1mbGV4IHsKICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICB9CiAgLmQteGwtaW5saW5lLWZsZXggewogICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIHByaW50IHsKICAuZC1wcmludC1ub25lIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtaW5saW5lIHsKICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUtYmxvY2sgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LWJsb2NrIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LXRhYmxlIHsKICAgIGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LXRhYmxlLXJvdyB7CiAgICBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsKICB9CiAgLmQtcHJpbnQtdGFibGUtY2VsbCB7CiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7CiAgfQogIC5kLXByaW50LWZsZXggewogICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogIH0KICAuZC1wcmludC1pbmxpbmUtZmxleCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogIH0KfQouZW1iZWQtcmVzcG9uc2l2ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGRpc3BsYXk6IGJsb2NrOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDA7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQouZW1iZWQtcmVzcG9uc2l2ZTo6YmVmb3JlIHsKICBkaXNwbGF5OiBibG9jazsKICBjb250ZW50OiAiIjsKfQouZW1iZWQtcmVzcG9uc2l2ZSAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLCAuZW1iZWQtcmVzcG9uc2l2ZSBpZnJhbWUsIC5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLCAuZW1iZWQtcmVzcG9uc2l2ZSBvYmplY3QsIC5lbWJlZC1yZXNwb25zaXZlIHZpZGVvIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdG9wOiAwOwogIGJvdHRvbTogMDsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICBib3JkZXI6IDA7Cn0KLmVtYmVkLXJlc3BvbnNpdmUtMjFieTk6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDQyLjg1NzE0Mjg1NzElOwp9Ci5lbWJlZC1yZXNwb25zaXZlLTE2Ynk5OjpiZWZvcmUgewogIHBhZGRpbmctdG9wOiA1Ni4yNSU7Cn0KLmVtYmVkLXJlc3BvbnNpdmUtNGJ5Mzo6YmVmb3JlIHsKICBwYWRkaW5nLXRvcDogNzUlOwp9Ci5lbWJlZC1yZXNwb25zaXZlLTFieTE6OmJlZm9yZSB7CiAgcGFkZGluZy10b3A6IDEwMCU7Cn0KLmZsZXgtcm93IHsKICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7Cn0KLmZsZXgtY29sdW1uIHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7Cn0KLmZsZXgtcm93LXJldmVyc2UgewogIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50Owp9Ci5mbGV4LWNvbHVtbi1yZXZlcnNlIHsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKfQouZmxleC13cmFwIHsKICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKfQouZmxleC1ub3dyYXAgewogIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7Cn0KLmZsZXgtd3JhcC1yZXZlcnNlIHsKICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50Owp9Ci5mbGV4LWZpbGwgewogIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7Cn0KLmZsZXgtZ3Jvdy0wIHsKICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKfQouZmxleC1ncm93LTEgewogIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50Owp9Ci5mbGV4LXNocmluay0wIHsKICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50Owp9Ci5mbGV4LXNocmluay0xIHsKICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50Owp9Ci5qdXN0aWZ5LWNvbnRlbnQtc3RhcnQgewogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50Owp9Ci5qdXN0aWZ5LWNvbnRlbnQtZW5kIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmp1c3RpZnktY29udGVudC1jZW50ZXIgewogIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7Cn0KLmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKfQouanVzdGlmeS1jb250ZW50LWFyb3VuZCB7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQouYWxpZ24taXRlbXMtc3RhcnQgewogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLWVuZCB7CiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLWNlbnRlciB7CiAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50Owp9Ci5hbGlnbi1pdGVtcy1iYXNlbGluZSB7CiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWl0ZW1zLXN0cmV0Y2ggewogIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtc3RhcnQgewogIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1lbmQgewogIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtY2VudGVyIHsKICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1iZXR3ZWVuIHsKICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7Cn0KLmFsaWduLWNvbnRlbnQtYXJvdW5kIHsKICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKfQouYWxpZ24tY29udGVudC1zdHJldGNoIHsKICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtYXV0byB7CiAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50Owp9Ci5hbGlnbi1zZWxmLXN0YXJ0IHsKICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtZW5kIHsKICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50Owp9Ci5hbGlnbi1zZWxmLWNlbnRlciB7CiAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtYmFzZWxpbmUgewogIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7Cn0KLmFsaWduLXNlbGYtc3RyZXRjaCB7CiAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50Owp9CkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgewogIC5mbGV4LXNtLXJvdyB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWNvbHVtbiB7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXJvdy1yZXZlcnNlIHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1jb2x1bW4tcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20td3JhcCB7CiAgICBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tbm93cmFwIHsKICAgIGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLXdyYXAtcmV2ZXJzZSB7CiAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1maWxsIHsKICAgIGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXNtLWdyb3ctMCB7CiAgICBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtc20tZ3Jvdy0xIHsKICAgIGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1zaHJpbmstMCB7CiAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1zbS1zaHJpbmstMSB7CiAgICBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLXN0YXJ0IHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXNtLWVuZCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tY2VudGVyIHsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1zbS1hcm91bmQgewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXNtLXN0YXJ0IHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1lbmQgewogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1jZW50ZXIgewogICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgewogICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1zbS1zdHJldGNoIHsKICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLXN0YXJ0IHsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tZW5kIHsKICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7CiAgICBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXNtLWFyb3VuZCB7CiAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtc20tc3RyZXRjaCB7CiAgICBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWF1dG8gewogICAgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1zbS1zdGFydCB7CiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWVuZCB7CiAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1zbS1jZW50ZXIgewogICAgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLWJhc2VsaW5lIHsKICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLXNtLXN0cmV0Y2ggewogICAgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsKICAuZmxleC1tZC1yb3cgewogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1jb2x1bW4gewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1yb3ctcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtY29sdW1uLXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLXdyYXAgewogICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLW5vd3JhcCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC13cmFwLXJldmVyc2UgewogICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtZmlsbCB7CiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogIH0KICAuZmxleC1tZC1ncm93LTAgewogICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LW1kLWdyb3ctMSB7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtc2hyaW5rLTAgewogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbWQtc2hyaW5rLTEgewogICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1zdGFydCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1tZC1lbmQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LW1kLWNlbnRlciB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LW1kLWJldHdlZW4gewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYXJvdW5kIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1tZC1zdGFydCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtZW5kIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtY2VudGVyIHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLW1kLWJhc2VsaW5lIHsKICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbWQtc3RyZXRjaCB7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1zdGFydCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWVuZCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1jZW50ZXIgewogICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLWJldHdlZW4gewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1tZC1hcm91bmQgewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LW1kLXN0cmV0Y2ggewogICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1hdXRvIHsKICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtc3RhcnQgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1lbmQgewogICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbWQtY2VudGVyIHsKICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1iYXNlbGluZSB7CiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi1tZC1zdHJldGNoIHsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmZsZXgtbGctcm93IHsKICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctY29sdW1uIHsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctcm93LXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLWNvbHVtbi1yZXZlcnNlIHsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy13cmFwIHsKICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1ub3dyYXAgewogICAgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctd3JhcC1yZXZlcnNlIHsKICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLWZpbGwgewogICAgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmZsZXgtbGctZ3Jvdy0wIHsKICAgIGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OwogIH0KICAuZmxleC1sZy1ncm93LTEgewogICAgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLXNocmluay0wIHsKICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LWxnLXNocmluay0xIHsKICAgIGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctc3RhcnQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1jZW50ZXIgewogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC1sZy1iZXR3ZWVuIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LWxnLWFyb3VuZCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMtbGctc3RhcnQgewogICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLWVuZCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLWNlbnRlciB7CiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy1sZy1iYXNlbGluZSB7CiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLWxnLXN0cmV0Y2ggewogICAgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctc3RhcnQgewogICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1lbmQgewogICAgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctY2VudGVyIHsKICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1iZXR3ZWVuIHsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWNvbnRlbnQtbGctYXJvdW5kIHsKICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC1sZy1zdHJldGNoIHsKICAgIGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctYXV0byB7CiAgICBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLXN0YXJ0IHsKICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctZW5kIHsKICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1zZWxmLWxnLWNlbnRlciB7CiAgICBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctYmFzZWxpbmUgewogICAgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYtbGctc3RyZXRjaCB7CiAgICBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsKICAuZmxleC14bC1yb3cgewogICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1jb2x1bW4gewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1yb3ctcmV2ZXJzZSB7CiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtY29sdW1uLXJldmVyc2UgewogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLXdyYXAgewogICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLW5vd3JhcCB7CiAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC13cmFwLXJldmVyc2UgewogICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2UgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtZmlsbCB7CiAgICBmbGV4OiAxIDEgYXV0byAhaW1wb3J0YW50OwogIH0KICAuZmxleC14bC1ncm93LTAgewogICAgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5mbGV4LXhsLWdyb3ctMSB7CiAgICBmbGV4LWdyb3c6IDEgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtc2hyaW5rLTAgewogICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICB9CiAgLmZsZXgteGwtc2hyaW5rLTEgewogICAgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1zdGFydCB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsKICB9CiAgLmp1c3RpZnktY29udGVudC14bC1lbmQgewogICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLWNlbnRlciB7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW4gewogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7CiAgfQogIC5qdXN0aWZ5LWNvbnRlbnQteGwtYXJvdW5kIHsKICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1pdGVtcy14bC1zdGFydCB7CiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtZW5kIHsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtY2VudGVyIHsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsKICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24taXRlbXMteGwtc3RyZXRjaCB7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1zdGFydCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLWVuZCB7CiAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1jZW50ZXIgewogICAgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4gewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tY29udGVudC14bC1hcm91bmQgewogICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7CiAgfQogIC5hbGlnbi1jb250ZW50LXhsLXN0cmV0Y2ggewogICAgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1hdXRvIHsKICAgIGFsaWduLXNlbGY6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYteGwtc3RhcnQgewogICAgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1lbmQgewogICAgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsKICB9CiAgLmFsaWduLXNlbGYteGwtY2VudGVyIHsKICAgIGFsaWduLXNlbGY6IGNlbnRlciAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1iYXNlbGluZSB7CiAgICBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OwogIH0KICAuYWxpZ24tc2VsZi14bC1zdHJldGNoIHsKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsKICB9Cn0KLmZsb2F0LWxlZnQgewogIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7Cn0KLmZsb2F0LXJpZ2h0IHsKICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKfQouZmxvYXQtbm9uZSB7CiAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKfQpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsKICAuZmxvYXQtc20tbGVmdCB7CiAgICBmbG9hdDogbGVmdCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtc20tcmlnaHQgewogICAgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1zbS1ub25lIHsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5mbG9hdC1tZC1sZWZ0IHsKICAgIGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC5mbG9hdC1tZC1yaWdodCB7CiAgICBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LW1kLW5vbmUgewogICAgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLmZsb2F0LWxnLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LWxnLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQtbGctbm9uZSB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7CiAgLmZsb2F0LXhsLWxlZnQgewogICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsKICB9CiAgLmZsb2F0LXhsLXJpZ2h0IHsKICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50OwogIH0KICAuZmxvYXQteGwtbm9uZSB7CiAgICBmbG9hdDogbm9uZSAhaW1wb3J0YW50OwogIH0KfQoucG9zaXRpb24tc3RhdGljIHsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7Cn0KLnBvc2l0aW9uLXJlbGF0aXZlIHsKICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKfQoucG9zaXRpb24tYWJzb2x1dGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50Owp9Ci5wb3NpdGlvbi1maXhlZCB7CiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7Cn0KLnBvc2l0aW9uLXN0aWNreSB7CiAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50Owp9Ci5maXhlZC10b3AgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDA7CiAgcmlnaHQ6IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9Ci5maXhlZC1ib3R0b20gewogIHBvc2l0aW9uOiBmaXhlZDsKICByaWdodDogMDsKICBib3R0b206IDA7CiAgbGVmdDogMDsKICB6LWluZGV4OiAxMDMwOwp9CkBzdXBwb3J0cyAocG9zaXRpb246IHN0aWNreSkgewogIC5zdGlja3ktdG9wIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IDA7CiAgICB6LWluZGV4OiAxMDIwOwogIH0KfQouc3Itb25seSB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHdpZHRoOiAxcHg7CiAgaGVpZ2h0OiAxcHg7CiAgcGFkZGluZzogMDsKICBvdmVyZmxvdzogaGlkZGVuOwogIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICBib3JkZXI6IDA7Cn0KLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsKICBwb3NpdGlvbjogc3RhdGljOwogIHdpZHRoOiBhdXRvOwogIGhlaWdodDogYXV0bzsKICBvdmVyZmxvdzogdmlzaWJsZTsKICBjbGlwOiBhdXRvOwogIHdoaXRlLXNwYWNlOiBub3JtYWw7Cn0KLnNoYWRvdy1zbSB7CiAgYm94LXNoYWRvdzogMCAwLjEyNXJlbSAwLjI1cmVtIHJnYmEoMCwgMCwgMCwgMC4wNzUpICFpbXBvcnRhbnQ7Cn0KLnNoYWRvdyB7CiAgYm94LXNoYWRvdzogMCAwLjVyZW0gMXJlbSByZ2JhKDAsIDAsIDAsIDAuMTUpICFpbXBvcnRhbnQ7Cn0KLnNoYWRvdy1sZyB7CiAgYm94LXNoYWRvdzogMCAxcmVtIDNyZW0gcmdiYSgwLCAwLCAwLCAwLjE3NSkgIWltcG9ydGFudDsKfQouc2hhZG93LW5vbmUgewogIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKfQoudy0yNSB7CiAgd2lkdGg6IDI1JSAhaW1wb3J0YW50Owp9Ci53LTUwIHsKICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7Cn0KLnctNzUgewogIHdpZHRoOiA3NSUgIWltcG9ydGFudDsKfQoudy0xMDAgewogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7Cn0KLnctYXV0byB7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKfQouaC0yNSB7CiAgaGVpZ2h0OiAyNSUgIWltcG9ydGFudDsKfQouaC01MCB7CiAgaGVpZ2h0OiA1MCUgIWltcG9ydGFudDsKfQouaC03NSB7CiAgaGVpZ2h0OiA3NSUgIWltcG9ydGFudDsKfQouaC0xMDAgewogIGhlaWdodDogMTAwJSAhaW1wb3J0YW50Owp9Ci5oLWF1dG8gewogIGhlaWdodDogYXV0byAhaW1wb3J0YW50Owp9Ci5tdy0xMDAgewogIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5taC0xMDAgewogIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKfQoubS0wIHsKICBtYXJnaW46IDAgIWltcG9ydGFudDsKfQoubXQtMCwgLm15LTAgewogIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKfQoubXItMCwgLm14LTAgewogIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50Owp9Ci5tYi0wLCAubXktMCB7CiAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9Ci5tbC0wLCAubXgtMCB7CiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKfQoubS0xIHsKICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubXQtMSwgLm15LTEgewogIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubXItMSwgLm14LTEgewogIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5tYi0xLCAubXktMSB7CiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5tbC0xLCAubXgtMSB7CiAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoubS0yIHsKICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5tdC0yLCAubXktMiB7CiAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm1yLTIsIC5teC0yIHsKICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5tYi0yLCAubXktMiB7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm1sLTIsIC5teC0yIHsKICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7Cn0KLm0tMyB7CiAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm10LTMsIC5teS0zIHsKICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm1yLTMsIC5teC0zIHsKICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKfQoubWItMywgLm15LTMgewogIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoubWwtMywgLm14LTMgewogIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7Cn0KLm0tNCB7CiAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKfQoubXQtNCwgLm15LTQgewogIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tci00LCAubXgtNCB7CiAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKfQoubWItNCwgLm15LTQgewogIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tbC00LCAubXgtNCB7CiAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5tLTUgewogIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50Owp9Ci5tdC01LCAubXktNSB7CiAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50Owp9Ci5tci01LCAubXgtNSB7CiAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm1iLTUsIC5teS01IHsKICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm1sLTUsIC5teC01IHsKICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50Owp9Ci5wLTAgewogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKfQoucHQtMCwgLnB5LTAgewogIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7Cn0KLnByLTAsIC5weC0wIHsKICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7Cn0KLnBiLTAsIC5weS0wIHsKICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50Owp9Ci5wbC0wLCAucHgtMCB7CiAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7Cn0KLnAtMSB7CiAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50Owp9Ci5wdC0xLCAucHktMSB7CiAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucHItMSwgLnB4LTEgewogIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucGItMSwgLnB5LTEgewogIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7Cn0KLnBsLTEsIC5weC0xIHsKICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKfQoucC0yIHsKICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKfQoucHQtMiwgLnB5LTIgewogIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKfQoucHItMiwgLnB4LTIgewogIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5wYi0yLCAucHktMiB7CiAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50Owp9Ci5wbC0yLCAucHgtMiB7CiAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKfQoucC0zIHsKICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7Cn0KLnB0LTMsIC5weS0zIHsKICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wci0zLCAucHgtMyB7CiAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wYi0zLCAucHktMyB7CiAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKfQoucGwtMywgLnB4LTMgewogIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50Owp9Ci5wLTQgewogIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wdC00LCAucHktNCB7CiAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wci00LCAucHgtNCB7CiAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7Cn0KLnBiLTQsIC5weS00IHsKICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7Cn0KLnBsLTQsIC5weC00IHsKICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50Owp9Ci5wLTUgewogIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKfQoucHQtNSwgLnB5LTUgewogIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7Cn0KLnByLTUsIC5weC01IHsKICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLnBiLTUsIC5weS01IHsKICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50Owp9Ci5wbC01LCAucHgtNSB7CiAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7Cn0KLm0tYXV0byB7CiAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7Cn0KLm10LWF1dG8sIC5teS1hdXRvIHsKICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7Cn0KLm1yLWF1dG8sIC5teC1hdXRvIHsKICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoubWItYXV0bywgLm15LWF1dG8gewogIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKfQoubWwtYXV0bywgLm14LWF1dG8gewogIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLm0tc20tMCB7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTAsIC5teS1zbS0wIHsKICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTAsIC5teC1zbS0wIHsKICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAubWItc20tMCwgLm15LXNtLTAgewogICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAubWwtc20tMCwgLm14LXNtLTAgewogICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm0tc20tMSB7CiAgICBtYXJnaW46IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTEsIC5teS1zbS0xIHsKICAgIG1hcmdpbi10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXNtLTEsIC5teC1zbS0xIHsKICAgIG1hcmdpbi1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMSwgLm15LXNtLTEgewogICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tMSwgLm14LXNtLTEgewogICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tc20tMiB7CiAgICBtYXJnaW46IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtc20tMiwgLm15LXNtLTIgewogICAgbWFyZ2luLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS0yLCAubXgtc20tMiB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItc20tMiwgLm15LXNtLTIgewogICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS0yLCAubXgtc20tMiB7CiAgICBtYXJnaW4tbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTMgewogICAgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS0zLCAubXktc20tMyB7CiAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS0zLCAubXgtc20tMyB7CiAgICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTMsIC5teS1zbS0zIHsKICAgIG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLTMsIC5teC1zbS0zIHsKICAgIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLTQgewogICAgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXNtLTQsIC5teS1zbS00IHsKICAgIG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tNCwgLm14LXNtLTQgewogICAgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLTQsIC5teS1zbS00IHsKICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtc20tNCwgLm14LXNtLTQgewogICAgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1zbS01IHsKICAgIG1hcmdpbjogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXQtc20tNSwgLm15LXNtLTUgewogICAgbWFyZ2luLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubXItc20tNSwgLm14LXNtLTUgewogICAgbWFyZ2luLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1zbS01LCAubXktc20tNSB7CiAgICBtYXJnaW4tYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1zbS01LCAubXgtc20tNSB7CiAgICBtYXJnaW4tbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS0wIHsKICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICB9CiAgLnB0LXNtLTAsIC5weS1zbS0wIHsKICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS0wLCAucHgtc20tMCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS0wLCAucHktc20tMCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogIH0KICAucGwtc20tMCwgLnB4LXNtLTAgewogICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wLXNtLTEgewogICAgcGFkZGluZzogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tMSwgLnB5LXNtLTEgewogICAgcGFkZGluZy10b3A6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXNtLTEsIC5weC1zbS0xIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXNtLTEsIC5weS1zbS0xIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS0xLCAucHgtc20tMSB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtc20tMiB7CiAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXNtLTIsIC5weS1zbS0yIHsKICAgIHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXNtLTIsIC5weC1zbS0yIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItc20tMiwgLnB5LXNtLTIgewogICAgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtc20tMiwgLnB4LXNtLTIgewogICAgcGFkZGluZy1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtc20tMyB7CiAgICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1zbS0zLCAucHktc20tMyB7CiAgICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tMywgLnB4LXNtLTMgewogICAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItc20tMywgLnB5LXNtLTMgewogICAgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXNtLTMsIC5weC1zbS0zIHsKICAgIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS00IHsKICAgIHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtc20tNCwgLnB5LXNtLTQgewogICAgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItc20tNCwgLnB4LXNtLTQgewogICAgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS00LCAucHktc20tNCB7CiAgICBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1zbS00LCAucHgtc20tNCB7CiAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1zbS01IHsKICAgIHBhZGRpbmc6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXNtLTUsIC5weS1zbS01IHsKICAgIHBhZGRpbmctdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1zbS01LCAucHgtc20tNSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1zbS01LCAucHktc20tNSB7CiAgICBwYWRkaW5nLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGwtc20tNSwgLnB4LXNtLTUgewogICAgcGFkZGluZy1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXNtLWF1dG8gewogICAgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1zbS1hdXRvLCAubXktc20tYXV0byB7CiAgICBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tci1zbS1hdXRvLCAubXgtc20tYXV0byB7CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1iLXNtLWF1dG8sIC5teS1zbS1hdXRvIHsKICAgIG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1sLXNtLWF1dG8sIC5teC1zbS1hdXRvIHsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQp9CkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgewogIC5tLW1kLTAgewogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC0wLCAubXktbWQtMCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC0wLCAubXgtbWQtMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTAsIC5teS1tZC0wIHsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTAsIC5teC1tZC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLTEgewogICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC0xLCAubXktbWQtMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1tZC0xLCAubXgtbWQtMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTEsIC5teS1tZC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTEsIC5teC1tZC0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLW1kLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTIsIC5teS1tZC0yIHsKICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtMiwgLm14LW1kLTIgewogICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLW1kLTIsIC5teS1tZC0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtMiwgLm14LW1kLTIgewogICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC0zIHsKICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtMywgLm15LW1kLTMgewogICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbWQtMywgLm14LW1kLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC0zLCAubXktbWQtMyB7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC0zLCAubXgtbWQtMyB7CiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC00IHsKICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1tZC00LCAubXktbWQtNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTQsIC5teC1tZC00IHsKICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC00LCAubXktbWQtNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLW1kLTQsIC5teC1tZC00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbWQtNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LW1kLTUsIC5teS1tZC01IHsKICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLW1kLTUsIC5teC1tZC01IHsKICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWItbWQtNSwgLm15LW1kLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbWQtNSwgLm14LW1kLTUgewogICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtMCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC0wLCAucHktbWQtMCB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAucHItbWQtMCwgLnB4LW1kLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGItbWQtMCwgLnB5LW1kLTAgewogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTAsIC5weC1tZC0wIHsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAucC1tZC0xIHsKICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTEsIC5weS1tZC0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1tZC0xLCAucHgtbWQtMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1tZC0xLCAucHktbWQtMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtMSwgLnB4LW1kLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLW1kLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC0yLCAucHktbWQtMiB7CiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1tZC0yLCAucHgtbWQtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTIsIC5weS1tZC0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTIsIC5weC1tZC0yIHsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLW1kLTMgewogICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtbWQtMywgLnB5LW1kLTMgewogICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTMsIC5weC1tZC0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLW1kLTMsIC5weS1tZC0zIHsKICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1tZC0zLCAucHgtbWQtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtNCB7CiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LW1kLTQsIC5weS1tZC00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLW1kLTQsIC5weC1tZC00IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtNCwgLnB5LW1kLTQgewogICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbWQtNCwgLnB4LW1kLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAtbWQtNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1tZC01LCAucHktbWQtNSB7CiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHItbWQtNSwgLnB4LW1kLTUgewogICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGItbWQtNSwgLnB5LW1kLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLW1kLTUsIC5weC1tZC01IHsKICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubS1tZC1hdXRvIHsKICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXQtbWQtYXV0bywgLm15LW1kLWF1dG8gewogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXItbWQtYXV0bywgLm14LW1kLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1tZC1hdXRvLCAubXktbWQtYXV0byB7CiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1tZC1hdXRvLCAubXgtbWQtYXV0byB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIH0KfQpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsKICAubS1sZy0wIHsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIH0KICAubXQtbGctMCwgLm15LWxnLTAgewogICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAubXItbGctMCwgLm14LWxnLTAgewogICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0wLCAubXktbGctMCB7CiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy0wLCAubXgtbGctMCB7CiAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAubS1sZy0xIHsKICAgIG1hcmdpbjogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctMSwgLm15LWxnLTEgewogICAgbWFyZ2luLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXItbGctMSwgLm14LWxnLTEgewogICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0xLCAubXktbGctMSB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy0xLCAubXgtbGctMSB7CiAgICBtYXJnaW4tbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS1sZy0yIHsKICAgIG1hcmdpbjogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy0yLCAubXktbGctMiB7CiAgICBtYXJnaW4tdG9wOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTIsIC5teC1sZy0yIHsKICAgIG1hcmdpbi1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi1sZy0yLCAubXktbGctMiB7CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLTIsIC5teC1sZy0yIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctMyB7CiAgICBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLTMsIC5teS1sZy0zIHsKICAgIG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLTMsIC5teC1sZy0zIHsKICAgIG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbGctMywgLm15LWxnLTMgewogICAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwtbGctMywgLm14LWxnLTMgewogICAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctNCB7CiAgICBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQtbGctNCwgLm15LWxnLTQgewogICAgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy00LCAubXgtbGctNCB7CiAgICBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWItbGctNCwgLm15LWxnLTQgewogICAgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC1sZy00LCAubXgtbGctNCB7CiAgICBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLWxnLTUgewogICAgbWFyZ2luOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC1sZy01LCAubXktbGctNSB7CiAgICBtYXJnaW4tdG9wOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci1sZy01LCAubXgtbGctNSB7CiAgICBtYXJnaW4tcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLWxnLTUsIC5teS1sZy01IHsKICAgIG1hcmdpbi1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLWxnLTUsIC5teC1sZy01IHsKICAgIG1hcmdpbi1sZWZ0OiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTAgewogICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogIH0KICAucHQtbGctMCwgLnB5LWxnLTAgewogICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTAsIC5weC1sZy0wIHsKICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTAsIC5weS1sZy0wIHsKICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1sZy0wLCAucHgtbGctMCB7CiAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICB9CiAgLnAtbGctMSB7CiAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy0xLCAucHktbGctMSB7CiAgICBwYWRkaW5nLXRvcDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItbGctMSwgLnB4LWxnLTEgewogICAgcGFkZGluZy1yaWdodDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGItbGctMSwgLnB5LWxnLTEgewogICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTEsIC5weC1sZy0xIHsKICAgIHBhZGRpbmctbGVmdDogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1sZy0yIHsKICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQtbGctMiwgLnB5LWxnLTIgewogICAgcGFkZGluZy10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucHItbGctMiwgLnB4LWxnLTIgewogICAgcGFkZGluZy1yaWdodDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy0yLCAucHktbGctMiB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1sZy0yLCAucHgtbGctMiB7CiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucC1sZy0zIHsKICAgIHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LWxnLTMsIC5weS1sZy0zIHsKICAgIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy0zLCAucHgtbGctMyB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi1sZy0zLCAucHktbGctMyB7CiAgICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwtbGctMywgLnB4LWxnLTMgewogICAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTQgewogICAgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC1sZy00LCAucHktbGctNCB7CiAgICBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci1sZy00LCAucHgtbGctNCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTQsIC5weS1sZy00IHsKICAgIHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLWxnLTQsIC5weC1sZy00IHsKICAgIHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLWxnLTUgewogICAgcGFkZGluZzogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHQtbGctNSwgLnB5LWxnLTUgewogICAgcGFkZGluZy10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLWxnLTUsIC5weC1sZy01IHsKICAgIHBhZGRpbmctcmlnaHQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLWxnLTUsIC5weS1sZy01IHsKICAgIHBhZGRpbmctYm90dG9tOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC1sZy01LCAucHgtbGctNSB7CiAgICBwYWRkaW5nLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm0tbGctYXV0byB7CiAgICBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm10LWxnLWF1dG8sIC5teS1sZy1hdXRvIHsKICAgIG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsKICB9CiAgLm1yLWxnLWF1dG8sIC5teC1sZy1hdXRvIHsKICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWItbGctYXV0bywgLm15LWxnLWF1dG8gewogICAgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIH0KICAubWwtbGctYXV0bywgLm14LWxnLWF1dG8gewogICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC5tLXhsLTAgewogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC0wLCAubXkteGwtMCB7CiAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC0wLCAubXgteGwtMCB7CiAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTAsIC5teS14bC0wIHsKICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTAsIC5teC14bC0wIHsKICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgfQogIC5tLXhsLTEgewogICAgbWFyZ2luOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC0xLCAubXkteGwtMSB7CiAgICBtYXJnaW4tdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tci14bC0xLCAubXgteGwtMSB7CiAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTEsIC5teS14bC0xIHsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTEsIC5teC14bC0xIHsKICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tLXhsLTIgewogICAgbWFyZ2luOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLTIsIC5teS14bC0yIHsKICAgIG1hcmdpbi10b3A6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtMiwgLm14LXhsLTIgewogICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1iLXhsLTIsIC5teS14bC0yIHsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubWwteGwtMiwgLm14LXhsLTIgewogICAgbWFyZ2luLWxlZnQ6IDAuNXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC0zIHsKICAgIG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXQteGwtMywgLm15LXhsLTMgewogICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubXIteGwtMywgLm14LXhsLTMgewogICAgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC0zLCAubXkteGwtMyB7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC0zLCAubXgteGwtMyB7CiAgICBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC00IHsKICAgIG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tdC14bC00LCAubXkteGwtNCB7CiAgICBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTQsIC5teC14bC00IHsKICAgIG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC00LCAubXkteGwtNCB7CiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm1sLXhsLTQsIC5teC14bC00IHsKICAgIG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLm0teGwtNSB7CiAgICBtYXJnaW46IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm10LXhsLTUsIC5teS14bC01IHsKICAgIG1hcmdpbi10b3A6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLm1yLXhsLTUsIC5teC14bC01IHsKICAgIG1hcmdpbi1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWIteGwtNSwgLm15LXhsLTUgewogICAgbWFyZ2luLWJvdHRvbTogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubWwteGwtNSwgLm14LXhsLTUgewogICAgbWFyZ2luLWxlZnQ6IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtMCB7CiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgfQogIC5wdC14bC0wLCAucHkteGwtMCB7CiAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogIH0KICAucHIteGwtMCwgLnB4LXhsLTAgewogICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogIH0KICAucGIteGwtMCwgLnB5LXhsLTAgewogICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsKICB9CiAgLnBsLXhsLTAsIC5weC14bC0wIHsKICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogIH0KICAucC14bC0xIHsKICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTEsIC5weS14bC0xIHsKICAgIHBhZGRpbmctdG9wOiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci14bC0xLCAucHgteGwtMSB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wYi14bC0xLCAucHkteGwtMSB7CiAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtMSwgLnB4LXhsLTEgewogICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTIgewogICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC14bC0yLCAucHkteGwtMiB7CiAgICBwYWRkaW5nLXRvcDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wci14bC0yLCAucHgteGwtMiB7CiAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTIsIC5weS14bC0yIHsKICAgIHBhZGRpbmctYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXhsLTIsIC5weC14bC0yIHsKICAgIHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wLXhsLTMgewogICAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OwogIH0KICAucHQteGwtMywgLnB5LXhsLTMgewogICAgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTMsIC5weC14bC0zIHsKICAgIHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnBiLXhsLTMsIC5weS14bC0zIHsKICAgIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wbC14bC0zLCAucHgteGwtMyB7CiAgICBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtNCB7CiAgICBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnB0LXhsLTQsIC5weS14bC00IHsKICAgIHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnByLXhsLTQsIC5weC14bC00IHsKICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtNCwgLnB5LXhsLTQgewogICAgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OwogIH0KICAucGwteGwtNCwgLnB4LXhsLTQgewogICAgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsKICB9CiAgLnAteGwtNSB7CiAgICBwYWRkaW5nOiAzcmVtICFpbXBvcnRhbnQ7CiAgfQogIC5wdC14bC01LCAucHkteGwtNSB7CiAgICBwYWRkaW5nLXRvcDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucHIteGwtNSwgLnB4LXhsLTUgewogICAgcGFkZGluZy1yaWdodDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAucGIteGwtNSwgLnB5LXhsLTUgewogICAgcGFkZGluZy1ib3R0b206IDNyZW0gIWltcG9ydGFudDsKICB9CiAgLnBsLXhsLTUsIC5weC14bC01IHsKICAgIHBhZGRpbmctbGVmdDogM3JlbSAhaW1wb3J0YW50OwogIH0KICAubS14bC1hdXRvIHsKICAgIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXQteGwtYXV0bywgLm15LXhsLWF1dG8gewogICAgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OwogIH0KICAubXIteGwtYXV0bywgLm14LXhsLWF1dG8gewogICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tYi14bC1hdXRvLCAubXkteGwtYXV0byB7CiAgICBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7CiAgfQogIC5tbC14bC1hdXRvLCAubXgteGwtYXV0byB7CiAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogIH0KfQoudGV4dC1tb25vc3BhY2UgewogIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICJMaWJlcmF0aW9uIE1vbm8iLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7Cn0KLnRleHQtanVzdGlmeSB7CiAgdGV4dC1hbGlnbjoganVzdGlmeSAhaW1wb3J0YW50Owp9Ci50ZXh0LW5vd3JhcCB7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50Owp9Ci50ZXh0LXRydW5jYXRlIHsKICBvdmVyZmxvdzogaGlkZGVuOwogIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLnRleHQtbGVmdCB7CiAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50Owp9Ci50ZXh0LXJpZ2h0IHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50Owp9Ci50ZXh0LWNlbnRlciB7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7CiAgLnRleHQtc20tbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXNtLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LXNtLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgLnRleHQtbWQtbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LW1kLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LW1kLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7CiAgLnRleHQtbGctbGVmdCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LWxnLXJpZ2h0IHsKICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7CiAgfQogIC50ZXh0LWxnLWNlbnRlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICB9Cn0KQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgewogIC50ZXh0LXhsLWxlZnQgewogICAgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OwogIH0KICAudGV4dC14bC1yaWdodCB7CiAgICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwogIH0KICAudGV4dC14bC1jZW50ZXIgewogICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgfQp9Ci50ZXh0LWxvd2VyY2FzZSB7CiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSAhaW1wb3J0YW50Owp9Ci50ZXh0LXVwcGVyY2FzZSB7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50Owp9Ci50ZXh0LWNhcGl0YWxpemUgewogIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplICFpbXBvcnRhbnQ7Cn0KLmZvbnQtd2VpZ2h0LWxpZ2h0IHsKICBmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnQ7Cn0KLmZvbnQtd2VpZ2h0LW5vcm1hbCB7CiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50Owp9Ci5mb250LXdlaWdodC1ib2xkIHsKICBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7Cn0KLmZvbnQtaXRhbGljIHsKICBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsKfQoudGV4dC13aGl0ZSB7CiAgY29sb3I6ICNmZmYgIWltcG9ydGFudDsKfQoudGV4dC1wcmltYXJ5IHsKICBjb2xvcjogIzAwN2JmZiAhaW1wb3J0YW50Owp9CmEudGV4dC1wcmltYXJ5OmhvdmVyLCBhLnRleHQtcHJpbWFyeTpmb2N1cyB7CiAgY29sb3I6ICMwMDYyY2MgIWltcG9ydGFudDsKfQoudGV4dC1zZWNvbmRhcnkgewogIGNvbG9yOiAjNmM3NTdkICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LXNlY29uZGFyeTpob3ZlciwgYS50ZXh0LXNlY29uZGFyeTpmb2N1cyB7CiAgY29sb3I6ICM1NDViNjIgIWltcG9ydGFudDsKfQoudGV4dC1zdWNjZXNzIHsKICBjb2xvcjogIzI4YTc0NSAhaW1wb3J0YW50Owp9CmEudGV4dC1zdWNjZXNzOmhvdmVyLCBhLnRleHQtc3VjY2Vzczpmb2N1cyB7CiAgY29sb3I6ICMxZTdlMzQgIWltcG9ydGFudDsKfQoudGV4dC1pbmZvIHsKICBjb2xvcjogIzE3YTJiOCAhaW1wb3J0YW50Owp9CmEudGV4dC1pbmZvOmhvdmVyLCBhLnRleHQtaW5mbzpmb2N1cyB7CiAgY29sb3I6ICMxMTdhOGIgIWltcG9ydGFudDsKfQoudGV4dC13YXJuaW5nIHsKICBjb2xvcjogI2ZmYzEwNyAhaW1wb3J0YW50Owp9CmEudGV4dC13YXJuaW5nOmhvdmVyLCBhLnRleHQtd2FybmluZzpmb2N1cyB7CiAgY29sb3I6ICNkMzllMDAgIWltcG9ydGFudDsKfQoudGV4dC1kYW5nZXIgewogIGNvbG9yOiAjZGMzNTQ1ICFpbXBvcnRhbnQ7Cn0KYS50ZXh0LWRhbmdlcjpob3ZlciwgYS50ZXh0LWRhbmdlcjpmb2N1cyB7CiAgY29sb3I6ICNiZDIxMzAgIWltcG9ydGFudDsKfQoudGV4dC1saWdodCB7CiAgY29sb3I6ICNmOGY5ZmEgIWltcG9ydGFudDsKfQphLnRleHQtbGlnaHQ6aG92ZXIsIGEudGV4dC1saWdodDpmb2N1cyB7CiAgY29sb3I6ICNkYWUwZTUgIWltcG9ydGFudDsKfQoudGV4dC1kYXJrIHsKICBjb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50Owp9CmEudGV4dC1kYXJrOmhvdmVyLCBhLnRleHQtZGFyazpmb2N1cyB7CiAgY29sb3I6ICMxZDIxMjQgIWltcG9ydGFudDsKfQoudGV4dC1ib2R5IHsKICBjb2xvcjogIzIxMjUyOSAhaW1wb3J0YW50Owp9Ci50ZXh0LW11dGVkIHsKICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50Owp9Ci50ZXh0LWJsYWNrLTUwIHsKICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpICFpbXBvcnRhbnQ7Cn0KLnRleHQtd2hpdGUtNTAgewogIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSkgIWltcG9ydGFudDsKfQoudGV4dC1oaWRlIHsKICBmb250OiAwLzAgYTsKICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgdGV4dC1zaGFkb3c6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAwOwp9Ci52aXNpYmxlIHsKICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7Cn0KLmludmlzaWJsZSB7CiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7Cn0KQG1lZGlhIHByaW50IHsKICAqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CiAgfQogIGE6bm90KC5idG4pIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KICBhYmJyW3RpdGxlXTo6YWZ0ZXIgewogICAgY29udGVudDogIiAoIiBhdHRyKHRpdGxlKSAiKSI7CiAgfQogIHByZSB7CiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsKICB9CiAgcHJlLCBibG9ja3F1b3RlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNhZGI1YmQ7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgfQogIHRoZWFkIHsKICAgIGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsKICB9CiAgdHIsIGltZyB7CiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiAgfQogIHAsIGgyLCBoMyB7CiAgICBvcnBoYW5zOiAzOwogICAgd2lkb3dzOiAzOwogIH0KICBoMiwgaDMgewogICAgcGFnZS1icmVhay1hZnRlcjogYXZvaWQ7CiAgfQogIEBwYWdlIHsKICAgIHNpemU6IGEzOwogIH0KICBib2R5IHsKICAgIG1pbi13aWR0aDogOTkycHggIWltcG9ydGFudDsKICB9CiAgLmNvbnRhaW5lciB7CiAgICBtaW4td2lkdGg6IDk5MnB4ICFpbXBvcnRhbnQ7CiAgfQogIC5uYXZiYXIgewogICAgZGlzcGxheTogbm9uZTsKICB9CiAgLmJhZGdlIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgfQogIC50YWJsZSB7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7CiAgfQogIC50YWJsZSB0ZCwgLnRhYmxlIHRoIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYgIWltcG9ydGFudDsKICB9CiAgLnRhYmxlLWJvcmRlcmVkIHRoLCAudGFibGUtYm9yZGVyZWQgdGQgewogICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNiAhaW1wb3J0YW50OwogIH0KICAudGFibGUtZGFyayB7CiAgICBjb2xvcjogaW5oZXJpdDsKICB9CiAgLnRhYmxlLWRhcmsgdGgsIC50YWJsZS1kYXJrIHRkLCAudGFibGUtZGFyayB0aGVhZCB0aCwgLnRhYmxlLWRhcmsgdGJvZHkgKyB0Ym9keSB7CiAgICBib3JkZXItY29sb3I6ICNkZWUyZTY7CiAgfQogIC50YWJsZSAudGhlYWQtZGFyayB0aCB7CiAgICBjb2xvcjogaW5oZXJpdDsKICAgIGJvcmRlci1jb2xvcjogI2RlZTJlNjsKICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/.travis.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[bGFuZ3VhZ2U6IHBocApwaHA6CiAgICAtICI1LjQiCiAgICAtICI1LjUiCiAgICAtICI1LjYiCiAgICAtICI3LjAiCiAgICAtICI3LjEiCiAgICAtICI3LjIiCiAgICAtICI3LjMiCiAgICAtIGhodm0Kc3VkbzogZmFsc2UKZGlzdDogdHJ1c3R5Cm1hdHJpeDoKICAgIGluY2x1ZGU6CiAgICAgICAgLQogICAgICAgICAgICBwaHA6ICI1LjMiCiAgICAgICAgICAgIGRpc3Q6IHByZWNpc2UKICAgICAgICAgICAgc3VkbzogZmFsc2UKYmVmb3JlX3NjcmlwdDogcm0gY29tcG9zZXIubG9jayAmJiBjb21wb3NlciBpbnN0YWxsCnNjcmlwdDogLi92ZW5kb3IvYmluL3BocHVuaXQgLS1jb3ZlcmFnZS1jbG92ZXIgYnVpbGQvY292ZXJhZ2UveG1sCmFmdGVyX3NjcmlwdDogLi92ZW5kb3IvYmluL2NvZGFjeWNvdmVyYWdlIGNsb3ZlciBidWlsZC9jb3ZlcmFnZS94bWwKCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBSZXZpc2lvbiBIaXN0b3J5CgojIyA4LjAKCiMjIyA4LjAuMCAoMjAxNi0wNi0zMCkKCiogU3RvcmUgc291cmNlIENTUyBsaW5lIG51bWJlcnMgaW4gdG9rZW5zIGFuZCBwYXJzaW5nIGV4Y2VwdGlvbnMuCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyMgQmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzCgoqIFVucmVjb3ZlcmFibGUgcGFyc2VyIGVycm9ycyB0aHJvdyBhbiBleGNlcHRpb24gb2YgdHlwZSBgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xTb3VyY2VFeGNlcHRpb25gIGluc3RlYWQgb2YgYFxFeGNlcHRpb25gLgoKIyMjIDguMS4wICgyMDE2LTA3LTE5KQoKKiBDb21tZW50cyBhcmUgbm8gbG9uZ2VyIHNpbGVudGx5IGlnbm9yZWQgYnV0IHN0b3JlZCB3aXRoIHRoZSBvYmplY3Qgd2l0aCB3aGljaCB0aGV5IGFwcGVhciAobm8gcmVuZGVyIHN1cHBvcnQsIHRob3VnaCkuIFRoYW5rcyB0byBARk1Db3J6LgoqIFRoZSBJRSBoYWNrcyB1c2luZyBgXDBgIGFuZCBgXDlgIGNhbiBub3cgYmUgcGFyc2VkIChhbmQgcmVuZGVyZWQpIGluIGxlbmllbnQgbW9kZS4gVGhhbmtzIChhZ2FpbikgdG8gQEZNQ29yei4KKiBNZWRpYSBxdWVyaWVzIHdpdGggb3Igd2l0aG91dCBzcGFjZXMgYmVmb3JlIHRoZSBxdWVyeSBhcmUgcGFyc2VkLiBTdGlsbCBubyAqcmVhbCogcGFyc2luZyBzdXBwb3J0LCB0aG91Z2guIFNvcnJ54oCmCiogUEhQVW5pdCBpcyBub3cgbGlzdGVkIGFzIGEgZGV2LWRlcGVuZGVuY3kgaW4gY29tcG9zZXIuanNvbi4KKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyMgOC4yLjAgKDIwMTgtMDctMTMpCgoqIFN1cHBvcnQgcGFyc2luZyBgY2FsYygpYCwgdGhhbmtzIHRvIEByYXhiZy4KKiBTdXBwb3J0IHBhcnNpbmcgZ3JpZC1saW5lcywgYWdhaW4gdGhhbmtzIHRvIEByYXhiZy4KKiBTdXBwb3J0IHBhcnNpbmcgbGVnYWN5IElFIGZpbHRlcnMgKGBwcm9naWQ6YCkgaW4gbGVuaWVudCBtb2RlLCB0aGFua3MgdG8gQEZNQ29yegoqIFBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyBwYXJzaW5nIGxhcmdlIGZpbGVzLCBhZ2FpbiB0aGFua3MgdG8gQEZNQ29yegoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyA4LjMuMCAoMjAxOS0wMi0yMikKCiogUmVmYWN0b3IgcGFyc2luZyBsb2dpYyB0byBtb3N0bHkgcmVzaWRlIGluIHRoZSBjbGFzcyBmaWxlcyB3aG9zZSBkYXRhIHN0cnVjdHVyZSBpcyB0byBiZSBwYXJzZWQgKHRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYWxsb3cgdXMgdG8gdW5pdC10ZXN0IHNwZWNpZmljIHBhcnRzIG9mIHRoZSBwYXJzaW5nIGxvZ2ljIGluZGl2aWR1YWxseSkuCiogRml4IGVycm9yIGluIHBhcnNpbmcgYGNhbGNgIGV4cGVzc2lvbnMgd2hlbiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBhIG5lZ2F0aXZlIG51bWJlciwgdGhhbmtzIHRvIEByYXhiZy4KKiBTdXBwb3J0IHBhcnNpbmcgQ1NTNCBjb2xvcnMgaW4gaGV4IG5vdGF0aW9uIHdpdGggYWxwaGEgdmFsdWVzLCB0aGFua3MgdG8gQHJheGJnLgoqIFN3YWxsb3cgbW9yZSBlcnJvcnMgaW4gbGVuaWVudCBtb2RlLCB0aGFua3MgdG8gQHJheGJnLgoqIEFsbG93IHNwZWNpZnlpbmcgYXJiaXRyYXJ5IHN0cmluZ3MgdG8gb3V0cHV0IGJlZm9yZSBhbmQgYWZ0ZXIgZGVjbGFyYXRpb24gYmxvY2tzLCB0aGFua3MgdG8gQHdlc3RvbnJ1dGVyLgoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDcuMAoKIyMjIDcuMC4wICgyMDE1LTA4LTI0KQoKKiBDb21wYXRpYmlsaXR5IHdpdGggUEhQIDcuIFdlbGwgdGltZWQsIGVoPwoqICpObyBkZXByZWNhdGlvbnMqCgojIyMjIEJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcwoKKiBUaGUgYFNhYmJlcndvcm1cQ1NTXFZhbHVlXFN0cmluZ2AgY2xhc3MgaGFzIGJlZW4gcmVuYW1lZCB0byBgU2FiYmVyd29ybVxDU1NcVmFsdWVcQ1NTU3RyaW5nYC4KCiMjIyA3LjAuMSAoMjAxNS0xMi0yNSkKCiogTm8gbW9yZSBzdXBwcmVzc2VkIGBFX05PVElDRWAKKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyMgNy4wLjIgKDIwMTYtMDItMTEpCgoqIDE1MCB0aW1lIHBlcmZvcm1hbmNlIGJvb3N0IHRoYW5rcyB0byBAW29zc2lua2luZV0oaHR0cHM6Ly9naXRodWIuY29tL29zc2lua2luZSkKKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyMgNy4wLjMgKDIwMTYtMDQtMjcpCgoqIEZpeGVkIHBhcnNpbmcgZW1wdHkgQ1NTIHdoZW4gbXVsdGlieXRlIGlzIG9mZgoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIDYuMAoKIyMjIDYuMC4wICgyMDE0LTA3LTAzKQoKKiBGb3JtYXQgb3V0cHV0IHVzaW5nIFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdAoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCgojIyMjIERlcHJlY2F0aW9ucwoKKiBUaGUgcGFyc2UoKSBtZXRob2QgcmVwbGFjZXMgX190b1N0cmluZyB3aXRoIGFuIG9wdGlvbmFsIGFyZ3VtZW50IChpbnN0YW5jZSBvZiB0aGUgT3V0cHV0Rm9ybWF0IGNsYXNzKQoKIyMjIDYuMC4xICgyMDE1LTA4LTI0KQoKKiBSZW1vdmUgc29tZSBkZWNsYXJhdGlvbnMgaW4gaW50ZXJmYWNlcyBpbmNvbXBhdGlibGUgd2l0aCBQSFAgNS4zICg8IDUuMy45KQoqICpObyBkZXByZWNhdGlvbnMqCgojIyA1LjAKCiMjIyA1LjAuMCAoMjAxMy0wMy0yMCkKCiogQ29ycmVjdGx5IHBhcnNlIGFsbCBrbm93biBDU1MgMyB1bml0cyAoaW5jbHVkaW5nIEh6IGFuZCBrSHopLgoqIE91dHB1dCBSR0IgY29sb3JzIGluIHNob3J0ICgjYWFhIG9yICNhYmFiYWIpIG5vdGF0aW9uCiogQmUgY2FzZS1pbnNlbnNpdGl2ZSB3aGVuIHBhcnNpbmcgaWRlbnRpZmllcnMuCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyMgQmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzCgoqIGBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxDb2xvcmDigJlzIGBfX3RvU3RyaW5nYCBtZXRob2Qgb3ZlcnJpZGVzIGBDU1NMaXN0YOKAmXMgdG8gbWF5YmUgcmV0dXJuIHNvbWV0aGluZyBvdGhlciB0aGFuIGB0eXBlKHZhbHVlLCDigKYpYCAoc2VlIGFib3ZlKS4KCiMjIyA1LjAuMSAoMjAxMy0wMy0yMCkKCiogSW50ZXJuYWwgY2xlYW51cAoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyA1LjAuMiAoMjAxMy0wMy0yMSkKCiogQ0hBTkdFTE9HLm1kIGZpbGUgYWRkZWQgdG8gZGlzdHJpYnV0aW9uCiogKk5vIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcyoKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMjIDUuMC4zICgyMDEzLTAzLTIxKQoKKiBNb3JlIHNpemUgdW5pdHMgcmVjb2duaXplZAoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyA1LjAuNCAoMjAxMy0wMy0yMSkKCiogRG9u4oCZdCBvdXRwdXQgZmxvYXRzIHdpdGggbG9jYWxlLWF3YXJlIHNlcGFyYXRvciBjaGFycwoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyA1LjAuNSAoMjAxMy0wNC0xNykKCiogSW5pdGlhbCBzdXBwb3J0IGZvciBsZW5pZW50IHBhcnNpbmcgKHNldHRpbmcgdGhpcyBwYXJzZXIgb3B0aW9uIHdpbGwgY2F0Y2ggc29tZSBleGNlcHRpb25zIGludGVybmFsbHkgYW5kIHJlY292ZXIgdGhlIHBhcnNlcuKAmXMgc3RhdGUgYXMgbmVhdGx5IGFzIHBvc3NpYmxlKS4KKiAqTm8gYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzKgoqICpObyBkZXByZWNhdGlvbnMqCgojIyMgNS4wLjYgKDIwMTMtMDUtMzEpCgoqIEZpeCBicm9rZW4gdW5pdCB0ZXN0CiogKk5vIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcyoKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMjIDUuMC43ICgyMDEzLTA4LTA0KQoKKiBGaXggYnJva2VuIGRlY2ltYWwgcG9pbnQgb3V0cHV0IG9wdGltaXphdGlvbgoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyA1LjAuOCAoMjAxMy0wOC0xNSkKCiogTWFrZSBkZWZhdWx0IHNldHRpbmdz4oCZIG11bHRpYnl0ZSBwYXJzaW5nIG9wdGlvbiBkZXBlbmRlbnQgb24gd2hldGhlciBvciBub3QgdGhlIG1ic3RyaW5nIGV4dGVuc2lvbiBpcyBhY3R1YWxseSBpbnN0YWxsZWQuCiogKk5vIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcyoKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMjIDUuMS4wICgyMDEzLTEwLTI0KQoKKiBQZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgYnkgTWljaGFlbCBNIFNsdXNhcnoKKiBNb3JlIHJlc2N1ZSBlbnRyeSBwb2ludHMgZm9yIGxlbmllbnQgcGFyc2luZyAodW5leHBlY3RlZCB0b2tlbnMgYmV0d2VlbiBkZWNsYXJhdGlvbiBibG9ja3MgYW5kIHVuY2xvc2VkIGNvbW1lbnRzKQoqICpObyBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZXMqCiogKk5vIGRlcHJlY2F0aW9ucyoKCiMjIyA1LjEuMSAoMjAxMy0xMC0yOCkKCiogVXBkYXRlZCBDSEFOR0VMT0cubWQgdG8gcmVmbGVjdCBjaGFuZ2VzIHNpbmNlIDUuMC40CiogKk5vIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcyoKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMjIDUuMS4yICgyMDEzLTEwLTMwKQoKKiBSZW1vdmUgdGhlIHVzZSBvZiBjb25zdW1lVW50aWwgaW4gY29tbWVudCBwYXJzaW5nLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHBhcnNlIGNvbW1lbnRzIHN1Y2ggYXMgYC8qKiBQZXJmZWN0bHkgdmFsaWQgKiovYAoqIEFkZCBmciByZWxhdGl2ZSBzaXplIHVuaXQKKiBGaXggc29tZSBpc3N1ZXMgd2l0aCBISFZNCiogKk5vIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcyoKKiAqTm8gZGVwcmVjYXRpb25zKgoKIyMjIDUuMi4wICgyMDE0LTA2LTMwKQoKKiBTdXBwb3J0IHJlbW92aW5nIGEgc2VsZWN0b3IgZnJvbSBhIGRlY2xhcmF0aW9uIGJsb2NrIHVzaW5nIGAkb0Jsb2NrLT5yZW1vdmVTZWxlY3RvcigkbVNlbGVjdG9yKWAKKiBJbnRyb2R1Y2UgYSBzcGVjaWFsaXplZCBleGNlcHRpb24gKFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcT3VwdXRFeGNlcHRpb24pIGZvciBleGNlcHRpb25zIGR1cmluZyBvdXRwdXQgcmVuZGVyaW5nCgoqICpObyBkZXByZWNhdGlvbnMqCgojIyMjIEJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcwoKKiBPdXRwdXR0aW5nIGEgZGVjbGFyYXRpb24gYmxvY2sgdGhhdCBoYXMgbm8gc2VsZWN0b3JzIHRocm93cyBhbiBPdXB1dEV4Y2VwdGlvbiBpbnN0ZWFkIG9mIG91dHB1dHRpbmcgYW4gaW52YWxpZCBgIHvigKZ9YCBpbnRvIHRoZSBDU1MgZG9jdW1lbnQuCgojIyA0LjAKCiMjIyA0LjAuMCAoMjAxMy0wMy0xOSkKCiogU3VwcG9ydCBmb3IgbW9yZSBALXJ1bGVzCiogR2VuZXJpYyBpbnRlcmZhY2UgYFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZWAsIGltcGxlbWVudGVkIGJ5IGFsbCBALXJ1bGUgY2xhc3NlcwoqICpObyBkZXByZWNhdGlvbnMqCgojIyMjIEJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcwoKKiBgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxBdFJ1bGVgIHJlbmFtZWQgdG8gYFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcQXRSdWxlU2V0YAoqIGBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XE1lZGlhUXVlcnlgIHJlbmFtZWQgdG8gYFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcQ1NTTGlzdFxBdFJ1bGVCbG9ja0xpc3RgIHdpdGggZGlmZmVyaW5nIHNlbWFudGljcyBhbmQgQVBJICh3aGljaCBhbHNvIHdvcmtzIGZvciBvdGhlciBibG9jay1saXN0LWJhc2VkIEAtcnVsZXMgbGlrZSBgQHN1cHBvcnRzYCkuCgojIyAzLjAKCiMjIyAzLjAuMCAoMjAxMy0wMy0wNikKCiogU3VwcG9ydCBmb3IgbGVuaWVudCBwYXJzaW5nIChvbiBieSBkZWZhdWx0KQoqICpObyBkZXByZWNhdGlvbnMqCgojIyMjIEJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlcwoKKiBBbGwgcHJvcGVydGllcyAobGlrZSB3aGV0aGVyIG9yIG5vdCB0byB1c2UgYG1iX2AtZnVuY3Rpb25zLCB3aGljaCBkZWZhdWx0IGNoYXJzZXQgdG8gdXNlIGFuZCDigJMgbmV3IOKAkyB3aGV0aGVyIG9yIG5vdCB0byBiZSBmb3JnaXZpbmcgd2hlbiBwYXJzaW5nKSBhcmUgbm93IGVuY2Fwc3VsYXRlZCBpbiBhbiBpbnN0YW5jZSBvZiBgU2FiYmVyd29ybVxDU1NcU2V0dGluZ3NgIHdoaWNoIGNhbiBiZSBwYXNzZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBgU2FiYmVyd29ybVxDU1NcUGFyc2VyLT5fX2NvbnN0cnVjdCgpYC4KKiBTcGVjaWZ5aW5nIGEgY2hhcnNldCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGBTYWJiZXJ3b3JtXENTU1xQYXJzZXItPl9fY29uc3RydWN0KClgIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFVzZSBgU2FiYmVyd29ybVxDU1NcU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoRGVmYXVsdENoYXJzZXQoJ3NvbWUtY2hhcnNldCcpYCBpbnN0ZWFkLgoqIFNldHRpbmcgYFNhYmJlcndvcm1cQ1NTXFBhcnNlci0+YlVzZU1iRnVuY3Rpb25zYCBoYXMgbm8gZWZmZWN0LiBVc2UgYFNhYmJlcndvcm1cQ1NTXFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aE11bHRpYnl0ZVN1cHBvcnQodHJ1ZS9mYWxzZSlgIGluc3RlYWQuCiogYFNhYmJlcndvcm1cQ1NTXFBhcnNlci0+cGFyc2UoKWAgbWF5IHRocm93IGEgYFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uYCB3aGVuIGluIHN0cmljdCBwYXJzaW5nIG1vZGUuCgojIyAyLjAKCiMjIyAyLjAuMCAoMjAxMy0wMS0yOSkKCiogQWxsb3cgbXVsdGlwbGUgcnVsZXMgb2YgdGhlIHNhbWUgdHlwZSBwZXIgcnVsZSBzZXQKCiMjIyMgQmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2VzCgoqIGBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0LT5nZXRSdWxlcygpYCByZXR1cm5zIGFuIGluZGV4LWJhc2VkIGFycmF5IGluc3RlYWQgb2YgYW4gYXNzb2NpYXRpdmUgYXJyYXkuIFVzZSBgU2FiYmVyd29ybVxDU1NcUnVsZVNldC0+Z2V0UnVsZXNBc3NvYygpYCAod2hpY2ggZWxpbWluYXRlcyBkdXBsaWNhdGUgcnVsZXMgYW5kIGxldHMgdGhlIGxhdGVyIHJ1bGUgb2YgdGhlIHNhbWUgbmFtZSB3aW4pLgoqIGBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0LT5yZW1vdmVSdWxlKClgIHdvcmtzIGFzIGl0IGRpZCBiZWZvcmUgZXhjZXB0IHdoZW4gcGFzc2VkIGFuIGluc3RhbmNlIG9mIGBTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGVgLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkIG9ubHkgcmVtb3ZlIHRoZSBleGFjdCBydWxlIGdpdmVuIGluc3RlYWQgb2YgYWxsIHRoZSBydWxlcyBvZiB0aGUgc2FtZSB0eXBlLiBUbyBnZXQgdGhlIG9sZCBiZWhhdmlvdXIsIHVzZSBgU2FiYmVyd29ybVxDU1NcUnVsZVNldC0+cmVtb3ZlUnVsZSgkb1J1bGUtPmdldFJ1bGUoKWA7CgojIyAxLjAKCkluaXRpYWwgcmVsZWFzZSBvZiBhIHN0YWJsZSBwdWJsaWMgQVBJLgoKIyMgMC45CgpMYXN0IHZlcnNpb24gbm90IHRvIHVzZSBQU1ItMCBwcm9qZWN0IG9yZ2FuaXphdGlvbiBzZW1hbnRpY3MuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic2FiYmVyd29ybS9waHAtY3NzLXBhcnNlciIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJQYXJzZXIgZm9yIENTUyBGaWxlcyB3cml0dGVuIGluIFBIUCIsCiAgICAia2V5d29yZHMiOiBbInBhcnNlciIsICJjc3MiLCAic3R5bGVzaGVldCJdLAogICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuc2FiYmVyd29ybS5jb20vYmxvZy8yMDEwLzYvMTAvcGhwLWNzcy1wYXJzZXIiLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsibmFtZSI6ICJSYXBoYWVsIFNjaHdlaWtlcnQifQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj01LjMuMiIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC44IiwKICAgICAgICAiY29kYWN5L2NvdmVyYWdlIjogIl4xLjQiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItMCI6IHsgIlNhYmJlcndvcm1cXENTUyI6ICJsaWIvIiB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNpbnN0YWxsaW5nLWRlcGVuZGVuY2llcyIsCiAgICAgICAgIlRoaXMgZmlsZSBpcyBAZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkiCiAgICBdLAogICAgImNvbnRlbnQtaGFzaCI6ICJhMDlhMGUwOWY1YTEzNTZhMmM4MzNlYzEyM2UwOTU5MyIsCiAgICAicGFja2FnZXMiOiBbXSwKICAgICJwYWNrYWdlcy1kZXYiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJjb2RhY3kvY292ZXJhZ2UiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuMiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vY29kYWN5L3BocC1jb2RhY3ktY292ZXJhZ2UuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDk4OGNkMDk4ZGI0ZDU3ODY4MWJmZDMxNzYwNzE5MzFhZDQ3NTE1MCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2NvZGFjeS9waHAtY29kYWN5LWNvdmVyYWdlL3ppcGJhbGwvNDk4OGNkMDk4ZGI0ZDU3ODY4MWJmZDMxNzYwNzE5MzFhZDQ3NTE1MCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQ5ODhjZDA5OGRiNGQ1Nzg2ODFiZmQzMTc2MDcxOTMxYWQ0NzUxNTAiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImdpdG9ub215L2dpdGxpYiI6ICI+PTEuMCIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvY29uc29sZSI6ICJ+Mi41fH4zLjB8fjQuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+Ni41IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiYmluIjogWwogICAgICAgICAgICAgICAgImJpbi9jb2RhY3ljb3ZlcmFnZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkpha29iIFB1cGtlIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiamFrb2IucHVwa2VAZ21haWwuY29tIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2VuZHMgUEhQIHRlc3QgY292ZXJhZ2UgaW5mb3JtYXRpb24gdG8gQ29kYWN5LiIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vY29kYWN5L3BocC1jb2RhY3ktY292ZXJhZ2UiLAogICAgICAgICAgICAidGltZSI6ICIyMDE4LTAzLTIyVDE2OjQzOjM5KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJkb2N0cmluZS9pbnN0YW50aWF0b3IiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZG9jdHJpbmUvaW5zdGFudGlhdG9yLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjE4NWI4ODY4YWE5YmY3MTU5ZjVmOTUzZWQ1YWZiMmQ3ZmNkYzNiZGEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9kb2N0cmluZS9pbnN0YW50aWF0b3IvemlwYmFsbC8xODViODg2OGFhOWJmNzE1OWY1Zjk1M2VkNWFmYjJkN2ZjZGMzYmRhIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMTg1Yjg4NjhhYTliZjcxNTlmNWY5NTNlZDVhZmIyZDdmY2RjM2JkYSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl43LjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJhdGhsZXRpYy9hdGhsZXRpYyI6ICJ+MC4xLjgiLAogICAgICAgICAgICAgICAgImV4dC1wZG8iOiAiKiIsCiAgICAgICAgICAgICAgICAiZXh0LXBoYXIiOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl42LjIuMyIsCiAgICAgICAgICAgICAgICAic3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlciI6ICJeMy4wLjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMi54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJEb2N0cmluZVxcSW5zdGFudGlhdG9yXFwiOiAic3JjL0RvY3RyaW5lL0luc3RhbnRpYXRvci8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNYXJjbyBQaXZldHRhIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAib2NyYW1pdXNAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL29jcmFtaXVzLmdpdGh1Yi5jb20vIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBzbWFsbCwgbGlnaHR3ZWlnaHQgdXRpbGl0eSB0byBpbnN0YW50aWF0ZSBvYmplY3RzIGluIFBIUCB3aXRob3V0IGludm9raW5nIHRoZWlyIGNvbnN0cnVjdG9ycyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZG9jdHJpbmUvaW5zdGFudGlhdG9yIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNvbnN0cnVjdG9yIiwKICAgICAgICAgICAgICAgICJpbnN0YW50aWF0ZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wNy0yMlQxMTo1ODozNiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ2l0b25vbXkvZ2l0bGliIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuMC40IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9naXRvbm9teS9naXRsaWIuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOTMyYTk2MDIyMWFlMzQ4NGEzZTgyNTUzYjNiZTQ3OGU1NmJlYjY4ZCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2dpdG9ub215L2dpdGxpYi96aXBiYWxsLzkzMmE5NjAyMjFhZTM0ODRhM2U4MjU1M2IzYmU0NzhlNTZiZWI2OGQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MzJhOTYwMjIxYWUzNDg0YTNlODI1NTNiM2JlNDc4ZTU2YmViNjhkIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuMyB8fCBeNy4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3Byb2Nlc3MiOiAiXjIuM3xeMy4wfF40LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuOC4zNXxeNS43IiwKICAgICAgICAgICAgICAgICJwc3IvbG9nIjogIl4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiQWRkIHNvbWUgbG9nIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkdpdG9ub215XFxHaXRcXCI6ICJzcmMvR2l0b25vbXkvR2l0LyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsZXhhbmRyZSBTYWxvbcOpIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJlLnNhbG9tZUBnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vYWxleGFuZHJlLXNhbG9tZS5mciIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSnVsaWVuIERJRElFUiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImdlbnpvLndtQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuamRpZGllci5uZXQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJMaWJyYXJ5IGZvciBhY2Nlc3NpbmcgZ2l0IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9naXRvbm9teS5jb20iLAogICAgICAgICAgICAidGltZSI6ICIyMDE4LTA0LTIyVDE5OjU1OjM2KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwaHBkb2N1bWVudG9yL3JlZmxlY3Rpb24tY29tbW9uIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocERvY3VtZW50b3IvUmVmbGVjdGlvbkNvbW1vbi5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyMWJkZWI1ZjY1ZDdlYmY5ZjQzYjFiMjVkNDA0Zjg3ZGVhYjViZmI2IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwRG9jdW1lbnRvci9SZWZsZWN0aW9uQ29tbW9uL3ppcGJhbGwvMjFiZGViNWY2NWQ3ZWJmOWY0M2IxYjI1ZDQwNGY4N2RlYWI1YmZiNiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjIxYmRlYjVmNjVkN2ViZjlmNDNiMWIyNWQ0MDRmODdkZWFiNWJmYjYiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuNSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC42IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAicGhwRG9jdW1lbnRvclxcUmVmbGVjdGlvblxcIjogWwogICAgICAgICAgICAgICAgICAgICAgICAic3JjIgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkphYXAgdmFuIE90dGVyZGlqayIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm9wZW5zb3VyY2VAaWphYXAubmwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gcmVmbGVjdGlvbiBjbGFzc2VzIHVzZWQgYnkgcGhwZG9jdW1lbnRvciB0byByZWZsZWN0IHRoZSBjb2RlIHN0cnVjdHVyZSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vd3d3LnBocGRvYy5vcmciLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiRlFTRU4iLAogICAgICAgICAgICAgICAgInBocERvY3VtZW50b3IiLAogICAgICAgICAgICAgICAgInBocGRvYyIsCiAgICAgICAgICAgICAgICAicmVmbGVjdGlvbiIsCiAgICAgICAgICAgICAgICAic3RhdGljIGFuYWx5c2lzIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE3LTA5LTExVDE4OjAyOjE5KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwaHBkb2N1bWVudG9yL3JlZmxlY3Rpb24tZG9jYmxvY2siLAogICAgICAgICAgICAidmVyc2lvbiI6ICI0LjMuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwRG9jdW1lbnRvci9SZWZsZWN0aW9uRG9jQmxvY2suZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOTRmZDAwMDEyMzJlNDcxMjlkZDM1MDQxODlmYTFjNzIyNTAxMGQwOCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocERvY3VtZW50b3IvUmVmbGVjdGlvbkRvY0Jsb2NrL3ppcGJhbGwvOTRmZDAwMDEyMzJlNDcxMjlkZDM1MDQxODlmYTFjNzIyNTAxMGQwOCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjk0ZmQwMDAxMjMyZTQ3MTI5ZGQzNTA0MTg5ZmExYzcyMjUwMTBkMDgiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICJeNy4wIiwKICAgICAgICAgICAgICAgICJwaHBkb2N1bWVudG9yL3JlZmxlY3Rpb24tY29tbW9uIjogIl4xLjAuMCIsCiAgICAgICAgICAgICAgICAicGhwZG9jdW1lbnRvci90eXBlLXJlc29sdmVyIjogIl4wLjQuMCIsCiAgICAgICAgICAgICAgICAid2VibW96YXJ0L2Fzc2VydCI6ICJeMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiZG9jdHJpbmUvaW5zdGFudGlhdG9yIjogIn4xLjAuNSIsCiAgICAgICAgICAgICAgICAibW9ja2VyeS9tb2NrZXJ5IjogIl4xLjAiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNi40IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICI0LngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgInBocERvY3VtZW50b3JcXFJlZmxlY3Rpb25cXCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTWlrZSB2YW4gUmllbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm1lQG1pa2V2YW5yaWVsLmNvbSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIldpdGggdGhpcyBjb21wb25lbnQsIGEgbGlicmFyeSBjYW4gcHJvdmlkZSBzdXBwb3J0IGZvciBhbm5vdGF0aW9ucyB2aWEgRG9jQmxvY2tzIG9yIG90aGVyd2lzZSByZXRyaWV2ZSBpbmZvcm1hdGlvbiB0aGF0IGlzIGVtYmVkZGVkIGluIGEgRG9jQmxvY2suIiwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0xMS0zMFQwNzoxNDoxNyswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGhwZG9jdW1lbnRvci90eXBlLXJlc29sdmVyIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMC40LjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocERvY3VtZW50b3IvVHlwZVJlc29sdmVyLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjljOTc3NzA4OTk1OTU0Nzg0NzI2ZTI1ZDBjZDFkZGRmNGU2NWIwZjciCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHBEb2N1bWVudG9yL1R5cGVSZXNvbHZlci96aXBiYWxsLzljOTc3NzA4OTk1OTU0Nzg0NzI2ZTI1ZDBjZDFkZGRmNGU2NWIwZjciLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5Yzk3NzcwODk5NTk1NDc4NDcyNmUyNWQwY2QxZGRkZjRlNjViMGY3IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuNSB8fCBeNy4wIiwKICAgICAgICAgICAgICAgICJwaHBkb2N1bWVudG9yL3JlZmxlY3Rpb24tY29tbW9uIjogIl4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJtb2NrZXJ5L21vY2tlcnkiOiAiXjAuOS40IiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjUuMnx8XjQuOC4yNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4wLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgInBocERvY3VtZW50b3JcXFJlZmxlY3Rpb25cXCI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTWlrZSB2YW4gUmllbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm1lQG1pa2V2YW5yaWVsLmNvbSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wNy0xNFQxNDoyNzowMiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGhwc3BlYy9wcm9waGVjeSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNy42IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHBzcGVjL3Byb3BoZWN5LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjMzYTdlM2M0ZmRhNTRlOTEyZmY2MzM4YzQ4ODIzYmQ1YzBmMGI3MTIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHBzcGVjL3Byb3BoZWN5L3ppcGJhbGwvMzNhN2UzYzRmZGE1NGU5MTJmZjYzMzhjNDg4MjNiZDVjMGYwYjcxMiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjMzYTdlM2M0ZmRhNTRlOTEyZmY2MzM4YzQ4ODIzYmQ1YzBmMGI3MTIiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImRvY3RyaW5lL2luc3RhbnRpYXRvciI6ICJeMS4wLjIiLAogICAgICAgICAgICAgICAgInBocCI6ICJeNS4zfF43LjAiLAogICAgICAgICAgICAgICAgInBocGRvY3VtZW50b3IvcmVmbGVjdGlvbi1kb2NibG9jayI6ICJeMi4wfF4zLjAuMnxeNC4wIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vY29tcGFyYXRvciI6ICJeMS4xfF4yLjB8XjMuMCIsCiAgICAgICAgICAgICAgICAic2ViYXN0aWFuL3JlY3Vyc2lvbi1jb250ZXh0IjogIl4xLjB8XjIuMHxeMy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwc3BlYy9waHBzcGVjIjogIl4yLjV8XjMuMiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjguMzUgfHwgXjUuNyB8fCBeNi41IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjcueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItMCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHJvcGhlY3lcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiS29uc3RhbnRpbiBLdWRyeWFzaG92IiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZXZlci56ZXRAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL2V2ZXJ6ZXQuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNYXJjZWxsbyBEdWFydGUiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtYXJjZWxsby5kdWFydGVAZ21haWwuY29tIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSGlnaGx5IG9waW5pb25hdGVkIG1vY2tpbmcgZnJhbWV3b3JrIGZvciBQSFAgNS4zKyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwc3BlYy9wcm9waGVjeSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJEb3VibGUiLAogICAgICAgICAgICAgICAgIkR1bW15IiwKICAgICAgICAgICAgICAgICJmYWtlIiwKICAgICAgICAgICAgICAgICJtb2NrIiwKICAgICAgICAgICAgICAgICJzcHkiLAogICAgICAgICAgICAgICAgInN0dWIiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTgtMDQtMThUMTM6NTc6MjQrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBocHVuaXQvcGhwLWNvZGUtY292ZXJhZ2UiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuNCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwLWNvZGUtY292ZXJhZ2UuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWFiZjY4YjQ3NmFjN2QwZjczNzkzYWFkYTA2MGYxYzFhOWJmODk3OSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL3BocC1jb2RlLWNvdmVyYWdlL3ppcGJhbGwvZWFiZjY4YjQ3NmFjN2QwZjczNzkzYWFkYTA2MGYxYzFhOWJmODk3OSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImVhYmY2OGI0NzZhYzdkMGY3Mzc5M2FhZGEwNjBmMWMxYTliZjg5NzkiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocC1maWxlLWl0ZXJhdG9yIjogIn4xLjMiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwLXRleHQtdGVtcGxhdGUiOiAifjEuMiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHAtdG9rZW4tc3RyZWFtIjogIn4xLjMiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9lbnZpcm9ubWVudCI6ICJeMS4zLjIiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi92ZXJzaW9uIjogIn4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJleHQteGRlYnVnIjogIj49Mi4xLjQiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWRvbSI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQteGRlYnVnIjogIj49Mi4yLjEiLAogICAgICAgICAgICAgICAgImV4dC14bWx3cml0ZXIiOiAiKiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMi4yLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzYkBzZWJhc3RpYW4tYmVyZ21hbm4uZGUiLAogICAgICAgICAgICAgICAgICAgICJyb2xlIjogImxlYWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJMaWJyYXJ5IHRoYXQgcHJvdmlkZXMgY29sbGVjdGlvbiwgcHJvY2Vzc2luZywgYW5kIHJlbmRlcmluZyBmdW5jdGlvbmFsaXR5IGZvciBQSFAgY29kZSBjb3ZlcmFnZSBpbmZvcm1hdGlvbi4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocC1jb2RlLWNvdmVyYWdlIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNvdmVyYWdlIiwKICAgICAgICAgICAgICAgICJ0ZXN0aW5nIiwKICAgICAgICAgICAgICAgICJ4dW5pdCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0xMC0wNlQxNTo0NzowMCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGhwdW5pdC9waHAtZmlsZS1pdGVyYXRvciIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC41IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtZmlsZS1pdGVyYXRvci5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3MzBiMDFiYzNlODY3MjM3ZWFhYzM1NWUwNmEzNmI4NWRkOTNhOGI0IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vcGhwLWZpbGUtaXRlcmF0b3IvemlwYmFsbC83MzBiMDFiYzNlODY3MjM3ZWFhYzM1NWUwNmEzNmI4NWRkOTNhOGI0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNzMwYjAxYmMzZTg2NzIzN2VhYWMzNTVlMDZhMzZiODVkZDkzYThiNCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2JAc2ViYXN0aWFuLWJlcmdtYW5uLmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJsZWFkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlsdGVySXRlcmF0b3IgaW1wbGVtZW50YXRpb24gdGhhdCBmaWx0ZXJzIGZpbGVzIGJhc2VkIG9uIGEgbGlzdCBvZiBzdWZmaXhlcy4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocC1maWxlLWl0ZXJhdG9yLyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJmaWxlc3lzdGVtIiwKICAgICAgICAgICAgICAgICJpdGVyYXRvciIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0xMS0yN1QxMzo1MjowOCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGhwdW5pdC9waHAtdGV4dC10ZW1wbGF0ZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtdGV4dC10ZW1wbGF0ZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIzMWY4YjcxN2U1MWQ5YTJhZmNhNmM5ZjA0NmY1ZDY5ZmMyN2M4Njg2IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vcGhwLXRleHQtdGVtcGxhdGUvemlwYmFsbC8zMWY4YjcxN2U1MWQ5YTJhZmNhNmM5ZjA0NmY1ZDY5ZmMyN2M4Njg2IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMzFmOGI3MTdlNTFkOWEyYWZjYTZjOWYwNDZmNWQ2OWZjMjdjODY4NiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzZWJhc3RpYW5AcGhwdW5pdC5kZSIsCiAgICAgICAgICAgICAgICAgICAgInJvbGUiOiAibGVhZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSB0ZW1wbGF0ZSBlbmdpbmUuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtdGV4dC10ZW1wbGF0ZS8iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAidGVtcGxhdGUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDYtMjFUMTM6NTA6MzQrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBocHVuaXQvcGhwLXRpbWVyIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjkiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocC10aW1lci5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIzZGNmMzhjYTcyYjE1OGJhZjBiYzI0NWU5MTg0ZDNmZGZmYTljNDZmIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vcGhwLXRpbWVyL3ppcGJhbGwvM2RjZjM4Y2E3MmIxNThiYWYwYmMyNDVlOTE4NGQzZmRmZmE5YzQ2ZiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjNkY2YzOGNhNzJiMTU4YmFmMGJjMjQ1ZTkxODRkM2ZkZmZhOWM0NmYiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICJeNS4zLjMgfHwgXjcuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC44LjM1IHx8IF41LjcgfHwgXjYuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4wLWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2JAc2ViYXN0aWFuLWJlcmdtYW5uLmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJsZWFkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVXRpbGl0eSBjbGFzcyBmb3IgdGltaW5nIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtdGltZXIvIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgInRpbWVyIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE3LTAyLTI2VDExOjEwOjQwKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwaHB1bml0L3BocC10b2tlbi1zdHJlYW0iLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuMTIiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocC10b2tlbi1zdHJlYW0uZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMWNlOTBiYTI3YzQyZTRlNDRlNmQ4NDU4MjQxNDY2MzgwYjUxZmExNiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL3BocC10b2tlbi1zdHJlYW0vemlwYmFsbC8xY2U5MGJhMjdjNDJlNGU0NGU2ZDg0NTgyNDE0NjYzODBiNTFmYTE2IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMWNlOTBiYTI3YzQyZTRlNDRlNmQ4NDU4MjQxNDY2MzgwYjUxZmExNiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LXRva2VuaXplciI6ICIqIiwKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjQtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzZWJhc3RpYW5AcGhwdW5pdC5kZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIldyYXBwZXIgYXJvdW5kIFBIUCdzIHRva2VuaXplciBleHRlbnNpb24uIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtdG9rZW4tc3RyZWFtLyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJ0b2tlbml6ZXIiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMTItMDRUMDg6NTU6MTMrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBocHVuaXQvcGhwdW5pdCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjQuOC4zNiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0NjAyM2RlOWE5MWVlYzdkZmIwNmNjNTZjYjRlMjYwMDE3Mjk4NTE3IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdC96aXBiYWxsLzQ2MDIzZGU5YTkxZWVjN2RmYjA2Y2M1NmNiNGUyNjAwMTcyOTg1MTciLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0NjAyM2RlOWE5MWVlYzdkZmIwNmNjNTZjYjRlMjYwMDE3Mjk4NTE3IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtZG9tIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1wY3JlIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1yZWZsZWN0aW9uIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1zcGwiOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiLAogICAgICAgICAgICAgICAgInBocHNwZWMvcHJvcGhlY3kiOiAiXjEuMy4xIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocC1jb2RlLWNvdmVyYWdlIjogIn4yLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwLWZpbGUtaXRlcmF0b3IiOiAifjEuNCIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHAtdGV4dC10ZW1wbGF0ZSI6ICJ+MS4yIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocC10aW1lciI6ICJeMS4wLjYiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdC1tb2NrLW9iamVjdHMiOiAifjIuMyIsCiAgICAgICAgICAgICAgICAic2ViYXN0aWFuL2NvbXBhcmF0b3IiOiAifjEuMi4yIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vZGlmZiI6ICJ+MS4yIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vZW52aXJvbm1lbnQiOiAifjEuMyIsCiAgICAgICAgICAgICAgICAic2ViYXN0aWFuL2V4cG9ydGVyIjogIn4xLjIiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9nbG9iYWwtc3RhdGUiOiAifjEuMCIsCiAgICAgICAgICAgICAgICAic2ViYXN0aWFuL3ZlcnNpb24iOiAifjEuMCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS95YW1sIjogIn4yLjF8fjMuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHAtaW52b2tlciI6ICJ+MS4xIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiYmluIjogWwogICAgICAgICAgICAgICAgInBocHVuaXQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjQuOC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2ViYXN0aWFuQHBocHVuaXQuZGUiLAogICAgICAgICAgICAgICAgICAgICJyb2xlIjogImxlYWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgUEhQIFVuaXQgVGVzdGluZyBmcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vcGhwdW5pdC5kZS8iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAicGhwdW5pdCIsCiAgICAgICAgICAgICAgICAidGVzdGluZyIsCiAgICAgICAgICAgICAgICAieHVuaXQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDYtMjFUMDg6MDc6MTIrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBocHVuaXQvcGhwdW5pdC1tb2NrLW9iamVjdHMiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjMuOCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdC1tb2NrLW9iamVjdHMuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYWM4ZTdhM2RiMzU3MzhkNTZlZTlhNzZlNzhhNGUwM2Q5NzYyODk4MyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL3BocHVuaXQtbW9jay1vYmplY3RzL3ppcGJhbGwvYWM4ZTdhM2RiMzU3MzhkNTZlZTlhNzZlNzhhNGUwM2Q5NzYyODk4MyIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImFjOGU3YTNkYjM1NzM4ZDU2ZWU5YTc2ZTc4YTRlMDNkOTc2Mjg5ODMiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImRvY3RyaW5lL2luc3RhbnRpYXRvciI6ICJeMS4wLjIiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocC10ZXh0LXRlbXBsYXRlIjogIn4xLjIiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9leHBvcnRlciI6ICJ+MS4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1zb2FwIjogIioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuMy54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2JAc2ViYXN0aWFuLWJlcmdtYW5uLmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJsZWFkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTW9jayBPYmplY3QgbGlicmFyeSBmb3IgUEhQVW5pdCIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdC1tb2NrLW9iamVjdHMvIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIm1vY2siLAogICAgICAgICAgICAgICAgInh1bml0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE1LTEwLTAyVDA2OjUxOjQwKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzZWJhc3RpYW4vY29tcGFyYXRvciIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi40IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9jb21wYXJhdG9yLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjJiNzQyNGI1NWY1MDQ3YjQ3YWM2ZTVjY2IyMGIyYWVhNDAxMWQ5YmUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zZWJhc3RpYW5iZXJnbWFubi9jb21wYXJhdG9yL3ppcGJhbGwvMmI3NDI0YjU1ZjUwNDdiNDdhYzZlNWNjYjIwYjJhZWE0MDExZDliZSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjJiNzQyNGI1NWY1MDQ3YjQ3YWM2ZTVjY2IyMGIyYWVhNDAxMWQ5YmUiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vZGlmZiI6ICJ+MS4yIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vZXhwb3J0ZXIiOiAifjEuMiB8fCB+Mi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMi54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSmVmZiBXZWxjaCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIndoYXR0aGVqZWZmQGdtYWlsLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVm9sa2VyIER1c2NoIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZ2l0aHViQHdhbGxiYXNoLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQmVybmhhcmQgU2NodXNzZWsiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJic2NodXNzZWtAMmJlcHVibGlzaGVkLmF0IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzZWJhc3RpYW5AcGhwdW5pdC5kZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNvbXBhcmUgUEhQIHZhbHVlcyBmb3IgZXF1YWxpdHkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2NvbXBhcmF0b3IiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiY29tcGFyYXRvciIsCiAgICAgICAgICAgICAgICAiY29tcGFyZSIsCiAgICAgICAgICAgICAgICAiZXF1YWxpdHkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDEtMjlUMDk6NTA6MjUrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNlYmFzdGlhbi9kaWZmIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS40LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2RpZmYuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiN2YwNjZhMjZhOTYyZGJlNThkZGVhOWY3MmE0ZTgyODc0YTM5NzVhNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL2RpZmYvemlwYmFsbC83ZjA2NmEyNmE5NjJkYmU1OGRkZWE5ZjcyYTRlODI4NzRhMzk3NWE0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiN2YwNjZhMjZhOTYyZGJlNThkZGVhOWY3MmE0ZTgyODc0YTM5NzVhNCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl41LjMuMyB8fCBeNy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjguMzUgfHwgXjUuNyB8fCBeNi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjQtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJLb3JlIE5vcmRtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFpbEBrb3JlLW5vcmRtYW5uLmRlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzZWJhc3RpYW5AcGhwdW5pdC5kZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRpZmYgaW1wbGVtZW50YXRpb24iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2RpZmYiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiZGlmZiIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wNS0yMlQwNzoyNDowMyswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic2ViYXN0aWFuL2Vudmlyb25tZW50IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjgiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2Vudmlyb25tZW50LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImJlMmM2MDdlNDNjZTRjODllY2Q2MGU3NWM2YTg1YzEyNmU3NTRhZWEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zZWJhc3RpYW5iZXJnbWFubi9lbnZpcm9ubWVudC96aXBiYWxsL2JlMmM2MDdlNDNjZTRjODllY2Q2MGU3NWM2YTg1YzEyNmU3NTRhZWEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiZTJjNjA3ZTQzY2U0Yzg5ZWNkNjBlNzVjNmE4NWMxMjZlNzU0YWVhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuMy4zIHx8IF43LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuOCB8fCBeNS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjMueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMy1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUHJvdmlkZXMgZnVuY3Rpb25hbGl0eSB0byBoYW5kbGUgSEhWTS9QSFAgZW52aXJvbm1lbnRzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9lbnZpcm9ubWVudCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJYZGVidWciLAogICAgICAgICAgICAgICAgImVudmlyb25tZW50IiwKICAgICAgICAgICAgICAgICJoaHZtIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE2LTA4LTE4VDA1OjQ5OjQ0KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzZWJhc3RpYW4vZXhwb3J0ZXIiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vZXhwb3J0ZXIuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDJjNGMyZWVjNDg1ZWUzZTE1OWVjOTg4NGY5NWI0MzEyODdlZGRlNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL2V4cG9ydGVyL3ppcGJhbGwvNDJjNGMyZWVjNDg1ZWUzZTE1OWVjOTg4NGY5NWI0MzEyODdlZGRlNCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQyYzRjMmVlYzQ4NWVlM2UxNTllYzk4ODRmOTViNDMxMjg3ZWRkZTQiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vcmVjdXJzaW9uLWNvbnRleHQiOiAifjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4zLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJKZWZmIFdlbGNoIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAid2hhdHRoZWplZmZAZ21haWwuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJWb2xrZXIgRHVzY2giLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJnaXRodWJAd2FsbGJhc2guY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJCZXJuaGFyZCBTY2h1c3NlayIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImJzY2h1c3Nla0AyYmVwdWJsaXNoZWQuYXQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBZGFtIEhhcnZleSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFoYXJ2ZXlAcGhwLm5ldCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGV4cG9ydCBQSFAgdmFyaWFibGVzIGZvciB2aXN1YWxpemF0aW9uIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9leHBvcnRlciIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJleHBvcnQiLAogICAgICAgICAgICAgICAgImV4cG9ydGVyIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE2LTA2LTE3VDA5OjA0OjI4KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzZWJhc3RpYW4vZ2xvYmFsLXN0YXRlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2dsb2JhbC1zdGF0ZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiYzM3ZDUwZmVhN2QwMTdkM2QzNDBmMjMwODExYzlmMWQ3MjgwYWY0IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vZ2xvYmFsLXN0YXRlL3ppcGJhbGwvYmMzN2Q1MGZlYTdkMDE3ZDNkMzQwZjIzMDgxMWM5ZjFkNzI4MGFmNCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImJjMzdkNTBmZWE3ZDAxN2QzZDM0MGYyMzA4MTFjOWYxZDcyODBhZjQiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC11b3B6IjogIioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMy1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU25hcHNob3R0aW5nIG9mIGdsb2JhbCBzdGF0ZSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vd3d3LmdpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vZ2xvYmFsLXN0YXRlIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImdsb2JhbCBzdGF0ZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0xMC0xMlQwMzoyNjowMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic2ViYXN0aWFuL3JlY3Vyc2lvbi1jb250ZXh0IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3JlY3Vyc2lvbi1jb250ZXh0LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImIxOWNjMzI5ODQ4MmEzMzVhOTVmMzAxNmQyZjhhNjk1MGYwZmJjZDciCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zZWJhc3RpYW5iZXJnbWFubi9yZWN1cnNpb24tY29udGV4dC96aXBiYWxsL2IxOWNjMzI5ODQ4MmEzMzVhOTVmMzAxNmQyZjhhNjk1MGYwZmJjZDciLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiMTljYzMyOTg0ODJhMzM1YTk1ZjMwMTZkMmY4YTY5NTBmMGZiY2Q3IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC40IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMy1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkplZmYgV2VsY2giLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ3aGF0dGhlamVmZkBnbWFpbC5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBZGFtIEhhcnZleSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFoYXJ2ZXlAcGhwLm5ldCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gcmVjdXJzaXZlbHkgcHJvY2VzcyBQSFAgdmFyaWFibGVzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9yZWN1cnNpb24tY29udGV4dCIsCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTYtMTAtMDNUMDc6NDE6NDMrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNlYmFzdGlhbi92ZXJzaW9uIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjYiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3ZlcnNpb24uZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNThiM2E4NWU3OTk5NzU3ZDZhZDgxYzc4N2ExZmJmNWZmNmM2MjhjNiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL3ZlcnNpb24vemlwYmFsbC81OGIzYTg1ZTc5OTk3NTdkNmFkODFjNzg3YTFmYmY1ZmY2YzYyOGM2IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNThiM2E4NWU3OTk5NzU3ZDZhZDgxYzc4N2ExZmJmNWZmNmM2MjhjNiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMy1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJsZWFkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTGlicmFyeSB0aGF0IGhlbHBzIHdpdGggbWFuYWdpbmcgdGhlIHZlcnNpb24gbnVtYmVyIG9mIEdpdC1ob3N0ZWQgUEhQIHByb2plY3RzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi92ZXJzaW9uIiwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wNi0yMVQxMzo1OTo0NiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9jb25zb2xlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjQuMS42IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2NvbnNvbGUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZGM3MTIyZmU1ZjYxMTNjZmFiYTNiM2RlNTc1ZDMxMTEyYzlhYTYwYiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvY29uc29sZS96aXBiYWxsL2RjNzEyMmZlNWY2MTEzY2ZhYmEzYjNkZTU3NWQzMTExMmM5YWE2MGIiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJkYzcxMjJmZTVmNjExM2NmYWJhM2IzZGU1NzVkMzExMTJjOWFhNjBiIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMS4zIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIn4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJjb25mbGljdCI6IHsKICAgICAgICAgICAgICAgICJzeW1mb255L2RlcGVuZGVuY3ktaW5qZWN0aW9uIjogIjwzLjQiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcHJvY2VzcyI6ICI8My4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicHNyL2xvZyI6ICJ+MS4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2NvbmZpZyI6ICJ+My40fH40LjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvZGVwZW5kZW5jeS1pbmplY3Rpb24iOiAifjMuNHx+NC4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2V2ZW50LWRpc3BhdGNoZXIiOiAifjMuNHx+NC4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2xvY2siOiAifjMuNHx+NC4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3Byb2Nlc3MiOiAifjMuNHx+NC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJwc3IvbG9nLWltcGxlbWVudGF0aW9uIjogIkZvciB1c2luZyB0aGUgY29uc29sZSBsb2dnZXIiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvZXZlbnQtZGlzcGF0Y2hlciI6ICIiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvbG9jayI6ICIiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcHJvY2VzcyI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjQuMS1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU3ltZm9ueVxcQ29tcG9uZW50XFxDb25zb2xlXFwiOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJleGNsdWRlLWZyb20tY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgIi9UZXN0cy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGYWJpZW4gUG90ZW5jaWVyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZmFiaWVuQHN5bWZvbnkuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3ltZm9ueSBDb25zb2xlIENvbXBvbmVudCIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tIiwKICAgICAgICAgICAgInRpbWUiOiAiMjAxOC0xMC0wM1QwODoxNTo0NiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1jdHlwZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYxLjguMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC1jdHlwZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3Y2MzNTlmMWI3YjgwZmMyNWVkNzc5NmJlN2Q5NmFkYzliMzU0YmFlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9wb2x5ZmlsbC1jdHlwZS96aXBiYWxsLzdjYzM1OWYxYjdiODBmYzI1ZWQ3Nzk2YmU3ZDk2YWRjOWIzNTRiYWUiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3Y2MzNTlmMWI3YjgwZmMyNWVkNzc5NmJlN2Q5NmFkYzliMzU0YmFlIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS44LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxQb2x5ZmlsbFxcQ3R5cGVcXCI6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJib290c3RyYXAucGhwIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR2VydCBkZSBQYWd0ZXIiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJCYWNrRW5kVGVhQGdtYWlsLmNvbSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgcG9seWZpbGwgZm9yIGN0eXBlIGZ1bmN0aW9ucyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNvbXBhdGliaWxpdHkiLAogICAgICAgICAgICAgICAgImN0eXBlIiwKICAgICAgICAgICAgICAgICJwb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAicG9ydGFibGUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTgtMDQtMzBUMTk6NTc6MjkrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmciLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2MS45LjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDBjZDYzOGY0NjM0YzE2ZDhkZjQ1MDhlODQ3ZjE0ZTllNDMxNjhiOCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcvemlwYmFsbC9kMGNkNjM4ZjQ2MzRjMTZkOGRmNDUwOGU4NDdmMTRlOWU0MzE2OGI4IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDBjZDYzOGY0NjM0YzE2ZDhkZjQ1MDhlODQ3ZjE0ZTllNDMxNjhiOCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICJGb3IgYmVzdCBwZXJmb3JtYW5jZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS45LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCI6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJib290c3RyYXAucGhwIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTmljb2xhcyBHcmVrYXMiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3ltZm9ueSBwb2x5ZmlsbCBmb3IgdGhlIE1ic3RyaW5nIGV4dGVuc2lvbiIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNvbXBhdGliaWxpdHkiLAogICAgICAgICAgICAgICAgIm1ic3RyaW5nIiwKICAgICAgICAgICAgICAgICJwb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAicG9ydGFibGUiLAogICAgICAgICAgICAgICAgInNoaW0iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTgtMDgtMDZUMTQ6MjI6MjcrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvcHJvY2VzcyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInY0LjEuNiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wcm9jZXNzLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImVlMzNjMDMyMmE4ZmVlMDg1NWFmY2MxMWZmZjgxZTZiMTAxMWI1MjkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L3Byb2Nlc3MvemlwYmFsbC9lZTMzYzAzMjJhOGZlZTA4NTVhZmNjMTFmZmY4MWU2YjEwMTFiNTI5IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWUzM2MwMzIyYThmZWUwODU1YWZjYzExZmZmODFlNmIxMDExYjUyOSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl43LjEuMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiNC4xLWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxDb21wb25lbnRcXFByb2Nlc3NcXCI6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImV4Y2x1ZGUtZnJvbS1jbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAiL1Rlc3RzLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZhYmllbiBQb3RlbmNpZXIiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmYWJpZW5Ac3ltZm9ueS5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IFByb2Nlc3MgQ29tcG9uZW50IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICAgICAidGltZSI6ICIyMDE4LTEwLTAyVDEyOjQwOjU5KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3lhbWwiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2My40LjEyIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3lhbWwuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYzUwMTBjYzE2OTJjZTFmYTMyOGIxZmI2NjY5NjFlYjNkNGE4NWJiMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkveWFtbC96aXBiYWxsL2M1MDEwY2MxNjkyY2UxZmEzMjhiMWZiNjY2OTYxZWIzZDRhODViYjAiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJjNTAxMGNjMTY5MmNlMWZhMzI4YjFmYjY2Njk2MWViM2Q0YTg1YmIwIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuNS45fD49Ny4wLjgiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtY3R5cGUiOiAifjEuOCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImNvbmZsaWN0IjogewogICAgICAgICAgICAgICAgInN5bWZvbnkvY29uc29sZSI6ICI8My40IgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAic3ltZm9ueS9jb25zb2xlIjogIn4zLjR8fjQuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAic3ltZm9ueS9jb25zb2xlIjogIkZvciB2YWxpZGF0aW5nIFlBTUwgZmlsZXMgdXNpbmcgdGhlIGxpbnQgY29tbWFuZCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMy40LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxDb21wb25lbnRcXFlhbWxcXCI6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImV4Y2x1ZGUtZnJvbS1jbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAiL1Rlc3RzLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZhYmllbiBQb3RlbmNpZXIiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmYWJpZW5Ac3ltZm9ueS5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IFlhbWwgQ29tcG9uZW50IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICAgICAidGltZSI6ICIyMDE4LTA1LTAzVDIzOjE4OjE0KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWJtb3phcnQvYXNzZXJ0IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYm1vemFydC9hc3NlcnQuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMGRmMTkwODk2MmU3YTMwNzE1NjRlODU3ZDg2ODc0ZGFkMWVmMjA0YSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYm1vemFydC9hc3NlcnQvemlwYmFsbC8wZGYxOTA4OTYyZTdhMzA3MTU2NGU4NTdkODY4NzRkYWQxZWYyMDRhIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMGRmMTkwODk2MmU3YTMwNzE1NjRlODU3ZDg2ODc0ZGFkMWVmMjA0YSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl41LjMuMyB8fCBeNy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjYiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi92ZXJzaW9uIjogIl4xLjAuMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4zLWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJXZWJtb3phcnRcXEFzc2VydFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJCZXJuaGFyZCBTY2h1c3NlayIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImJzY2h1c3Nla0BnbWFpbC5jb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBc3NlcnRpb25zIHRvIHZhbGlkYXRlIG1ldGhvZCBpbnB1dC9vdXRwdXQgd2l0aCBuaWNlIGVycm9yIG1lc3NhZ2VzLiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJhc3NlcnQiLAogICAgICAgICAgICAgICAgImNoZWNrIiwKICAgICAgICAgICAgICAgICJ2YWxpZGF0ZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxOC0wMS0yOVQxOTo0OTo0MSswMDowMCIKICAgICAgICB9CiAgICBdLAogICAgImFsaWFzZXMiOiBbXSwKICAgICJtaW5pbXVtLXN0YWJpbGl0eSI6ICJzdGFibGUiLAogICAgInN0YWJpbGl0eS1mbGFncyI6IFtdLAogICAgInByZWZlci1zdGFibGUiOiBmYWxzZSwKICAgICJwcmVmZXItbG93ZXN0IjogZmFsc2UsCiAgICAicGxhdGZvcm0iOiB7CiAgICAgICAgInBocCI6ICI+PTUuMy4yIgogICAgfSwKICAgICJwbGF0Zm9ybS1kZXYiOiBbXQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/Doxyfile</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBEb3h5ZmlsZSAxLjguNwoKIyBUaGlzIGZpbGUgZGVzY3JpYmVzIHRoZSBzZXR0aW5ncyB0byBiZSB1c2VkIGJ5IHRoZSBkb2N1bWVudGF0aW9uIHN5c3RlbQojIGRveHlnZW4gKHd3dy5kb3h5Z2VuLm9yZykgZm9yIGEgcHJvamVjdC4KIwojIEFsbCB0ZXh0IGFmdGVyIGEgZG91YmxlIGhhc2ggKCMjKSBpcyBjb25zaWRlcmVkIGEgY29tbWVudCBhbmQgaXMgcGxhY2VkIGluCiMgZnJvbnQgb2YgdGhlIFRBRyBpdCBpcyBwcmVjZWRpbmcuCiMKIyBBbGwgdGV4dCBhZnRlciBhIHNpbmdsZSBoYXNoICgjKSBpcyBjb25zaWRlcmVkIGEgY29tbWVudCBhbmQgd2lsbCBiZSBpZ25vcmVkLgojIFRoZSBmb3JtYXQgaXM6CiMgVEFHID0gdmFsdWUgW3ZhbHVlLCAuLi5dCiMgRm9yIGxpc3RzLCBpdGVtcyBjYW4gYWxzbyBiZSBhcHBlbmRlZCB1c2luZzoKIyBUQUcgKz0gdmFsdWUgW3ZhbHVlLCAuLi5dCiMgVmFsdWVzIHRoYXQgY29udGFpbiBzcGFjZXMgc2hvdWxkIGJlIHBsYWNlZCBiZXR3ZWVuIHF1b3RlcyAoXCIgXCIpLgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByb2plY3QgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBUaGlzIHRhZyBzcGVjaWZpZXMgdGhlIGVuY29kaW5nIHVzZWQgZm9yIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBjb25maWcgZmlsZQojIHRoYXQgZm9sbG93LiBUaGUgZGVmYXVsdCBpcyBVVEYtOCB3aGljaCBpcyBhbHNvIHRoZSBlbmNvZGluZyB1c2VkIGZvciBhbGwgdGV4dAojIGJlZm9yZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGlzIHRhZy4gRG94eWdlbiB1c2VzIGxpYmljb252IChvciB0aGUgaWNvbnYKIyBidWlsdCBpbnRvIGxpYmMpIGZvciB0aGUgdHJhbnNjb2RpbmcuIFNlZSBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWNvbnYKIyBmb3IgdGhlIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBVVEYtOC4KCkRPWFlGSUxFX0VOQ09ESU5HICAgICAgPSBVVEYtOAoKIyBUaGUgUFJPSkVDVF9OQU1FIHRhZyBpcyBhIHNpbmdsZSB3b3JkIChvciBhIHNlcXVlbmNlIG9mIHdvcmRzIHN1cnJvdW5kZWQgYnkKIyBkb3VibGUtcXVvdGVzLCB1bmxlc3MgeW91IGFyZSB1c2luZyBEb3h5d2l6YXJkKSB0aGF0IHNob3VsZCBpZGVudGlmeSB0aGUKIyBwcm9qZWN0IGZvciB3aGljaCB0aGUgZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmF0ZWQuIFRoaXMgbmFtZSBpcyB1c2VkIGluIHRoZQojIHRpdGxlIG9mIG1vc3QgZ2VuZXJhdGVkIHBhZ2VzIGFuZCBpbiBhIGZldyBvdGhlciBwbGFjZXMuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE15IFByb2plY3QuCgpQUk9KRUNUX05BTUUgICAgICAgICAgID0gIlNhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIiCgojIFRoZSBQUk9KRUNUX05VTUJFUiB0YWcgY2FuIGJlIHVzZWQgdG8gZW50ZXIgYSBwcm9qZWN0IG9yIHJldmlzaW9uIG51bWJlci4gVGhpcwojIGNvdWxkIGJlIGhhbmR5IGZvciBhcmNoaXZpbmcgdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIG9yIGlmIHNvbWUgdmVyc2lvbgojIGNvbnRyb2wgc3lzdGVtIGlzIHVzZWQuCgpQUk9KRUNUX05VTUJFUiAgICAgICAgID0gIjcuMC4zIgoKIyBVc2luZyB0aGUgUFJPSkVDVF9CUklFRiB0YWcgb25lIGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsIG9uZSBsaW5lIGRlc2NyaXB0aW9uCiMgZm9yIGEgcHJvamVjdCB0aGF0IGFwcGVhcnMgYXQgdGhlIHRvcCBvZiBlYWNoIHBhZ2UgYW5kIHNob3VsZCBnaXZlIHZpZXdlciBhCiMgcXVpY2sgaWRlYSBhYm91dCB0aGUgcHVycG9zZSBvZiB0aGUgcHJvamVjdC4gS2VlcCB0aGUgZGVzY3JpcHRpb24gc2hvcnQuCgpQUk9KRUNUX0JSSUVGICAgICAgICAgID0gIkEgUGFyc2VyIGZvciBDU1MgRmlsZXMgd3JpdHRlbiBpbiBQSFAuIEFsbG93cyBleHRyYWN0aW9uIG9mIENTUyBmaWxlcyBpbnRvIGEgZGF0YSBzdHJ1Y3R1cmUsIG1hbmlwdWxhdGlvbiBvZiBzYWlkIHN0cnVjdHVyZSBhbmQgb3V0cHV0IGFzIChvcHRpbWl6ZWQpIENTUyIKCiMgV2l0aCB0aGUgUFJPSkVDVF9MT0dPIHRhZyBvbmUgY2FuIHNwZWNpZnkgYW4gbG9nbyBvciBpY29uIHRoYXQgaXMgaW5jbHVkZWQgaW4KIyB0aGUgZG9jdW1lbnRhdGlvbi4gVGhlIG1heGltdW0gaGVpZ2h0IG9mIHRoZSBsb2dvIHNob3VsZCBub3QgZXhjZWVkIDU1IHBpeGVscwojIGFuZCB0aGUgbWF4aW11bSB3aWR0aCBzaG91bGQgbm90IGV4Y2VlZCAyMDAgcGl4ZWxzLiBEb3h5Z2VuIHdpbGwgY29weSB0aGUgbG9nbwojIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5LgoKUFJPSkVDVF9MT0dPICAgICAgICAgICA9CgojIFRoZSBPVVRQVVRfRElSRUNUT1JZIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgcGF0aAojIGludG8gd2hpY2ggdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uIHdpbGwgYmUgd3JpdHRlbi4gSWYgYSByZWxhdGl2ZSBwYXRoIGlzCiMgZW50ZXJlZCwgaXQgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gd2hlcmUgZG94eWdlbiB3YXMgc3RhcnRlZC4gSWYKIyBsZWZ0IGJsYW5rIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQuCgpPVVRQVVRfRElSRUNUT1JZICAgICAgID0gIi4uL1BIUC1DU1MtUGFyc2VyLURvY3VtZW50YXRpb24iCgojIElmIHRoZSBDUkVBVEVfU1VCRElSUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgY3JlYXRlIDQwOTYgc3ViLQojIGRpcmVjdG9yaWVzIChpbiAyIGxldmVscykgdW5kZXIgdGhlIG91dHB1dCBkaXJlY3Rvcnkgb2YgZWFjaCBvdXRwdXQgZm9ybWF0IGFuZAojIHdpbGwgZGlzdHJpYnV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzIG92ZXIgdGhlc2UgZGlyZWN0b3JpZXMuIEVuYWJsaW5nIHRoaXMKIyBvcHRpb24gY2FuIGJlIHVzZWZ1bCB3aGVuIGZlZWRpbmcgZG94eWdlbiBhIGh1Z2UgYW1vdW50IG9mIHNvdXJjZSBmaWxlcywgd2hlcmUKIyBwdXR0aW5nIGFsbCBnZW5lcmF0ZWQgZmlsZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHdvdWxkIG90aGVyd2lzZSBjYXVzZXMKIyBwZXJmb3JtYW5jZSBwcm9ibGVtcyBmb3IgdGhlIGZpbGUgc3lzdGVtLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkNSRUFURV9TVUJESVJTICAgICAgICAgPSBOTwoKIyBJZiB0aGUgQUxMT1dfVU5JQ09ERV9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGFsbG93IG5vbi1BU0NJSQojIGNoYXJhY3RlcnMgdG8gYXBwZWFyIGluIHRoZSBuYW1lcyBvZiBnZW5lcmF0ZWQgZmlsZXMuIElmIHNldCB0byBOTywgbm9uLUFTQ0lJCiMgY2hhcmFjdGVycyB3aWxsIGJlIGVzY2FwZWQsIGZvciBleGFtcGxlIF94RTNfeDgxX3g4NCB3aWxsIGJlIHVzZWQgZm9yIFVuaWNvZGUKIyBVKzMwNDQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKQUxMT1dfVU5JQ09ERV9OQU1FUyAgICA9IE5PCgojIFRoZSBPVVRQVVRfTEFOR1VBR0UgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGFuZ3VhZ2UgaW4gd2hpY2ggYWxsCiMgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgYnkgZG94eWdlbiBpcyB3cml0dGVuLiBEb3h5Z2VuIHdpbGwgdXNlIHRoaXMKIyBpbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBhbGwgY29uc3RhbnQgb3V0cHV0IGluIHRoZSBwcm9wZXIgbGFuZ3VhZ2UuCiMgUG9zc2libGUgdmFsdWVzIGFyZTogQWZyaWthYW5zLCBBcmFiaWMsIEFybWVuaWFuLCBCcmF6aWxpYW4sIENhdGFsYW4sIENoaW5lc2UsCiMgQ2hpbmVzZS1UcmFkaXRpb25hbCwgQ3JvYXRpYW4sIEN6ZWNoLCBEYW5pc2gsIER1dGNoLCBFbmdsaXNoIChVbml0ZWQgU3RhdGVzKSwKIyBFc3BlcmFudG8sIEZhcnNpIChQZXJzaWFuKSwgRmlubmlzaCwgRnJlbmNoLCBHZXJtYW4sIEdyZWVrLCBIdW5nYXJpYW4sCiMgSW5kb25lc2lhbiwgSXRhbGlhbiwgSmFwYW5lc2UsIEphcGFuZXNlLWVuIChKYXBhbmVzZSB3aXRoIEVuZ2xpc2ggbWVzc2FnZXMpLAojIEtvcmVhbiwgS29yZWFuLWVuIChLb3JlYW4gd2l0aCBFbmdsaXNoIG1lc3NhZ2VzKSwgTGF0dmlhbiwgTGl0aHVhbmlhbiwKIyBNYWNlZG9uaWFuLCBOb3J3ZWdpYW4sIFBlcnNpYW4gKEZhcnNpKSwgUG9saXNoLCBQb3J0dWd1ZXNlLCBSb21hbmlhbiwgUnVzc2lhbiwKIyBTZXJiaWFuLCBTZXJiaWFuLUN5cmlsbGljLCBTbG92YWssIFNsb3ZlbmUsIFNwYW5pc2gsIFN3ZWRpc2gsIFR1cmtpc2gsCiMgVWtyYWluaWFuIGFuZCBWaWV0bmFtZXNlLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBFbmdsaXNoLgoKT1VUUFVUX0xBTkdVQUdFICAgICAgICA9IEVuZ2xpc2gKCiMgSWYgdGhlIEJSSUVGX01FTUJFUl9ERVNDIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBpbmNsdWRlIGJyaWVmIG1lbWJlcgojIGRlc2NyaXB0aW9ucyBhZnRlciB0aGUgbWVtYmVycyB0aGF0IGFyZSBsaXN0ZWQgaW4gdGhlIGZpbGUgYW5kIGNsYXNzCiMgZG9jdW1lbnRhdGlvbiAoc2ltaWxhciB0byBKYXZhZG9jKS4gU2V0IHRvIE5PIHRvIGRpc2FibGUgdGhpcy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKQlJJRUZfTUVNQkVSX0RFU0MgICAgICA9IFlFUwoKIyBJZiB0aGUgUkVQRUFUX0JSSUVGIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBwcmVwZW5kIHRoZSBicmllZgojIGRlc2NyaXB0aW9uIG9mIGEgbWVtYmVyIG9yIGZ1bmN0aW9uIGJlZm9yZSB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24KIwojIE5vdGU6IElmIGJvdGggSElERV9VTkRPQ19NRU1CRVJTIGFuZCBCUklFRl9NRU1CRVJfREVTQyBhcmUgc2V0IHRvIE5PLCB0aGUKIyBicmllZiBkZXNjcmlwdGlvbnMgd2lsbCBiZSBjb21wbGV0ZWx5IHN1cHByZXNzZWQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KClJFUEVBVF9CUklFRiAgICAgICAgICAgPSBZRVMKCiMgVGhpcyB0YWcgaW1wbGVtZW50cyBhIHF1YXNpLWludGVsbGlnZW50IGJyaWVmIGRlc2NyaXB0aW9uIGFiYnJldmlhdG9yIHRoYXQgaXMKIyB1c2VkIHRvIGZvcm0gdGhlIHRleHQgaW4gdmFyaW91cyBsaXN0aW5ncy4gRWFjaCBzdHJpbmcgaW4gdGhpcyBsaXN0LCBpZiBmb3VuZAojIGFzIHRoZSBsZWFkaW5nIHRleHQgb2YgdGhlIGJyaWVmIGRlc2NyaXB0aW9uLCB3aWxsIGJlIHN0cmlwcGVkIGZyb20gdGhlIHRleHQKIyBhbmQgdGhlIHJlc3VsdCwgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgd2hvbGUgbGlzdCwgaXMgdXNlZCBhcyB0aGUgYW5ub3RhdGVkCiMgdGV4dC4gT3RoZXJ3aXNlLCB0aGUgYnJpZWYgZGVzY3JpcHRpb24gaXMgdXNlZCBhcy1pcy4gSWYgbGVmdCBibGFuaywgdGhlCiMgZm9sbG93aW5nIHZhbHVlcyBhcmUgdXNlZCAoJG5hbWUgaXMgYXV0b21hdGljYWxseSByZXBsYWNlZCB3aXRoIHRoZSBuYW1lIG9mCiMgdGhlIGVudGl0eSk6VGhlICRuYW1lIGNsYXNzLCBUaGUgJG5hbWUgd2lkZ2V0LCBUaGUgJG5hbWUgZmlsZSwgaXMsIHByb3ZpZGVzLAojIHNwZWNpZmllcywgY29udGFpbnMsIHJlcHJlc2VudHMsIGEsIGFuIGFuZCB0aGUuCgpBQkJSRVZJQVRFX0JSSUVGICAgICAgID0KCiMgSWYgdGhlIEFMV0FZU19ERVRBSUxFRF9TRUMgYW5kIFJFUEVBVF9CUklFRiB0YWdzIGFyZSBib3RoIHNldCB0byBZRVMgdGhlbgojIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGRldGFpbGVkIHNlY3Rpb24gZXZlbiBpZiB0aGVyZSBpcyBvbmx5IGEgYnJpZWYKIyBkZXNjcmlwdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpBTFdBWVNfREVUQUlMRURfU0VDICAgID0gTk8KCiMgSWYgdGhlIElOTElORV9JTkhFUklURURfTUVNQiB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIHNob3cgYWxsCiMgaW5oZXJpdGVkIG1lbWJlcnMgb2YgYSBjbGFzcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGF0IGNsYXNzIGFzIGlmIHRob3NlCiMgbWVtYmVycyB3ZXJlIG9yZGluYXJ5IGNsYXNzIG1lbWJlcnMuIENvbnN0cnVjdG9ycywgZGVzdHJ1Y3RvcnMgYW5kIGFzc2lnbm1lbnQKIyBvcGVyYXRvcnMgb2YgdGhlIGJhc2UgY2xhc3NlcyB3aWxsIG5vdCBiZSBzaG93bi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpJTkxJTkVfSU5IRVJJVEVEX01FTUIgID0gTk8KCiMgSWYgdGhlIEZVTExfUEFUSF9OQU1FUyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgcHJlcGVuZCB0aGUgZnVsbCBwYXRoCiMgYmVmb3JlIGZpbGVzIG5hbWUgaW4gdGhlIGZpbGUgbGlzdCBhbmQgaW4gdGhlIGhlYWRlciBmaWxlcy4gSWYgc2V0IHRvIE5PIHRoZQojIHNob3J0ZXN0IHBhdGggdGhhdCBtYWtlcyB0aGUgZmlsZSBuYW1lIHVuaXF1ZSB3aWxsIGJlIHVzZWQKIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKRlVMTF9QQVRIX05BTUVTICAgICAgICA9IFlFUwoKIyBUaGUgU1RSSVBfRlJPTV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzdHJpcCBhIHVzZXItZGVmaW5lZCBwYXJ0IG9mIHRoZSBwYXRoLgojIFN0cmlwcGluZyBpcyBvbmx5IGRvbmUgaWYgb25lIG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5ncyBtYXRjaGVzIHRoZSBsZWZ0LWhhbmQKIyBwYXJ0IG9mIHRoZSBwYXRoLiBUaGUgdGFnIGNhbiBiZSB1c2VkIHRvIHNob3cgcmVsYXRpdmUgcGF0aHMgaW4gdGhlIGZpbGUgbGlzdC4KIyBJZiBsZWZ0IGJsYW5rIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBkb3h5Z2VuIGlzIHJ1biBpcyB1c2VkIGFzIHRoZSBwYXRoIHRvCiMgc3RyaXAuCiMKIyBOb3RlIHRoYXQgeW91IGNhbiBzcGVjaWZ5IGFic29sdXRlIHBhdGhzIGhlcmUsIGJ1dCBhbHNvIHJlbGF0aXZlIHBhdGhzLCB3aGljaAojIHdpbGwgYmUgcmVsYXRpdmUgZnJvbSB0aGUgZGlyZWN0b3J5IHdoZXJlIGRveHlnZW4gaXMgc3RhcnRlZC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRlVMTF9QQVRIX05BTUVTIGlzIHNldCB0byBZRVMuCgpTVFJJUF9GUk9NX1BBVEggICAgICAgID0gLi9saWIKCiMgVGhlIFNUUklQX0ZST01fSU5DX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHN0cmlwIGEgdXNlci1kZWZpbmVkIHBhcnQgb2YgdGhlCiMgcGF0aCBtZW50aW9uZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgYSBjbGFzcywgd2hpY2ggdGVsbHMgdGhlIHJlYWRlciB3aGljaAojIGhlYWRlciBmaWxlIHRvIGluY2x1ZGUgaW4gb3JkZXIgdG8gdXNlIGEgY2xhc3MuIElmIGxlZnQgYmxhbmsgb25seSB0aGUgbmFtZSBvZgojIHRoZSBoZWFkZXIgZmlsZSBjb250YWluaW5nIHRoZSBjbGFzcyBkZWZpbml0aW9uIGlzIHVzZWQuIE90aGVyd2lzZSBvbmUgc2hvdWxkCiMgc3BlY2lmeSB0aGUgbGlzdCBvZiBpbmNsdWRlIHBhdGhzIHRoYXQgYXJlIG5vcm1hbGx5IHBhc3NlZCB0byB0aGUgY29tcGlsZXIKIyB1c2luZyB0aGUgLUkgZmxhZy4KClNUUklQX0ZST01fSU5DX1BBVEggICAgPQoKIyBJZiB0aGUgU0hPUlRfTkFNRVMgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBtdWNoIHNob3J0ZXIgKGJ1dAojIGxlc3MgcmVhZGFibGUpIGZpbGUgbmFtZXMuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpcyB5b3VyIGZpbGUgc3lzdGVtcyBkb2Vzbid0CiMgc3VwcG9ydCBsb25nIG5hbWVzIGxpa2Ugb24gRE9TLCBNYWMsIG9yIENELVJPTS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpTSE9SVF9OQU1FUyAgICAgICAgICAgID0gTk8KCiMgSWYgdGhlIEpBVkFET0NfQVVUT0JSSUVGIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGludGVycHJldCB0aGUKIyBmaXJzdCBsaW5lICh1bnRpbCB0aGUgZmlyc3QgZG90KSBvZiBhIEphdmFkb2Mtc3R5bGUgY29tbWVudCBhcyB0aGUgYnJpZWYKIyBkZXNjcmlwdGlvbi4gSWYgc2V0IHRvIE5PLCB0aGUgSmF2YWRvYy1zdHlsZSB3aWxsIGJlaGF2ZSBqdXN0IGxpa2UgcmVndWxhciBRdC0KIyBzdHlsZSBjb21tZW50cyAodGh1cyByZXF1aXJpbmcgYW4gZXhwbGljaXQgQGJyaWVmIGNvbW1hbmQgZm9yIGEgYnJpZWYKIyBkZXNjcmlwdGlvbi4pCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKSkFWQURPQ19BVVRPQlJJRUYgICAgICA9IFlFUwoKIyBJZiB0aGUgUVRfQVVUT0JSSUVGIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGludGVycHJldCB0aGUgZmlyc3QKIyBsaW5lICh1bnRpbCB0aGUgZmlyc3QgZG90KSBvZiBhIFF0LXN0eWxlIGNvbW1lbnQgYXMgdGhlIGJyaWVmIGRlc2NyaXB0aW9uLiBJZgojIHNldCB0byBOTywgdGhlIFF0LXN0eWxlIHdpbGwgYmVoYXZlIGp1c3QgbGlrZSByZWd1bGFyIFF0LXN0eWxlIGNvbW1lbnRzICh0aHVzCiMgcmVxdWlyaW5nIGFuIGV4cGxpY2l0IFxicmllZiBjb21tYW5kIGZvciBhIGJyaWVmIGRlc2NyaXB0aW9uLikKIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpRVF9BVVRPQlJJRUYgICAgICAgICAgID0gWUVTCgojIFRoZSBNVUxUSUxJTkVfQ1BQX0lTX0JSSUVGIHRhZyBjYW4gYmUgc2V0IHRvIFlFUyB0byBtYWtlIGRveHlnZW4gdHJlYXQgYQojIG11bHRpLWxpbmUgQysrIHNwZWNpYWwgY29tbWVudCBibG9jayAoaS5lLiBhIGJsb2NrIG9mIC8vISBvciAvLy8gY29tbWVudHMpIGFzCiMgYSBicmllZiBkZXNjcmlwdGlvbi4gVGhpcyB1c2VkIHRvIGJlIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiBUaGUgbmV3IGRlZmF1bHQgaXMKIyB0byB0cmVhdCBhIG11bHRpLWxpbmUgQysrIGNvbW1lbnQgYmxvY2sgYXMgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbi4gU2V0IHRoaXMKIyB0YWcgdG8gWUVTIGlmIHlvdSBwcmVmZXIgdGhlIG9sZCBiZWhhdmlvciBpbnN0ZWFkLgojCiMgTm90ZSB0aGF0IHNldHRpbmcgdGhpcyB0YWcgdG8gWUVTIGFsc28gbWVhbnMgdGhhdCByYXRpb25hbCByb3NlIGNvbW1lbnRzIGFyZQojIG5vdCByZWNvZ25pemVkIGFueSBtb3JlLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCk1VTFRJTElORV9DUFBfSVNfQlJJRUYgPSBZRVMKCiMgSWYgdGhlIElOSEVSSVRfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGFuIHVuZG9jdW1lbnRlZCBtZW1iZXIgaW5oZXJpdHMgdGhlCiMgZG9jdW1lbnRhdGlvbiBmcm9tIGFueSBkb2N1bWVudGVkIG1lbWJlciB0aGF0IGl0IHJlLWltcGxlbWVudHMuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCklOSEVSSVRfRE9DUyAgICAgICAgICAgPSBZRVMKCiMgSWYgdGhlIFNFUEFSQVRFX01FTUJFUl9QQUdFUyB0YWcgaXMgc2V0IHRvIFlFUywgdGhlbiBkb3h5Z2VuIHdpbGwgcHJvZHVjZSBhCiMgbmV3IHBhZ2UgZm9yIGVhY2ggbWVtYmVyLiBJZiBzZXQgdG8gTk8sIHRoZSBkb2N1bWVudGF0aW9uIG9mIGEgbWVtYmVyIHdpbGwgYmUKIyBwYXJ0IG9mIHRoZSBmaWxlL2NsYXNzL25hbWVzcGFjZSB0aGF0IGNvbnRhaW5zIGl0LgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KClNFUEFSQVRFX01FTUJFUl9QQUdFUyAgPSBOTwoKIyBUaGUgVEFCX1NJWkUgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbnVtYmVyIG9mIHNwYWNlcyBpbiBhIHRhYi4gRG94eWdlbgojIHVzZXMgdGhpcyB2YWx1ZSB0byByZXBsYWNlIHRhYnMgYnkgc3BhY2VzIGluIGNvZGUgZnJhZ21lbnRzLgojIE1pbmltdW0gdmFsdWU6IDEsIG1heGltdW0gdmFsdWU6IDE2LCBkZWZhdWx0IHZhbHVlOiA0LgoKVEFCX1NJWkUgICAgICAgICAgICAgICA9IDIKCiMgVGhpcyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIG51bWJlciBvZiBhbGlhc2VzIHRoYXQgYWN0IGFzIGNvbW1hbmRzIGluCiMgdGhlIGRvY3VtZW50YXRpb24uIEFuIGFsaWFzIGhhcyB0aGUgZm9ybToKIyBuYW1lPXZhbHVlCiMgRm9yIGV4YW1wbGUgYWRkaW5nCiMgInNpZGVlZmZlY3Q9QHBhciBTaWRlIEVmZmVjdHM6XG4iCiMgd2lsbCBhbGxvdyB5b3UgdG8gcHV0IHRoZSBjb21tYW5kIFxzaWRlZWZmZWN0IChvciBAc2lkZWVmZmVjdCkgaW4gdGhlCiMgZG9jdW1lbnRhdGlvbiwgd2hpY2ggd2lsbCByZXN1bHQgaW4gYSB1c2VyLWRlZmluZWQgcGFyYWdyYXBoIHdpdGggaGVhZGluZwojICJTaWRlIEVmZmVjdHM6Ii4gWW91IGNhbiBwdXQgXG4ncyBpbiB0aGUgdmFsdWUgcGFydCBvZiBhbiBhbGlhcyB0byBpbnNlcnQKIyBuZXdsaW5lcy4KCkFMSUFTRVMgICAgICAgICAgICAgICAgPQoKIyBUaGlzIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbnVtYmVyIG9mIHdvcmQta2V5d29yZCBtYXBwaW5ncyAoVENMIG9ubHkpLgojIEEgbWFwcGluZyBoYXMgdGhlIGZvcm0gIm5hbWU9dmFsdWUiLiBGb3IgZXhhbXBsZSBhZGRpbmcgImNsYXNzPWl0Y2w6OmNsYXNzIgojIHdpbGwgYWxsb3cgeW91IHRvIHVzZSB0aGUgY29tbWFuZCBjbGFzcyBpbiB0aGUgaXRjbDo6Y2xhc3MgbWVhbmluZy4KClRDTF9TVUJTVCAgICAgICAgICAgICAgPQoKIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9GT1JfQyB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBDIHNvdXJjZXMKIyBvbmx5LiBEb3h5Z2VuIHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyBtb3JlIHRhaWxvcmVkIGZvciBDLiBGb3IKIyBpbnN0YW5jZSwgc29tZSBvZiB0aGUgbmFtZXMgdGhhdCBhcmUgdXNlZCB3aWxsIGJlIGRpZmZlcmVudC4gVGhlIGxpc3Qgb2YgYWxsCiMgbWVtYmVycyB3aWxsIGJlIG9taXR0ZWQsIGV0Yy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpPUFRJTUlaRV9PVVRQVVRfRk9SX0MgID0gTk8KCiMgU2V0IHRoZSBPUFRJTUlaRV9PVVRQVVRfSkFWQSB0YWcgdG8gWUVTIGlmIHlvdXIgcHJvamVjdCBjb25zaXN0cyBvZiBKYXZhIG9yCiMgUHl0aG9uIHNvdXJjZXMgb25seS4gRG94eWdlbiB3aWxsIHRoZW4gZ2VuZXJhdGUgb3V0cHV0IHRoYXQgaXMgbW9yZSB0YWlsb3JlZAojIGZvciB0aGF0IGxhbmd1YWdlLiBGb3IgaW5zdGFuY2UsIG5hbWVzcGFjZXMgd2lsbCBiZSBwcmVzZW50ZWQgYXMgcGFja2FnZXMsCiMgcXVhbGlmaWVkIHNjb3BlcyB3aWxsIGxvb2sgZGlmZmVyZW50LCBldGMuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKT1BUSU1JWkVfT1VUUFVUX0pBVkEgICA9IE5PCgojIFNldCB0aGUgT1BUSU1JWkVfRk9SX0ZPUlRSQU4gdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2YgRm9ydHJhbgojIHNvdXJjZXMuIERveHlnZW4gd2lsbCB0aGVuIGdlbmVyYXRlIG91dHB1dCB0aGF0IGlzIHRhaWxvcmVkIGZvciBGb3J0cmFuLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCk9QVElNSVpFX0ZPUl9GT1JUUkFOICAgPSBOTwoKIyBTZXQgdGhlIE9QVElNSVpFX09VVFBVVF9WSERMIHRhZyB0byBZRVMgaWYgeW91ciBwcm9qZWN0IGNvbnNpc3RzIG9mIFZIREwKIyBzb3VyY2VzLiBEb3h5Z2VuIHdpbGwgdGhlbiBnZW5lcmF0ZSBvdXRwdXQgdGhhdCBpcyB0YWlsb3JlZCBmb3IgVkhETC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpPUFRJTUlaRV9PVVRQVVRfVkhETCAgID0gTk8KCiMgRG94eWdlbiBzZWxlY3RzIHRoZSBwYXJzZXIgdG8gdXNlIGRlcGVuZGluZyBvbiB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBmaWxlcyBpdAojIHBhcnNlcy4gV2l0aCB0aGlzIHRhZyB5b3UgY2FuIGFzc2lnbiB3aGljaCBwYXJzZXIgdG8gdXNlIGZvciBhIGdpdmVuCiMgZXh0ZW5zaW9uLiBEb3h5Z2VuIGhhcyBhIGJ1aWx0LWluIG1hcHBpbmcsIGJ1dCB5b3UgY2FuIG92ZXJyaWRlIG9yIGV4dGVuZCBpdAojIHVzaW5nIHRoaXMgdGFnLiBUaGUgZm9ybWF0IGlzIGV4dD1sYW5ndWFnZSwgd2hlcmUgZXh0IGlzIGEgZmlsZSBleHRlbnNpb24sIGFuZAojIGxhbmd1YWdlIGlzIG9uZSBvZiB0aGUgcGFyc2VycyBzdXBwb3J0ZWQgYnkgZG94eWdlbjogSURMLCBKYXZhLCBKYXZhc2NyaXB0LAojIEMjLCBDLCBDKyssIEQsIFBIUCwgT2JqZWN0aXZlLUMsIFB5dGhvbiwgRm9ydHJhbiAoZml4ZWQgZm9ybWF0IEZvcnRyYW46CiMgRm9ydHJhbkZpeGVkLCBmcmVlIGZvcm1hdHRlZCBGb3J0cmFuOiBGb3J0cmFuRnJlZSwgdW5rbm93biBmb3JtYXR0ZWQgRm9ydHJhbjoKIyBGb3J0cmFuLiBJbiB0aGUgbGF0ZXIgY2FzZSB0aGUgcGFyc2VyIHRyaWVzIHRvIGd1ZXNzIHdoZXRoZXIgdGhlIGNvZGUgaXMgZml4ZWQKIyBvciBmcmVlIGZvcm1hdHRlZCBjb2RlLCB0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBGb3J0cmFuIHR5cGUgZmlsZXMpLCBWSERMLiBGb3IKIyBpbnN0YW5jZSB0byBtYWtlIGRveHlnZW4gdHJlYXQgLmluYyBmaWxlcyBhcyBGb3J0cmFuIGZpbGVzIChkZWZhdWx0IGlzIFBIUCksCiMgYW5kIC5mIGZpbGVzIGFzIEMgKGRlZmF1bHQgaXMgRm9ydHJhbiksIHVzZTogaW5jPUZvcnRyYW4gZj1DLgojCiMgTm90ZSBGb3IgZmlsZXMgd2l0aG91dCBleHRlbnNpb24geW91IGNhbiB1c2Ugbm9fZXh0ZW5zaW9uIGFzIGEgcGxhY2Vob2xkZXIuCiMKIyBOb3RlIHRoYXQgZm9yIGN1c3RvbSBleHRlbnNpb25zIHlvdSBhbHNvIG5lZWQgdG8gc2V0IEZJTEVfUEFUVEVSTlMgb3RoZXJ3aXNlCiMgdGhlIGZpbGVzIGFyZSBub3QgcmVhZCBieSBkb3h5Z2VuLgoKRVhURU5TSU9OX01BUFBJTkcgICAgICA9IAoKIyBJZiB0aGUgTUFSS0RPV05fU1VQUE9SVCB0YWcgaXMgZW5hYmxlZCB0aGVuIGRveHlnZW4gcHJlLXByb2Nlc3NlcyBhbGwgY29tbWVudHMKIyBhY2NvcmRpbmcgdG8gdGhlIE1hcmtkb3duIGZvcm1hdCwgd2hpY2ggYWxsb3dzIGZvciBtb3JlIHJlYWRhYmxlCiMgZG9jdW1lbnRhdGlvbi4gU2VlIGh0dHA6Ly9kYXJpbmdmaXJlYmFsbC5uZXQvcHJvamVjdHMvbWFya2Rvd24vIGZvciBkZXRhaWxzLgojIFRoZSBvdXRwdXQgb2YgbWFya2Rvd24gcHJvY2Vzc2luZyBpcyBmdXJ0aGVyIHByb2Nlc3NlZCBieSBkb3h5Z2VuLCBzbyB5b3UgY2FuCiMgbWl4IGRveHlnZW4sIEhUTUwsIGFuZCBYTUwgY29tbWFuZHMgd2l0aCBNYXJrZG93biBmb3JtYXR0aW5nLiBEaXNhYmxlIG9ubHkgaW4KIyBjYXNlIG9mIGJhY2t3YXJkIGNvbXBhdGliaWxpdGllcyBpc3N1ZXMuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCk1BUktET1dOX1NVUFBPUlQgICAgICAgPSBZRVMKCiMgV2hlbiBlbmFibGVkIGRveHlnZW4gdHJpZXMgdG8gbGluayB3b3JkcyB0aGF0IGNvcnJlc3BvbmQgdG8gZG9jdW1lbnRlZAojIGNsYXNzZXMsIG9yIG5hbWVzcGFjZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBkb2N1bWVudGF0aW9uLiBTdWNoIGEgbGluayBjYW4KIyBiZSBwcmV2ZW50ZWQgaW4gaW5kaXZpZHVhbCBjYXNlcyBieSBieSBwdXR0aW5nIGEgJSBzaWduIGluIGZyb250IG9mIHRoZSB3b3JkCiMgb3IgZ2xvYmFsbHkgYnkgc2V0dGluZyBBVVRPTElOS19TVVBQT1JUIHRvIE5PLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpBVVRPTElOS19TVVBQT1JUICAgICAgID0gWUVTCgojIElmIHlvdSB1c2UgU1RMIGNsYXNzZXMgKGkuZS4gc3RkOjpzdHJpbmcsIHN0ZDo6dmVjdG9yLCBldGMuKSBidXQgZG8gbm90IHdhbnQKIyB0byBpbmNsdWRlIChhIHRhZyBmaWxlIGZvcikgdGhlIFNUTCBzb3VyY2VzIGFzIGlucHV0LCB0aGVuIHlvdSBzaG91bGQgc2V0IHRoaXMKIyB0YWcgdG8gWUVTIGluIG9yZGVyIHRvIGxldCBkb3h5Z2VuIG1hdGNoIGZ1bmN0aW9ucyBkZWNsYXJhdGlvbnMgYW5kCiMgZGVmaW5pdGlvbnMgd2hvc2UgYXJndW1lbnRzIGNvbnRhaW4gU1RMIGNsYXNzZXMgKGUuZy4gZnVuYyhzdGQ6OnN0cmluZyk7CiMgdmVyc3VzIGZ1bmMoc3RkOjpzdHJpbmcpIHt9KS4gVGhpcyBhbHNvIG1ha2UgdGhlIGluaGVyaXRhbmNlIGFuZCBjb2xsYWJvcmF0aW9uCiMgZGlhZ3JhbXMgdGhhdCBpbnZvbHZlIFNUTCBjbGFzc2VzIG1vcmUgY29tcGxldGUgYW5kIGFjY3VyYXRlLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkJVSUxUSU5fU1RMX1NVUFBPUlQgICAgPSBOTwoKIyBJZiB5b3UgdXNlIE1pY3Jvc29mdCdzIEMrKy9DTEkgbGFuZ3VhZ2UsIHlvdSBzaG91bGQgc2V0IHRoaXMgb3B0aW9uIHRvIFlFUyB0bwojIGVuYWJsZSBwYXJzaW5nIHN1cHBvcnQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKQ1BQX0NMSV9TVVBQT1JUICAgICAgICA9IE5PCgojIFNldCB0aGUgU0lQX1NVUFBPUlQgdGFnIHRvIFlFUyBpZiB5b3VyIHByb2plY3QgY29uc2lzdHMgb2Ygc2lwIChzZWU6CiMgaHR0cDovL3d3dy5yaXZlcmJhbmtjb21wdXRpbmcuY28udWsvc29mdHdhcmUvc2lwL2ludHJvKSBzb3VyY2VzIG9ubHkuIERveHlnZW4KIyB3aWxsIHBhcnNlIHRoZW0gbGlrZSBub3JtYWwgQysrIGJ1dCB3aWxsIGFzc3VtZSBhbGwgY2xhc3NlcyB1c2UgcHVibGljIGluc3RlYWQKIyBvZiBwcml2YXRlIGluaGVyaXRhbmNlIHdoZW4gbm8gZXhwbGljaXQgcHJvdGVjdGlvbiBrZXl3b3JkIGlzIHByZXNlbnQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKU0lQX1NVUFBPUlQgICAgICAgICAgICA9IE5PCgojIEZvciBNaWNyb3NvZnQncyBJREwgdGhlcmUgYXJlIHByb3BnZXQgYW5kIHByb3BwdXQgYXR0cmlidXRlcyB0byBpbmRpY2F0ZQojIGdldHRlciBhbmQgc2V0dGVyIG1ldGhvZHMgZm9yIGEgcHJvcGVydHkuIFNldHRpbmcgdGhpcyBvcHRpb24gdG8gWUVTIHdpbGwgbWFrZQojIGRveHlnZW4gdG8gcmVwbGFjZSB0aGUgZ2V0IGFuZCBzZXQgbWV0aG9kcyBieSBhIHByb3BlcnR5IGluIHRoZSBkb2N1bWVudGF0aW9uLgojIFRoaXMgd2lsbCBvbmx5IHdvcmsgaWYgdGhlIG1ldGhvZHMgYXJlIGluZGVlZCBnZXR0aW5nIG9yIHNldHRpbmcgYSBzaW1wbGUKIyB0eXBlLiBJZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgb3IgeW91IHdhbnQgdG8gc2hvdyB0aGUgbWV0aG9kcyBhbnl3YXksIHlvdQojIHNob3VsZCBzZXQgdGhpcyBvcHRpb24gdG8gTk8uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCklETF9QUk9QRVJUWV9TVVBQT1JUICAgPSBZRVMKCiMgSWYgbWVtYmVyIGdyb3VwaW5nIGlzIHVzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kIHRoZSBESVNUUklCVVRFX0dST1VQX0RPQwojIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGVuIGRveHlnZW4gd2lsbCByZXVzZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZmlyc3QKIyBtZW1iZXIgaW4gdGhlIGdyb3VwIChpZiBhbnkpIGZvciB0aGUgb3RoZXIgbWVtYmVycyBvZiB0aGUgZ3JvdXAuIEJ5IGRlZmF1bHQKIyBhbGwgbWVtYmVycyBvZiBhIGdyb3VwIG11c3QgYmUgZG9jdW1lbnRlZCBleHBsaWNpdGx5LgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkRJU1RSSUJVVEVfR1JPVVBfRE9DICAgPSBOTwoKIyBTZXQgdGhlIFNVQkdST1VQSU5HIHRhZyB0byBZRVMgdG8gYWxsb3cgY2xhc3MgbWVtYmVyIGdyb3VwcyBvZiB0aGUgc2FtZSB0eXBlCiMgKGZvciBpbnN0YW5jZSBhIGdyb3VwIG9mIHB1YmxpYyBmdW5jdGlvbnMpIHRvIGJlIHB1dCBhcyBhIHN1Ymdyb3VwIG9mIHRoYXQKIyB0eXBlIChlLmcuIHVuZGVyIHRoZSBQdWJsaWMgRnVuY3Rpb25zIHNlY3Rpb24pLiBTZXQgaXQgdG8gTk8gdG8gcHJldmVudAojIHN1Ymdyb3VwaW5nLiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGNhbiBiZSBkb25lIHBlciBjbGFzcyB1c2luZyB0aGUKIyBcbm9zdWJncm91cGluZyBjb21tYW5kLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpTVUJHUk9VUElORyAgICAgICAgICAgID0gWUVTCgojIFdoZW4gdGhlIElOTElORV9HUk9VUEVEX0NMQVNTRVMgdGFnIGlzIHNldCB0byBZRVMsIGNsYXNzZXMsIHN0cnVjdHMgYW5kIHVuaW9ucwojIGFyZSBzaG93biBpbnNpZGUgdGhlIGdyb3VwIGluIHdoaWNoIHRoZXkgYXJlIGluY2x1ZGVkIChlLmcuIHVzaW5nIFxpbmdyb3VwKQojIGluc3RlYWQgb2Ygb24gYSBzZXBhcmF0ZSBwYWdlIChmb3IgSFRNTCBhbmQgTWFuIHBhZ2VzKSBvciBzZWN0aW9uIChmb3IgTGFUZVgKIyBhbmQgUlRGKS4KIwojIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgZG9lcyBub3Qgd29yayBpbiBjb21iaW5hdGlvbiB3aXRoCiMgU0VQQVJBVEVfTUVNQkVSX1BBR0VTLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCklOTElORV9HUk9VUEVEX0NMQVNTRVMgPSBOTwoKIyBXaGVuIHRoZSBJTkxJTkVfU0lNUExFX1NUUlVDVFMgdGFnIGlzIHNldCB0byBZRVMsIHN0cnVjdHMsIGNsYXNzZXMsIGFuZCB1bmlvbnMKIyB3aXRoIG9ubHkgcHVibGljIGRhdGEgZmllbGRzIG9yIHNpbXBsZSB0eXBlZGVmIGZpZWxkcyB3aWxsIGJlIHNob3duIGlubGluZSBpbgojIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBzY29wZSBpbiB3aGljaCB0aGV5IGFyZSBkZWZpbmVkIChpLmUuIGZpbGUsCiMgbmFtZXNwYWNlLCBvciBncm91cCBkb2N1bWVudGF0aW9uKSwgcHJvdmlkZWQgdGhpcyBzY29wZSBpcyBkb2N1bWVudGVkLiBJZiBzZXQKIyB0byBOTywgc3RydWN0cywgY2xhc3NlcywgYW5kIHVuaW9ucyBhcmUgc2hvd24gb24gYSBzZXBhcmF0ZSBwYWdlIChmb3IgSFRNTCBhbmQKIyBNYW4gcGFnZXMpIG9yIHNlY3Rpb24gKGZvciBMYVRlWCBhbmQgUlRGKS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpJTkxJTkVfU0lNUExFX1NUUlVDVFMgID0gTk8KCiMgV2hlbiBUWVBFREVGX0hJREVTX1NUUlVDVCB0YWcgaXMgZW5hYmxlZCwgYSB0eXBlZGVmIG9mIGEgc3RydWN0LCB1bmlvbiwgb3IKIyBlbnVtIGlzIGRvY3VtZW50ZWQgYXMgc3RydWN0LCB1bmlvbiwgb3IgZW51bSB3aXRoIHRoZSBuYW1lIG9mIHRoZSB0eXBlZGVmLiBTbwojIHR5cGVkZWYgc3RydWN0IFR5cGVTIHt9IFR5cGVULCB3aWxsIGFwcGVhciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhcyBhIHN0cnVjdAojIHdpdGggbmFtZSBUeXBlVC4gV2hlbiBkaXNhYmxlZCB0aGUgdHlwZWRlZiB3aWxsIGFwcGVhciBhcyBhIG1lbWJlciBvZiBhIGZpbGUsCiMgbmFtZXNwYWNlLCBvciBjbGFzcy4gQW5kIHRoZSBzdHJ1Y3Qgd2lsbCBiZSBuYW1lZCBUeXBlUy4gVGhpcyBjYW4gdHlwaWNhbGx5IGJlCiMgdXNlZnVsIGZvciBDIGNvZGUgaW4gY2FzZSB0aGUgY29kaW5nIGNvbnZlbnRpb24gZGljdGF0ZXMgdGhhdCBhbGwgY29tcG91bmQKIyB0eXBlcyBhcmUgdHlwZWRlZidlZCBhbmQgb25seSB0aGUgdHlwZWRlZiBpcyByZWZlcmVuY2VkLCBuZXZlciB0aGUgdGFnIG5hbWUuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKVFlQRURFRl9ISURFU19TVFJVQ1QgICA9IE5PCgojIFRoZSBzaXplIG9mIHRoZSBzeW1ib2wgbG9va3VwIGNhY2hlIGNhbiBiZSBzZXQgdXNpbmcgTE9PS1VQX0NBQ0hFX1NJWkUuIFRoaXMKIyBjYWNoZSBpcyB1c2VkIHRvIHJlc29sdmUgc3ltYm9scyBnaXZlbiB0aGVpciBuYW1lIGFuZCBzY29wZS4gU2luY2UgdGhpcyBjYW4gYmUKIyBhbiBleHBlbnNpdmUgcHJvY2VzcyBhbmQgb2Z0ZW4gdGhlIHNhbWUgc3ltYm9sIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gdGhlCiMgY29kZSwgZG94eWdlbiBrZWVwcyBhIGNhY2hlIG9mIHByZS1yZXNvbHZlZCBzeW1ib2xzLiBJZiB0aGUgY2FjaGUgaXMgdG9vIHNtYWxsCiMgZG94eWdlbiB3aWxsIGJlY29tZSBzbG93ZXIuIElmIHRoZSBjYWNoZSBpcyB0b28gbGFyZ2UsIG1lbW9yeSBpcyB3YXN0ZWQuIFRoZQojIGNhY2hlIHNpemUgaXMgZ2l2ZW4gYnkgdGhpcyBmb3JtdWxhOiAyXigxNitMT09LVVBfQ0FDSEVfU0laRSkuIFRoZSB2YWxpZCByYW5nZQojIGlzIDAuLjksIHRoZSBkZWZhdWx0IGlzIDAsIGNvcnJlc3BvbmRpbmcgdG8gYSBjYWNoZSBzaXplIG9mIDJeMTY9NjU1MzYKIyBzeW1ib2xzLiBBdCB0aGUgZW5kIG9mIGEgcnVuIGRveHlnZW4gd2lsbCByZXBvcnQgdGhlIGNhY2hlIHVzYWdlIGFuZCBzdWdnZXN0CiMgdGhlIG9wdGltYWwgY2FjaGUgc2l6ZSBmcm9tIGEgc3BlZWQgcG9pbnQgb2Ygdmlldy4KIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiA5LCBkZWZhdWx0IHZhbHVlOiAwLgoKTE9PS1VQX0NBQ0hFX1NJWkUgICAgICA9IDAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCdWlsZCByZWxhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIElmIHRoZSBFWFRSQUNUX0FMTCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgYXNzdW1lIGFsbCBlbnRpdGllcyBpbgojIGRvY3VtZW50YXRpb24gYXJlIGRvY3VtZW50ZWQsIGV2ZW4gaWYgbm8gZG9jdW1lbnRhdGlvbiB3YXMgYXZhaWxhYmxlLiBQcml2YXRlCiMgY2xhc3MgbWVtYmVycyBhbmQgc3RhdGljIGZpbGUgbWVtYmVycyB3aWxsIGJlIGhpZGRlbiB1bmxlc3MgdGhlCiMgRVhUUkFDVF9QUklWQVRFIHJlc3BlY3RpdmVseSBFWFRSQUNUX1NUQVRJQyB0YWdzIGFyZSBzZXQgdG8gWUVTLgojIE5vdGU6IFRoaXMgd2lsbCBhbHNvIGRpc2FibGUgdGhlIHdhcm5pbmdzIGFib3V0IHVuZG9jdW1lbnRlZCBtZW1iZXJzIHRoYXQgYXJlCiMgbm9ybWFsbHkgcHJvZHVjZWQgd2hlbiBXQVJOSU5HUyBpcyBzZXQgdG8gWUVTLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkVYVFJBQ1RfQUxMICAgICAgICAgICAgPSBOTwoKIyBJZiB0aGUgRVhUUkFDVF9QUklWQVRFIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBwcml2YXRlIG1lbWJlcnMgb2YgYSBjbGFzcyB3aWxsCiMgYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKRVhUUkFDVF9QUklWQVRFICAgICAgICA9IE5PCgojIElmIHRoZSBFWFRSQUNUX1BBQ0tBR0UgdGFnIGlzIHNldCB0byBZRVMgYWxsIG1lbWJlcnMgd2l0aCBwYWNrYWdlIG9yIGludGVybmFsCiMgc2NvcGUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpFWFRSQUNUX1BBQ0tBR0UgICAgICAgID0gTk8KCiMgSWYgdGhlIEVYVFJBQ1RfU1RBVElDIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBzdGF0aWMgbWVtYmVycyBvZiBhIGZpbGUgd2lsbCBiZQojIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkVYVFJBQ1RfU1RBVElDICAgICAgICAgPSBOTwoKIyBJZiB0aGUgRVhUUkFDVF9MT0NBTF9DTEFTU0VTIHRhZyBpcyBzZXQgdG8gWUVTIGNsYXNzZXMgKGFuZCBzdHJ1Y3RzKSBkZWZpbmVkCiMgbG9jYWxseSBpbiBzb3VyY2UgZmlsZXMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIE5PCiMgb25seSBjbGFzc2VzIGRlZmluZWQgaW4gaGVhZGVyIGZpbGVzIGFyZSBpbmNsdWRlZC4gRG9lcyBub3QgaGF2ZSBhbnkgZWZmZWN0CiMgZm9yIEphdmEgc291cmNlcy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKRVhUUkFDVF9MT0NBTF9DTEFTU0VTICA9IFlFUwoKIyBUaGlzIGZsYWcgaXMgb25seSB1c2VmdWwgZm9yIE9iamVjdGl2ZS1DIGNvZGUuIFdoZW4gc2V0IHRvIFlFUyBsb2NhbCBtZXRob2RzLAojIHdoaWNoIGFyZSBkZWZpbmVkIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBzZWN0aW9uIGJ1dCBub3QgaW4gdGhlIGludGVyZmFjZSBhcmUKIyBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIE5PIG9ubHkgbWV0aG9kcyBpbiB0aGUgaW50ZXJmYWNlIGFyZQojIGluY2x1ZGVkLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkVYVFJBQ1RfTE9DQUxfTUVUSE9EUyAgPSBOTwoKIyBJZiB0aGlzIGZsYWcgaXMgc2V0IHRvIFlFUywgdGhlIG1lbWJlcnMgb2YgYW5vbnltb3VzIG5hbWVzcGFjZXMgd2lsbCBiZQojIGV4dHJhY3RlZCBhbmQgYXBwZWFyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFzIGEgbmFtZXNwYWNlIGNhbGxlZAojICdhbm9ueW1vdXNfbmFtZXNwYWNle2ZpbGV9Jywgd2hlcmUgZmlsZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIGJhc2UgbmFtZSBvZgojIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIGFub255bW91cyBuYW1lc3BhY2UuIEJ5IGRlZmF1bHQgYW5vbnltb3VzIG5hbWVzcGFjZQojIGFyZSBoaWRkZW4uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKRVhUUkFDVF9BTk9OX05TUEFDRVMgICA9IE5PCgojIElmIHRoZSBISURFX1VORE9DX01FTUJFUlMgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBoaWRlIGFsbAojIHVuZG9jdW1lbnRlZCBtZW1iZXJzIGluc2lkZSBkb2N1bWVudGVkIGNsYXNzZXMgb3IgZmlsZXMuIElmIHNldCB0byBOTyB0aGVzZQojIG1lbWJlcnMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgdmFyaW91cyBvdmVydmlld3MsIGJ1dCBubyBkb2N1bWVudGF0aW9uCiMgc2VjdGlvbiBpcyBnZW5lcmF0ZWQuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3QgaWYgRVhUUkFDVF9BTEwgaXMgZW5hYmxlZC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpISURFX1VORE9DX01FTUJFUlMgICAgID0gTk8KCiMgSWYgdGhlIEhJREVfVU5ET0NfQ0xBU1NFUyB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGhpZGUgYWxsCiMgdW5kb2N1bWVudGVkIGNsYXNzZXMgdGhhdCBhcmUgbm9ybWFsbHkgdmlzaWJsZSBpbiB0aGUgY2xhc3MgaGllcmFyY2h5LiBJZiBzZXQKIyB0byBOTyB0aGVzZSBjbGFzc2VzIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHZhcmlvdXMgb3ZlcnZpZXdzLiBUaGlzIG9wdGlvbiBoYXMKIyBubyBlZmZlY3QgaWYgRVhUUkFDVF9BTEwgaXMgZW5hYmxlZC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpISURFX1VORE9DX0NMQVNTRVMgICAgID0gTk8KCiMgSWYgdGhlIEhJREVfRlJJRU5EX0NPTVBPVU5EUyB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGhpZGUgYWxsIGZyaWVuZAojIChjbGFzc3xzdHJ1Y3R8dW5pb24pIGRlY2xhcmF0aW9ucy4gSWYgc2V0IHRvIE5PIHRoZXNlIGRlY2xhcmF0aW9ucyB3aWxsIGJlCiMgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKSElERV9GUklFTkRfQ09NUE9VTkRTICA9IE5PCgojIElmIHRoZSBISURFX0lOX0JPRFlfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGhpZGUgYW55CiMgZG9jdW1lbnRhdGlvbiBibG9ja3MgZm91bmQgaW5zaWRlIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24uIElmIHNldCB0byBOTyB0aGVzZQojIGJsb2NrcyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBmdW5jdGlvbidzIGRldGFpbGVkIGRvY3VtZW50YXRpb24gYmxvY2suCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKSElERV9JTl9CT0RZX0RPQ1MgICAgICA9IE5PCgojIFRoZSBJTlRFUk5BTF9ET0NTIHRhZyBkZXRlcm1pbmVzIGlmIGRvY3VtZW50YXRpb24gdGhhdCBpcyB0eXBlZCBhZnRlciBhCiMgXGludGVybmFsIGNvbW1hbmQgaXMgaW5jbHVkZWQuIElmIHRoZSB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gdGhlIGRvY3VtZW50YXRpb24KIyB3aWxsIGJlIGV4Y2x1ZGVkLiBTZXQgaXQgdG8gWUVTIHRvIGluY2x1ZGUgdGhlIGludGVybmFsIGRvY3VtZW50YXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKSU5URVJOQUxfRE9DUyAgICAgICAgICA9IE5PCgojIElmIHRoZSBDQVNFX1NFTlNFX05BTUVTIHRhZyBpcyBzZXQgdG8gTk8gdGhlbiBkb3h5Z2VuIHdpbGwgb25seSBnZW5lcmF0ZSBmaWxlCiMgbmFtZXMgaW4gbG93ZXItY2FzZSBsZXR0ZXJzLiBJZiBzZXQgdG8gWUVTIHVwcGVyLWNhc2UgbGV0dGVycyBhcmUgYWxzbwojIGFsbG93ZWQuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBoYXZlIGNsYXNzZXMgb3IgZmlsZXMgd2hvc2UgbmFtZXMgb25seSBkaWZmZXIKIyBpbiBjYXNlIGFuZCBpZiB5b3VyIGZpbGUgc3lzdGVtIHN1cHBvcnRzIGNhc2Ugc2Vuc2l0aXZlIGZpbGUgbmFtZXMuIFdpbmRvd3MKIyBhbmQgTWFjIHVzZXJzIGFyZSBhZHZpc2VkIHRvIHNldCB0aGlzIG9wdGlvbiB0byBOTy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogc3lzdGVtIGRlcGVuZGVudC4KCkNBU0VfU0VOU0VfTkFNRVMgICAgICAgPSBOTwoKIyBJZiB0aGUgSElERV9TQ09QRV9OQU1FUyB0YWcgaXMgc2V0IHRvIE5PIHRoZW4gZG94eWdlbiB3aWxsIHNob3cgbWVtYmVycyB3aXRoCiMgdGhlaXIgZnVsbCBjbGFzcyBhbmQgbmFtZXNwYWNlIHNjb3BlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gSWYgc2V0IHRvIFlFUyB0aGUKIyBzY29wZSB3aWxsIGJlIGhpZGRlbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpISURFX1NDT1BFX05BTUVTICAgICAgID0gWUVTCgojIElmIHRoZSBTSE9XX0lOQ0xVREVfRklMRVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgcHV0IGEgbGlzdCBvZgojIHRoZSBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBieSBhIGZpbGUgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmaWxlLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpTSE9XX0lOQ0xVREVfRklMRVMgICAgID0gWUVTCgojIElmIHRoZSBTSE9XX0dST1VQRURfTUVNQl9JTkMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBEb3h5Z2VuIHdpbGwgYWRkIGZvciBlYWNoCiMgZ3JvdXBlZCBtZW1iZXIgYW4gaW5jbHVkZSBzdGF0ZW1lbnQgdG8gdGhlIGRvY3VtZW50YXRpb24sIHRlbGxpbmcgdGhlIHJlYWRlcgojIHdoaWNoIGZpbGUgdG8gaW5jbHVkZSBpbiBvcmRlciB0byB1c2UgdGhlIG1lbWJlci4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpTSE9XX0dST1VQRURfTUVNQl9JTkMgID0gTk8KCiMgSWYgdGhlIEZPUkNFX0xPQ0FMX0lOQ0xVREVTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGxpc3QgaW5jbHVkZQojIGZpbGVzIHdpdGggZG91YmxlIHF1b3RlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiByYXRoZXIgdGhhbiB3aXRoIHNoYXJwIGJyYWNrZXRzLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkZPUkNFX0xPQ0FMX0lOQ0xVREVTICAgPSBOTwoKIyBJZiB0aGUgSU5MSU5FX0lORk8gdGFnIGlzIHNldCB0byBZRVMgdGhlbiBhIHRhZyBbaW5saW5lXSBpcyBpbnNlcnRlZCBpbiB0aGUKIyBkb2N1bWVudGF0aW9uIGZvciBpbmxpbmUgbWVtYmVycy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKSU5MSU5FX0lORk8gICAgICAgICAgICA9IFlFUwoKIyBJZiB0aGUgU09SVF9NRU1CRVJfRE9DUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBzb3J0IHRoZQojIChkZXRhaWxlZCkgZG9jdW1lbnRhdGlvbiBvZiBmaWxlIGFuZCBjbGFzcyBtZW1iZXJzIGFscGhhYmV0aWNhbGx5IGJ5IG1lbWJlcgojIG5hbWUuIElmIHNldCB0byBOTyB0aGUgbWVtYmVycyB3aWxsIGFwcGVhciBpbiBkZWNsYXJhdGlvbiBvcmRlci4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKU09SVF9NRU1CRVJfRE9DUyAgICAgICA9IFlFUwoKIyBJZiB0aGUgU09SVF9CUklFRl9ET0NTIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHNvcnQgdGhlIGJyaWVmCiMgZGVzY3JpcHRpb25zIG9mIGZpbGUsIG5hbWVzcGFjZSBhbmQgY2xhc3MgbWVtYmVycyBhbHBoYWJldGljYWxseSBieSBtZW1iZXIKIyBuYW1lLiBJZiBzZXQgdG8gTk8gdGhlIG1lbWJlcnMgd2lsbCBhcHBlYXIgaW4gZGVjbGFyYXRpb24gb3JkZXIuIE5vdGUgdGhhdAojIHRoaXMgd2lsbCBhbHNvIGluZmx1ZW5jZSB0aGUgb3JkZXIgb2YgdGhlIGNsYXNzZXMgaW4gdGhlIGNsYXNzIGxpc3QuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKU09SVF9CUklFRl9ET0NTICAgICAgICA9IE5PCgojIElmIHRoZSBTT1JUX01FTUJFUlNfQ1RPUlNfMVNUIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHNvcnQgdGhlCiMgKGJyaWVmIGFuZCBkZXRhaWxlZCkgZG9jdW1lbnRhdGlvbiBvZiBjbGFzcyBtZW1iZXJzIHNvIHRoYXQgY29uc3RydWN0b3JzIGFuZAojIGRlc3RydWN0b3JzIGFyZSBsaXN0ZWQgZmlyc3QuIElmIHNldCB0byBOTyB0aGUgY29uc3RydWN0b3JzIHdpbGwgYXBwZWFyIGluIHRoZQojIHJlc3BlY3RpdmUgb3JkZXJzIGRlZmluZWQgYnkgU09SVF9CUklFRl9ET0NTIGFuZCBTT1JUX01FTUJFUl9ET0NTLgojIE5vdGU6IElmIFNPUlRfQlJJRUZfRE9DUyBpcyBzZXQgdG8gTk8gdGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3Igc29ydGluZyBicmllZgojIG1lbWJlciBkb2N1bWVudGF0aW9uLgojIE5vdGU6IElmIFNPUlRfTUVNQkVSX0RPQ1MgaXMgc2V0IHRvIE5PIHRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9yIHNvcnRpbmcKIyBkZXRhaWxlZCBtZW1iZXIgZG9jdW1lbnRhdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpTT1JUX01FTUJFUlNfQ1RPUlNfMVNUID0gTk8KCiMgSWYgdGhlIFNPUlRfR1JPVVBfTkFNRVMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgc29ydCB0aGUgaGllcmFyY2h5CiMgb2YgZ3JvdXAgbmFtZXMgaW50byBhbHBoYWJldGljYWwgb3JkZXIuIElmIHNldCB0byBOTyB0aGUgZ3JvdXAgbmFtZXMgd2lsbAojIGFwcGVhciBpbiB0aGVpciBkZWZpbmVkIG9yZGVyLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KClNPUlRfR1JPVVBfTkFNRVMgICAgICAgPSBOTwoKIyBJZiB0aGUgU09SVF9CWV9TQ09QRV9OQU1FIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgY2xhc3MgbGlzdCB3aWxsIGJlIHNvcnRlZCBieQojIGZ1bGx5LXF1YWxpZmllZCBuYW1lcywgaW5jbHVkaW5nIG5hbWVzcGFjZXMuIElmIHNldCB0byBOTywgdGhlIGNsYXNzIGxpc3Qgd2lsbAojIGJlIHNvcnRlZCBvbmx5IGJ5IGNsYXNzIG5hbWUsIG5vdCBpbmNsdWRpbmcgdGhlIG5hbWVzcGFjZSBwYXJ0LgojIE5vdGU6IFRoaXMgb3B0aW9uIGlzIG5vdCB2ZXJ5IHVzZWZ1bCBpZiBISURFX1NDT1BFX05BTUVTIGlzIHNldCB0byBZRVMuCiMgTm90ZTogVGhpcyBvcHRpb24gYXBwbGllcyBvbmx5IHRvIHRoZSBjbGFzcyBsaXN0LCBub3QgdG8gdGhlIGFscGhhYmV0aWNhbAojIGxpc3QuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKU09SVF9CWV9TQ09QRV9OQU1FICAgICA9IE5PCgojIElmIHRoZSBTVFJJQ1RfUFJPVE9fTUFUQ0hJTkcgb3B0aW9uIGlzIGVuYWJsZWQgYW5kIGRveHlnZW4gZmFpbHMgdG8gZG8gcHJvcGVyCiMgdHlwZSByZXNvbHV0aW9uIG9mIGFsbCBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gaXQgd2lsbCByZWplY3QgYSBtYXRjaCBiZXR3ZWVuCiMgdGhlIHByb3RvdHlwZSBhbmQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEgbWVtYmVyIGZ1bmN0aW9uIGV2ZW4gaWYgdGhlcmUgaXMKIyBvbmx5IG9uZSBjYW5kaWRhdGUgb3IgaXQgaXMgb2J2aW91cyB3aGljaCBjYW5kaWRhdGUgdG8gY2hvb3NlIGJ5IGRvaW5nIGEKIyBzaW1wbGUgc3RyaW5nIG1hdGNoLiBCeSBkaXNhYmxpbmcgU1RSSUNUX1BST1RPX01BVENISU5HIGRveHlnZW4gd2lsbCBzdGlsbAojIGFjY2VwdCBhIG1hdGNoIGJldHdlZW4gcHJvdG90eXBlIGFuZCBpbXBsZW1lbnRhdGlvbiBpbiBzdWNoIGNhc2VzLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KClNUUklDVF9QUk9UT19NQVRDSElORyAgPSBOTwoKIyBUaGUgR0VORVJBVEVfVE9ET0xJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlFUykgb3IgZGlzYWJsZSAoIE5PKSB0aGUKIyB0b2RvIGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXHRvZG8gY29tbWFuZHMgaW4gdGhlCiMgZG9jdW1lbnRhdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKR0VORVJBVEVfVE9ET0xJU1QgICAgICA9IFlFUwoKIyBUaGUgR0VORVJBVEVfVEVTVExJU1QgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSAoIFlFUykgb3IgZGlzYWJsZSAoIE5PKSB0aGUKIyB0ZXN0IGxpc3QuIFRoaXMgbGlzdCBpcyBjcmVhdGVkIGJ5IHB1dHRpbmcgXHRlc3QgY29tbWFuZHMgaW4gdGhlCiMgZG9jdW1lbnRhdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKR0VORVJBVEVfVEVTVExJU1QgICAgICA9IFlFUwoKIyBUaGUgR0VORVJBVEVfQlVHTElTVCB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlICggWUVTKSBvciBkaXNhYmxlICggTk8pIHRoZSBidWcKIyBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFxidWcgY29tbWFuZHMgaW4gdGhlIGRvY3VtZW50YXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCkdFTkVSQVRFX0JVR0xJU1QgICAgICAgPSBZRVMKCiMgVGhlIEdFTkVSQVRFX0RFUFJFQ0FURURMSVNUIHRhZyBjYW4gYmUgdXNlZCB0byBlbmFibGUgKCBZRVMpIG9yIGRpc2FibGUgKCBOTykKIyB0aGUgZGVwcmVjYXRlZCBsaXN0LiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBieSBwdXR0aW5nIFxkZXByZWNhdGVkIGNvbW1hbmRzIGluCiMgdGhlIGRvY3VtZW50YXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCkdFTkVSQVRFX0RFUFJFQ0FURURMSVNUPSBZRVMKCiMgVGhlIEVOQUJMRURfU0VDVElPTlMgdGFnIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBjb25kaXRpb25hbCBkb2N1bWVudGF0aW9uCiMgc2VjdGlvbnMsIG1hcmtlZCBieSBcaWYgPHNlY3Rpb25fbGFiZWw+IC4uLiBcZW5kaWYgYW5kIFxjb25kIDxzZWN0aW9uX2xhYmVsPgojIC4uLiBcZW5kY29uZCBibG9ja3MuCgpFTkFCTEVEX1NFQ1RJT05TICAgICAgID0KCiMgVGhlIE1BWF9JTklUSUFMSVpFUl9MSU5FUyB0YWcgZGV0ZXJtaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgdGhhdCB0aGUKIyBpbml0aWFsIHZhbHVlIG9mIGEgdmFyaWFibGUgb3IgbWFjcm8gLyBkZWZpbmUgY2FuIGhhdmUgZm9yIGl0IHRvIGFwcGVhciBpbiB0aGUKIyBkb2N1bWVudGF0aW9uLiBJZiB0aGUgaW5pdGlhbGl6ZXIgY29uc2lzdHMgb2YgbW9yZSBsaW5lcyB0aGFuIHNwZWNpZmllZCBoZXJlCiMgaXQgd2lsbCBiZSBoaWRkZW4uIFVzZSBhIHZhbHVlIG9mIDAgdG8gaGlkZSBpbml0aWFsaXplcnMgY29tcGxldGVseS4gVGhlCiMgYXBwZWFyYW5jZSBvZiB0aGUgdmFsdWUgb2YgaW5kaXZpZHVhbCB2YXJpYWJsZXMgYW5kIG1hY3JvcyAvIGRlZmluZXMgY2FuIGJlCiMgY29udHJvbGxlZCB1c2luZyBcc2hvd2luaXRpYWxpemVyIG9yIFxoaWRlaW5pdGlhbGl6ZXIgY29tbWFuZCBpbiB0aGUKIyBkb2N1bWVudGF0aW9uIHJlZ2FyZGxlc3Mgb2YgdGhpcyBzZXR0aW5nLgojIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDEwMDAwLCBkZWZhdWx0IHZhbHVlOiAzMC4KCk1BWF9JTklUSUFMSVpFUl9MSU5FUyAgPSAzMAoKIyBTZXQgdGhlIFNIT1dfVVNFRF9GSUxFUyB0YWcgdG8gTk8gdG8gZGlzYWJsZSB0aGUgbGlzdCBvZiBmaWxlcyBnZW5lcmF0ZWQgYXQKIyB0aGUgYm90dG9tIG9mIHRoZSBkb2N1bWVudGF0aW9uIG9mIGNsYXNzZXMgYW5kIHN0cnVjdHMuIElmIHNldCB0byBZRVMgdGhlIGxpc3QKIyB3aWxsIG1lbnRpb24gdGhlIGZpbGVzIHRoYXQgd2VyZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBkb2N1bWVudGF0aW9uLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpTSE9XX1VTRURfRklMRVMgICAgICAgID0gWUVTCgojIFNldCB0aGUgU0hPV19GSUxFUyB0YWcgdG8gTk8gdG8gZGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgRmlsZXMgcGFnZS4gVGhpcwojIHdpbGwgcmVtb3ZlIHRoZSBGaWxlcyBlbnRyeSBmcm9tIHRoZSBRdWljayBJbmRleCBhbmQgZnJvbSB0aGUgRm9sZGVyIFRyZWUgVmlldwojIChpZiBzcGVjaWZpZWQpLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpTSE9XX0ZJTEVTICAgICAgICAgICAgID0gWUVTCgojIFNldCB0aGUgU0hPV19OQU1FU1BBQ0VTIHRhZyB0byBOTyB0byBkaXNhYmxlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBOYW1lc3BhY2VzCiMgcGFnZS4gVGhpcyB3aWxsIHJlbW92ZSB0aGUgTmFtZXNwYWNlcyBlbnRyeSBmcm9tIHRoZSBRdWljayBJbmRleCBhbmQgZnJvbSB0aGUKIyBGb2xkZXIgVHJlZSBWaWV3IChpZiBzcGVjaWZpZWQpLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpTSE9XX05BTUVTUEFDRVMgICAgICAgID0gTk8KCiMgVGhlIEZJTEVfVkVSU0lPTl9GSUxURVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwcm9ncmFtIG9yIHNjcmlwdCB0aGF0CiMgZG94eWdlbiBzaG91bGQgaW52b2tlIHRvIGdldCB0aGUgY3VycmVudCB2ZXJzaW9uIGZvciBlYWNoIGZpbGUgKHR5cGljYWxseSBmcm9tCiMgdGhlIHZlcnNpb24gY29udHJvbCBzeXN0ZW0pLiBEb3h5Z2VuIHdpbGwgaW52b2tlIHRoZSBwcm9ncmFtIGJ5IGV4ZWN1dGluZyAodmlhCiMgcG9wZW4oKSkgdGhlIGNvbW1hbmQgY29tbWFuZCBpbnB1dC1maWxlLCB3aGVyZSBjb21tYW5kIGlzIHRoZSB2YWx1ZSBvZiB0aGUKIyBGSUxFX1ZFUlNJT05fRklMVEVSIHRhZywgYW5kIGlucHV0LWZpbGUgaXMgdGhlIG5hbWUgb2YgYW4gaW5wdXQgZmlsZSBwcm92aWRlZAojIGJ5IGRveHlnZW4uIFdoYXRldmVyIHRoZSBwcm9ncmFtIHdyaXRlcyB0byBzdGFuZGFyZCBvdXRwdXQgaXMgdXNlZCBhcyB0aGUgZmlsZQojIHZlcnNpb24uIEZvciBhbiBleGFtcGxlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4KCkZJTEVfVkVSU0lPTl9GSUxURVIgICAgPQoKIyBUaGUgTEFZT1VUX0ZJTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBsYXlvdXQgZmlsZSB3aGljaCB3aWxsIGJlIHBhcnNlZAojIGJ5IGRveHlnZW4uIFRoZSBsYXlvdXQgZmlsZSBjb250cm9scyB0aGUgZ2xvYmFsIHN0cnVjdHVyZSBvZiB0aGUgZ2VuZXJhdGVkCiMgb3V0cHV0IGZpbGVzIGluIGFuIG91dHB1dCBmb3JtYXQgaW5kZXBlbmRlbnQgd2F5LiBUbyBjcmVhdGUgdGhlIGxheW91dCBmaWxlCiMgdGhhdCByZXByZXNlbnRzIGRveHlnZW4ncyBkZWZhdWx0cywgcnVuIGRveHlnZW4gd2l0aCB0aGUgLWwgb3B0aW9uLiBZb3UgY2FuCiMgb3B0aW9uYWxseSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGFmdGVyIHRoZSBvcHRpb24sIGlmIG9taXR0ZWQgRG94eWdlbkxheW91dC54bWwKIyB3aWxsIGJlIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIGxheW91dCBmaWxlLgojCiMgTm90ZSB0aGF0IGlmIHlvdSBydW4gZG94eWdlbiBmcm9tIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYSBmaWxlIGNhbGxlZAojIERveHlnZW5MYXlvdXQueG1sLCBkb3h5Z2VuIHdpbGwgcGFyc2UgaXQgYXV0b21hdGljYWxseSBldmVuIGlmIHRoZSBMQVlPVVRfRklMRQojIHRhZyBpcyBsZWZ0IGVtcHR5LgoKTEFZT1VUX0ZJTEUgICAgICAgICAgICA9CgojIFRoZSBDSVRFX0JJQl9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBiaWIgZmlsZXMgY29udGFpbmluZwojIHRoZSByZWZlcmVuY2UgZGVmaW5pdGlvbnMuIFRoaXMgbXVzdCBiZSBhIGxpc3Qgb2YgLmJpYiBmaWxlcy4gVGhlIC5iaWIKIyBleHRlbnNpb24gaXMgYXV0b21hdGljYWxseSBhcHBlbmRlZCBpZiBvbWl0dGVkLiBUaGlzIHJlcXVpcmVzIHRoZSBiaWJ0ZXggdG9vbAojIHRvIGJlIGluc3RhbGxlZC4gU2VlIGFsc28gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaWJUZVggZm9yIG1vcmUgaW5mby4KIyBGb3IgTGFUZVggdGhlIHN0eWxlIG9mIHRoZSBiaWJsaW9ncmFwaHkgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcKIyBMQVRFWF9CSUJfU1RZTEUuIFRvIHVzZSB0aGlzIGZlYXR1cmUgeW91IG5lZWQgYmlidGV4IGFuZCBwZXJsIGF2YWlsYWJsZSBpbiB0aGUKIyBzZWFyY2ggcGF0aC4gRG8gbm90IHVzZSBmaWxlIG5hbWVzIHdpdGggc3BhY2VzLCBiaWJ0ZXggY2Fubm90IGhhbmRsZSB0aGVtLiBTZWUKIyBhbHNvIFxjaXRlIGZvciBpbmZvIGhvdyB0byBjcmVhdGUgcmVmZXJlbmNlcy4KCkNJVEVfQklCX0ZJTEVTICAgICAgICAgPQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHdhcm5pbmcgYW5kIHByb2dyZXNzIG1lc3NhZ2VzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgVGhlIFFVSUVUIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgbWVzc2FnZXMgdGhhdCBhcmUgZ2VuZXJhdGVkIHRvCiMgc3RhbmRhcmQgb3V0cHV0IGJ5IGRveHlnZW4uIElmIFFVSUVUIGlzIHNldCB0byBZRVMgdGhpcyBpbXBsaWVzIHRoYXQgdGhlCiMgbWVzc2FnZXMgYXJlIG9mZi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpRVUlFVCAgICAgICAgICAgICAgICAgID0gTk8KCiMgVGhlIFdBUk5JTkdTIHRhZyBjYW4gYmUgdXNlZCB0byB0dXJuIG9uL29mZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IGFyZQojIGdlbmVyYXRlZCB0byBzdGFuZGFyZCBlcnJvciAoIHN0ZGVycikgYnkgZG94eWdlbi4gSWYgV0FSTklOR1MgaXMgc2V0IHRvIFlFUwojIHRoaXMgaW1wbGllcyB0aGF0IHRoZSB3YXJuaW5ncyBhcmUgb24uCiMKIyBUaXA6IFR1cm4gd2FybmluZ3Mgb24gd2hpbGUgd3JpdGluZyB0aGUgZG9jdW1lbnRhdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKV0FSTklOR1MgICAgICAgICAgICAgICA9IFlFUwoKIyBJZiB0aGUgV0FSTl9JRl9VTkRPQ1VNRU5URUQgdGFnIGlzIHNldCB0byBZRVMsIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlCiMgd2FybmluZ3MgZm9yIHVuZG9jdW1lbnRlZCBtZW1iZXJzLiBJZiBFWFRSQUNUX0FMTCBpcyBzZXQgdG8gWUVTIHRoZW4gdGhpcyBmbGFnCiMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGRpc2FibGVkLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpXQVJOX0lGX1VORE9DVU1FTlRFRCAgID0gWUVTCgojIElmIHRoZSBXQVJOX0lGX0RPQ19FUlJPUiB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIGdlbmVyYXRlIHdhcm5pbmdzIGZvcgojIHBvdGVudGlhbCBlcnJvcnMgaW4gdGhlIGRvY3VtZW50YXRpb24sIHN1Y2ggYXMgbm90IGRvY3VtZW50aW5nIHNvbWUgcGFyYW1ldGVycwojIGluIGEgZG9jdW1lbnRlZCBmdW5jdGlvbiwgb3IgZG9jdW1lbnRpbmcgcGFyYW1ldGVycyB0aGF0IGRvbid0IGV4aXN0IG9yIHVzaW5nCiMgbWFya3VwIGNvbW1hbmRzIHdyb25nbHkuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCldBUk5fSUZfRE9DX0VSUk9SICAgICAgPSBZRVMKCiMgVGhpcyBXQVJOX05PX1BBUkFNRE9DIG9wdGlvbiBjYW4gYmUgZW5hYmxlZCB0byBnZXQgd2FybmluZ3MgZm9yIGZ1bmN0aW9ucyB0aGF0CiMgYXJlIGRvY3VtZW50ZWQsIGJ1dCBoYXZlIG5vIGRvY3VtZW50YXRpb24gZm9yIHRoZWlyIHBhcmFtZXRlcnMgb3IgcmV0dXJuCiMgdmFsdWUuIElmIHNldCB0byBOTyBkb3h5Z2VuIHdpbGwgb25seSB3YXJuIGFib3V0IHdyb25nIG9yIGluY29tcGxldGUgcGFyYW1ldGVyCiMgZG9jdW1lbnRhdGlvbiwgYnV0IG5vdCBhYm91dCB0aGUgYWJzZW5jZSBvZiBkb2N1bWVudGF0aW9uLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCldBUk5fTk9fUEFSQU1ET0MgICAgICAgPSBOTwoKIyBUaGUgV0FSTl9GT1JNQVQgdGFnIGRldGVybWluZXMgdGhlIGZvcm1hdCBvZiB0aGUgd2FybmluZyBtZXNzYWdlcyB0aGF0IGRveHlnZW4KIyBjYW4gcHJvZHVjZS4gVGhlIHN0cmluZyBzaG91bGQgY29udGFpbiB0aGUgJGZpbGUsICRsaW5lLCBhbmQgJHRleHQgdGFncywgd2hpY2gKIyB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBmaWxlIGFuZCBsaW5lIG51bWJlciBmcm9tIHdoaWNoIHRoZSB3YXJuaW5nIG9yaWdpbmF0ZWQKIyBhbmQgdGhlIHdhcm5pbmcgdGV4dC4gT3B0aW9uYWxseSB0aGUgZm9ybWF0IG1heSBjb250YWluICR2ZXJzaW9uLCB3aGljaCB3aWxsCiMgYmUgcmVwbGFjZWQgYnkgdGhlIHZlcnNpb24gb2YgdGhlIGZpbGUgKGlmIGl0IGNvdWxkIGJlIG9idGFpbmVkIHZpYQojIEZJTEVfVkVSU0lPTl9GSUxURVIpCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6ICRmaWxlOiRsaW5lOiAkdGV4dC4KCldBUk5fRk9STUFUICAgICAgICAgICAgPSAiJGZpbGU6JGxpbmU6ICR0ZXh0IgoKIyBUaGUgV0FSTl9MT0dGSUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgZmlsZSB0byB3aGljaCB3YXJuaW5nIGFuZCBlcnJvcgojIG1lc3NhZ2VzIHNob3VsZCBiZSB3cml0dGVuLiBJZiBsZWZ0IGJsYW5rIHRoZSBvdXRwdXQgaXMgd3JpdHRlbiB0byBzdGFuZGFyZAojIGVycm9yIChzdGRlcnIpLgoKV0FSTl9MT0dGSUxFICAgICAgICAgICA9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIGlucHV0IGZpbGVzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgVGhlIElOUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGVzIGFuZC9vciBkaXJlY3RvcmllcyB0aGF0IGNvbnRhaW4KIyBkb2N1bWVudGVkIHNvdXJjZSBmaWxlcy4gWW91IG1heSBlbnRlciBmaWxlIG5hbWVzIGxpa2UgbXlmaWxlLmNwcCBvcgojIGRpcmVjdG9yaWVzIGxpa2UgL3Vzci9zcmMvbXlwcm9qZWN0LiBTZXBhcmF0ZSB0aGUgZmlsZXMgb3IgZGlyZWN0b3JpZXMgd2l0aAojIHNwYWNlcy4KIyBOb3RlOiBJZiB0aGlzIHRhZyBpcyBlbXB0eSB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgc2VhcmNoZWQuCgpJTlBVVCAgICAgICAgICAgICAgICAgID0gCgojIFRoaXMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBvZiB0aGUgc291cmNlIGZpbGVzCiMgdGhhdCBkb3h5Z2VuIHBhcnNlcy4gSW50ZXJuYWxseSBkb3h5Z2VuIHVzZXMgdGhlIFVURi04IGVuY29kaW5nLiBEb3h5Z2VuIHVzZXMKIyBsaWJpY29udiAob3IgdGhlIGljb252IGJ1aWx0IGludG8gbGliYykgZm9yIHRoZSB0cmFuc2NvZGluZy4gU2VlIHRoZSBsaWJpY29udgojIGRvY3VtZW50YXRpb24gKHNlZTogaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmljb252KSBmb3IgdGhlIGxpc3Qgb2YKIyBwb3NzaWJsZSBlbmNvZGluZ3MuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFVURi04LgoKSU5QVVRfRU5DT0RJTkcgICAgICAgICA9IFVURi04CgojIElmIHRoZSB2YWx1ZSBvZiB0aGUgSU5QVVQgdGFnIGNvbnRhaW5zIGRpcmVjdG9yaWVzLCB5b3UgY2FuIHVzZSB0aGUKIyBGSUxFX1BBVFRFUk5TIHRhZyB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHdpbGRjYXJkIHBhdHRlcm5zIChsaWtlICouY3BwIGFuZAojICouaCkgdG8gZmlsdGVyIG91dCB0aGUgc291cmNlLWZpbGVzIGluIHRoZSBkaXJlY3Rvcmllcy4gSWYgbGVmdCBibGFuayB0aGUKIyBmb2xsb3dpbmcgcGF0dGVybnMgYXJlIHRlc3RlZDoqLmMsICouY2MsICouY3h4LCAqLmNwcCwgKi5jKyssICouamF2YSwgKi5paSwKIyAqLml4eCwgKi5pcHAsICouaSsrLCAqLmlubCwgKi5pZGwsICouZGRsLCAqLm9kbCwgKi5oLCAqLmhoLCAqLmh4eCwgKi5ocHAsCiMgKi5oKyssICouY3MsICouZCwgKi5waHAsICoucGhwNCwgKi5waHA1LCAqLnBodG1sLCAqLmluYywgKi5tLCAqLm1hcmtkb3duLAojICoubWQsICoubW0sICouZG94LCAqLnB5LCAqLmY5MCwgKi5mLCAqLmZvciwgKi50Y2wsICoudmhkLCAqLnZoZGwsICoudWNmLAojICoucXNmLCAqLmFzIGFuZCAqLmpzLgoKRklMRV9QQVRURVJOUyAgICAgICAgICA9CgojIFRoZSBSRUNVUlNJVkUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciBvciBub3Qgc3ViZGlyZWN0b3JpZXMgc2hvdWxkCiMgYmUgc2VhcmNoZWQgZm9yIGlucHV0IGZpbGVzIGFzIHdlbGwuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKUkVDVVJTSVZFICAgICAgICAgICAgICA9IFlFUwoKIyBUaGUgRVhDTFVERSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBmaWxlcyBhbmQvb3IgZGlyZWN0b3JpZXMgdGhhdCBzaG91bGQgYmUKIyBleGNsdWRlZCBmcm9tIHRoZSBJTlBVVCBzb3VyY2UgZmlsZXMuIFRoaXMgd2F5IHlvdSBjYW4gZWFzaWx5IGV4Y2x1ZGUgYQojIHN1YmRpcmVjdG9yeSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUgd2hvc2Ugcm9vdCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgSU5QVVQgdGFnLgojCiMgTm90ZSB0aGF0IHJlbGF0aXZlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggZG94eWdlbiBpcwojIHJ1bi4KCkVYQ0xVREUgICAgICAgICAgICAgICAgPSB0ZXN0cwoKIyBUaGUgRVhDTFVERV9TWU1MSU5LUyB0YWcgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IHdoZXRoZXIgb3Igbm90IGZpbGVzIG9yCiMgZGlyZWN0b3JpZXMgdGhhdCBhcmUgc3ltYm9saWMgbGlua3MgKGEgVW5peCBmaWxlIHN5c3RlbSBmZWF0dXJlKSBhcmUgZXhjbHVkZWQKIyBmcm9tIHRoZSBpbnB1dC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpFWENMVURFX1NZTUxJTktTICAgICAgID0gTk8KCiMgSWYgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZQojIEVYQ0xVREVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybnMgdG8gZXhjbHVkZQojIGNlcnRhaW4gZmlsZXMgZnJvbSB0aG9zZSBkaXJlY3Rvcmllcy4KIwojIE5vdGUgdGhhdCB0aGUgd2lsZGNhcmRzIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhlIGZpbGUgd2l0aCBhYnNvbHV0ZSBwYXRoLCBzbyB0bwojIGV4Y2x1ZGUgYWxsIHRlc3QgZGlyZWN0b3JpZXMgZm9yIGV4YW1wbGUgdXNlIHRoZSBwYXR0ZXJuICovdGVzdC8qCgpFWENMVURFX1BBVFRFUk5TICAgICAgID0KCiMgVGhlIEVYQ0xVREVfU1lNQk9MUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBzeW1ib2wgbmFtZXMKIyAobmFtZXNwYWNlcywgY2xhc3NlcywgZnVuY3Rpb25zLCBldGMuKSB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIHRoZQojIG91dHB1dC4gVGhlIHN5bWJvbCBuYW1lIGNhbiBiZSBhIGZ1bGx5IHF1YWxpZmllZCBuYW1lLCBhIHdvcmQsIG9yIGlmIHRoZQojIHdpbGRjYXJkICogaXMgdXNlZCwgYSBzdWJzdHJpbmcuIEV4YW1wbGVzOiBBTmFtZXNwYWNlLCBBQ2xhc3MsCiMgQUNsYXNzOjpBTmFtZXNwYWNlLCBBTmFtZXNwYWNlOjoqVGVzdAojCiMgTm90ZSB0aGF0IHRoZSB3aWxkY2FyZHMgYXJlIG1hdGNoZWQgYWdhaW5zdCB0aGUgZmlsZSB3aXRoIGFic29sdXRlIHBhdGgsIHNvIHRvCiMgZXhjbHVkZSBhbGwgdGVzdCBkaXJlY3RvcmllcyB1c2UgdGhlIHBhdHRlcm4gKi90ZXN0LyoKCkVYQ0xVREVfU1lNQk9MUyAgICAgICAgPQoKIyBUaGUgRVhBTVBMRV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGZpbGVzIG9yIGRpcmVjdG9yaWVzCiMgdGhhdCBjb250YWluIGV4YW1wbGUgY29kZSBmcmFnbWVudHMgdGhhdCBhcmUgaW5jbHVkZWQgKHNlZSB0aGUgXGluY2x1ZGUKIyBjb21tYW5kKS4KCkVYQU1QTEVfUEFUSCAgICAgICAgICAgPQoKIyBJZiB0aGUgdmFsdWUgb2YgdGhlIEVYQU1QTEVfUEFUSCB0YWcgY29udGFpbnMgZGlyZWN0b3JpZXMsIHlvdSBjYW4gdXNlIHRoZQojIEVYQU1QTEVfUEFUVEVSTlMgdGFnIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgd2lsZGNhcmQgcGF0dGVybiAobGlrZSAqLmNwcCBhbmQKIyAqLmgpIHRvIGZpbHRlciBvdXQgdGhlIHNvdXJjZS1maWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuIElmIGxlZnQgYmxhbmsgYWxsCiMgZmlsZXMgYXJlIGluY2x1ZGVkLgoKRVhBTVBMRV9QQVRURVJOUyAgICAgICA9CgojIElmIHRoZSBFWEFNUExFX1JFQ1VSU0lWRSB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHN1YmRpcmVjdG9yaWVzIHdpbGwgYmUKIyBzZWFyY2hlZCBmb3IgaW5wdXQgZmlsZXMgdG8gYmUgdXNlZCB3aXRoIHRoZSBcaW5jbHVkZSBvciBcZG9udGluY2x1ZGUgY29tbWFuZHMKIyBpcnJlc3BlY3RpdmUgb2YgdGhlIHZhbHVlIG9mIHRoZSBSRUNVUlNJVkUgdGFnLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkVYQU1QTEVfUkVDVVJTSVZFICAgICAgPSBOTwoKIyBUaGUgSU1BR0VfUEFUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBmaWxlcyBvciBkaXJlY3RvcmllcwojIHRoYXQgY29udGFpbiBpbWFnZXMgdGhhdCBhcmUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gKHNlZSB0aGUKIyBcaW1hZ2UgY29tbWFuZCkuCgpJTUFHRV9QQVRIICAgICAgICAgICAgID0KCiMgVGhlIElOUFVUX0ZJTFRFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHByb2dyYW0gdGhhdCBkb3h5Z2VuIHNob3VsZAojIGludm9rZSB0byBmaWx0ZXIgZm9yIGVhY2ggaW5wdXQgZmlsZS4gRG94eWdlbiB3aWxsIGludm9rZSB0aGUgZmlsdGVyIHByb2dyYW0KIyBieSBleGVjdXRpbmcgKHZpYSBwb3BlbigpKSB0aGUgY29tbWFuZDoKIwojIDxmaWx0ZXI+IDxpbnB1dC1maWxlPgojCiMgd2hlcmUgPGZpbHRlcj4gaXMgdGhlIHZhbHVlIG9mIHRoZSBJTlBVVF9GSUxURVIgdGFnLCBhbmQgPGlucHV0LWZpbGU+IGlzIHRoZQojIG5hbWUgb2YgYW4gaW5wdXQgZmlsZS4gRG94eWdlbiB3aWxsIHRoZW4gdXNlIHRoZSBvdXRwdXQgdGhhdCB0aGUgZmlsdGVyCiMgcHJvZ3JhbSB3cml0ZXMgdG8gc3RhbmRhcmQgb3V0cHV0LiBJZiBGSUxURVJfUEFUVEVSTlMgaXMgc3BlY2lmaWVkLCB0aGlzIHRhZwojIHdpbGwgYmUgaWdub3JlZC4KIwojIE5vdGUgdGhhdCB0aGUgZmlsdGVyIG11c3Qgbm90IGFkZCBvciByZW1vdmUgbGluZXM7IGl0IGlzIGFwcGxpZWQgYmVmb3JlIHRoZQojIGNvZGUgaXMgc2Nhbm5lZCwgYnV0IG5vdCB3aGVuIHRoZSBvdXRwdXQgY29kZSBpcyBnZW5lcmF0ZWQuIElmIGxpbmVzIGFyZSBhZGRlZAojIG9yIHJlbW92ZWQsIHRoZSBhbmNob3JzIHdpbGwgbm90IGJlIHBsYWNlZCBjb3JyZWN0bHkuCgpJTlBVVF9GSUxURVIgICAgICAgICAgID0KCiMgVGhlIEZJTFRFUl9QQVRURVJOUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBmaWx0ZXJzIG9uIGEgcGVyIGZpbGUgcGF0dGVybgojIGJhc2lzLiBEb3h5Z2VuIHdpbGwgY29tcGFyZSB0aGUgZmlsZSBuYW1lIHdpdGggZWFjaCBwYXR0ZXJuIGFuZCBhcHBseSB0aGUKIyBmaWx0ZXIgaWYgdGhlcmUgaXMgYSBtYXRjaC4gVGhlIGZpbHRlcnMgYXJlIGEgbGlzdCBvZiB0aGUgZm9ybTogcGF0dGVybj1maWx0ZXIKIyAobGlrZSAqLmNwcD1teV9jcHBfZmlsdGVyKS4gU2VlIElOUFVUX0ZJTFRFUiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiBob3cKIyBmaWx0ZXJzIGFyZSB1c2VkLiBJZiB0aGUgRklMVEVSX1BBVFRFUk5TIHRhZyBpcyBlbXB0eSBvciBpZiBub25lIG9mIHRoZQojIHBhdHRlcm5zIG1hdGNoIHRoZSBmaWxlIG5hbWUsIElOUFVUX0ZJTFRFUiBpcyBhcHBsaWVkLgoKRklMVEVSX1BBVFRFUk5TICAgICAgICA9CgojIElmIHRoZSBGSUxURVJfU09VUkNFX0ZJTEVTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgaW5wdXQgZmlsdGVyIChpZiBzZXQgdXNpbmcKIyBJTlBVVF9GSUxURVIgKSB3aWxsIGFsc28gYmUgdXNlZCB0byBmaWx0ZXIgdGhlIGlucHV0IGZpbGVzIHRoYXQgYXJlIHVzZWQgZm9yCiMgcHJvZHVjaW5nIHRoZSBzb3VyY2UgZmlsZXMgdG8gYnJvd3NlIChpLmUuIHdoZW4gU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUykuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKRklMVEVSX1NPVVJDRV9GSUxFUyAgICA9IE5PCgojIFRoZSBGSUxURVJfU09VUkNFX1BBVFRFUk5TIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHNvdXJjZSBmaWx0ZXJzIHBlciBmaWxlCiMgcGF0dGVybi4gQSBwYXR0ZXJuIHdpbGwgb3ZlcnJpZGUgdGhlIHNldHRpbmcgZm9yIEZJTFRFUl9QQVRURVJOIChpZiBhbnkpIGFuZAojIGl0IGlzIGFsc28gcG9zc2libGUgdG8gZGlzYWJsZSBzb3VyY2UgZmlsdGVyaW5nIGZvciBhIHNwZWNpZmljIHBhdHRlcm4gdXNpbmcKIyAqLmV4dD0gKHNvIHdpdGhvdXQgbmFtaW5nIGEgZmlsdGVyKS4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRklMVEVSX1NPVVJDRV9GSUxFUyBpcyBzZXQgdG8gWUVTLgoKRklMVEVSX1NPVVJDRV9QQVRURVJOUyA9CgojIElmIHRoZSBVU0VfTURGSUxFX0FTX01BSU5QQUdFIHRhZyByZWZlcnMgdG8gdGhlIG5hbWUgb2YgYSBtYXJrZG93biBmaWxlIHRoYXQKIyBpcyBwYXJ0IG9mIHRoZSBpbnB1dCwgaXRzIGNvbnRlbnRzIHdpbGwgYmUgcGxhY2VkIG9uIHRoZSBtYWluIHBhZ2UKIyAoaW5kZXguaHRtbCkuIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhIHByb2plY3Qgb24gZm9yIGluc3RhbmNlIEdpdEh1YgojIGFuZCB3YW50IHRvIHJldXNlIHRoZSBpbnRyb2R1Y3Rpb24gcGFnZSBhbHNvIGZvciB0aGUgZG94eWdlbiBvdXRwdXQuCgpVU0VfTURGSUxFX0FTX01BSU5QQUdFID0gUkVBRE1FLm1kCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gc291cmNlIGJyb3dzaW5nCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgSWYgdGhlIFNPVVJDRV9CUk9XU0VSIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gYSBsaXN0IG9mIHNvdXJjZSBmaWxlcyB3aWxsIGJlCiMgZ2VuZXJhdGVkLiBEb2N1bWVudGVkIGVudGl0aWVzIHdpbGwgYmUgY3Jvc3MtcmVmZXJlbmNlZCB3aXRoIHRoZXNlIHNvdXJjZXMuCiMKIyBOb3RlOiBUbyBnZXQgcmlkIG9mIGFsbCBzb3VyY2UgY29kZSBpbiB0aGUgZ2VuZXJhdGVkIG91dHB1dCwgbWFrZSBzdXJlIHRoYXQKIyBhbHNvIFZFUkJBVElNX0hFQURFUlMgaXMgc2V0IHRvIE5PLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KClNPVVJDRV9CUk9XU0VSICAgICAgICAgPSBOTwoKIyBTZXR0aW5nIHRoZSBJTkxJTkVfU09VUkNFUyB0YWcgdG8gWUVTIHdpbGwgaW5jbHVkZSB0aGUgYm9keSBvZiBmdW5jdGlvbnMsCiMgY2xhc3NlcyBhbmQgZW51bXMgZGlyZWN0bHkgaW50byB0aGUgZG9jdW1lbnRhdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpJTkxJTkVfU09VUkNFUyAgICAgICAgID0gTk8KCiMgU2V0dGluZyB0aGUgU1RSSVBfQ09ERV9DT01NRU5UUyB0YWcgdG8gWUVTIHdpbGwgaW5zdHJ1Y3QgZG94eWdlbiB0byBoaWRlIGFueQojIHNwZWNpYWwgY29tbWVudCBibG9ja3MgZnJvbSBnZW5lcmF0ZWQgc291cmNlIGNvZGUgZnJhZ21lbnRzLiBOb3JtYWwgQywgQysrIGFuZAojIEZvcnRyYW4gY29tbWVudHMgd2lsbCBhbHdheXMgcmVtYWluIHZpc2libGUuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KClNUUklQX0NPREVfQ09NTUVOVFMgICAgPSBZRVMKCiMgSWYgdGhlIFJFRkVSRU5DRURfQllfUkVMQVRJT04gdGFnIGlzIHNldCB0byBZRVMgdGhlbiBmb3IgZWFjaCBkb2N1bWVudGVkCiMgZnVuY3Rpb24gYWxsIGRvY3VtZW50ZWQgZnVuY3Rpb25zIHJlZmVyZW5jaW5nIGl0IHdpbGwgYmUgbGlzdGVkLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KClJFRkVSRU5DRURfQllfUkVMQVRJT04gPSBOTwoKIyBJZiB0aGUgUkVGRVJFTkNFU19SRUxBVElPTiB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGZvciBlYWNoIGRvY3VtZW50ZWQgZnVuY3Rpb24KIyBhbGwgZG9jdW1lbnRlZCBlbnRpdGllcyBjYWxsZWQvdXNlZCBieSB0aGF0IGZ1bmN0aW9uIHdpbGwgYmUgbGlzdGVkLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KClJFRkVSRU5DRVNfUkVMQVRJT04gICAgPSBOTwoKIyBJZiB0aGUgUkVGRVJFTkNFU19MSU5LX1NPVVJDRSB0YWcgaXMgc2V0IHRvIFlFUyBhbmQgU09VUkNFX0JST1dTRVIgdGFnIGlzIHNldAojIHRvIFlFUywgdGhlbiB0aGUgaHlwZXJsaW5rcyBmcm9tIGZ1bmN0aW9ucyBpbiBSRUZFUkVOQ0VTX1JFTEFUSU9OIGFuZAojIFJFRkVSRU5DRURfQllfUkVMQVRJT04gbGlzdHMgd2lsbCBsaW5rIHRvIHRoZSBzb3VyY2UgY29kZS4gT3RoZXJ3aXNlIHRoZXkgd2lsbAojIGxpbmsgdG8gdGhlIGRvY3VtZW50YXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KClJFRkVSRU5DRVNfTElOS19TT1VSQ0UgPSBZRVMKCiMgSWYgU09VUkNFX1RPT0xUSVBTIGlzIGVuYWJsZWQgKHRoZSBkZWZhdWx0KSB0aGVuIGhvdmVyaW5nIGEgaHlwZXJsaW5rIGluIHRoZQojIHNvdXJjZSBjb2RlIHdpbGwgc2hvdyBhIHRvb2x0aXAgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgcHJvdG90eXBlLAojIGJyaWVmIGRlc2NyaXB0aW9uIGFuZCBsaW5rcyB0byB0aGUgZGVmaW5pdGlvbiBhbmQgZG9jdW1lbnRhdGlvbi4gU2luY2UgdGhpcwojIHdpbGwgbWFrZSB0aGUgSFRNTCBmaWxlIGxhcmdlciBhbmQgbG9hZGluZyBvZiBsYXJnZSBmaWxlcyBhIGJpdCBzbG93ZXIsIHlvdQojIGNhbiBvcHQgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUy4KClNPVVJDRV9UT09MVElQUyAgICAgICAgPSBZRVMKCiMgSWYgdGhlIFVTRV9IVEFHUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIHRoZSByZWZlcmVuY2VzIHRvIHNvdXJjZSBjb2RlIHdpbGwKIyBwb2ludCB0byB0aGUgSFRNTCBnZW5lcmF0ZWQgYnkgdGhlIGh0YWdzKDEpIHRvb2wgaW5zdGVhZCBvZiBkb3h5Z2VuIGJ1aWx0LWluCiMgc291cmNlIGJyb3dzZXIuIFRoZSBodGFncyB0b29sIGlzIHBhcnQgb2YgR05VJ3MgZ2xvYmFsIHNvdXJjZSB0YWdnaW5nIHN5c3RlbQojIChzZWUgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dsb2JhbC9nbG9iYWwuaHRtbCkuIFlvdSB3aWxsIG5lZWQgdmVyc2lvbgojIDQuOC42IG9yIGhpZ2hlci4KIwojIFRvIHVzZSBpdCBkbyB0aGUgZm9sbG93aW5nOgojIC0gSW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgZ2xvYmFsCiMgLSBFbmFibGUgU09VUkNFX0JST1dTRVIgYW5kIFVTRV9IVEFHUyBpbiB0aGUgY29uZmlnIGZpbGUKIyAtIE1ha2Ugc3VyZSB0aGUgSU5QVVQgcG9pbnRzIHRvIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZQojIC0gUnVuIGRveHlnZW4gYXMgbm9ybWFsCiMKIyBEb3h5Z2VuIHdpbGwgaW52b2tlIGh0YWdzIChhbmQgdGhhdCB3aWxsIGluIHR1cm4gaW52b2tlIGd0YWdzKSwgc28gdGhlc2UKIyB0b29scyBtdXN0IGJlIGF2YWlsYWJsZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUgKGkuZS4gaW4gdGhlIHNlYXJjaCBwYXRoKS4KIwojIFRoZSByZXN1bHQ6IGluc3RlYWQgb2YgdGhlIHNvdXJjZSBicm93c2VyIGdlbmVyYXRlZCBieSBkb3h5Z2VuLCB0aGUgbGlua3MgdG8KIyBzb3VyY2UgY29kZSB3aWxsIG5vdyBwb2ludCB0byB0aGUgb3V0cHV0IG9mIGh0YWdzLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU09VUkNFX0JST1dTRVIgaXMgc2V0IHRvIFlFUy4KClVTRV9IVEFHUyAgICAgICAgICAgICAgPSBOTwoKIyBJZiB0aGUgVkVSQkFUSU1fSEVBREVSUyB0YWcgaXMgc2V0IHRoZSBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYQojIHZlcmJhdGltIGNvcHkgb2YgdGhlIGhlYWRlciBmaWxlIGZvciBlYWNoIGNsYXNzIGZvciB3aGljaCBhbiBpbmNsdWRlIGlzCiMgc3BlY2lmaWVkLiBTZXQgdG8gTk8gdG8gZGlzYWJsZSB0aGlzLgojIFNlZSBhbHNvOiBTZWN0aW9uIFxjbGFzcy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKVkVSQkFUSU1fSEVBREVSUyAgICAgICA9IFlFUwoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBhbHBoYWJldGljYWwgY2xhc3MgaW5kZXgKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBJZiB0aGUgQUxQSEFCRVRJQ0FMX0lOREVYIHRhZyBpcyBzZXQgdG8gWUVTLCBhbiBhbHBoYWJldGljYWwgaW5kZXggb2YgYWxsCiMgY29tcG91bmRzIHdpbGwgYmUgZ2VuZXJhdGVkLiBFbmFibGUgdGhpcyBpZiB0aGUgcHJvamVjdCBjb250YWlucyBhIGxvdCBvZgojIGNsYXNzZXMsIHN0cnVjdHMsIHVuaW9ucyBvciBpbnRlcmZhY2VzLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpBTFBIQUJFVElDQUxfSU5ERVggICAgID0gWUVTCgojIFRoZSBDT0xTX0lOX0FMUEhBX0lOREVYIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbgojIHdoaWNoIHRoZSBhbHBoYWJldGljYWwgaW5kZXggbGlzdCB3aWxsIGJlIHNwbGl0LgojIE1pbmltdW0gdmFsdWU6IDEsIG1heGltdW0gdmFsdWU6IDIwLCBkZWZhdWx0IHZhbHVlOiA1LgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBBTFBIQUJFVElDQUxfSU5ERVggaXMgc2V0IHRvIFlFUy4KCkNPTFNfSU5fQUxQSEFfSU5ERVggICAgPSA1CgojIEluIGNhc2UgYWxsIGNsYXNzZXMgaW4gYSBwcm9qZWN0IHN0YXJ0IHdpdGggYSBjb21tb24gcHJlZml4LCBhbGwgY2xhc3NlcyB3aWxsCiMgYmUgcHV0IHVuZGVyIHRoZSBzYW1lIGhlYWRlciBpbiB0aGUgYWxwaGFiZXRpY2FsIGluZGV4LiBUaGUgSUdOT1JFX1BSRUZJWCB0YWcKIyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcHJlZml4IChvciBhIGxpc3Qgb2YgcHJlZml4ZXMpIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQKIyB3aGlsZSBnZW5lcmF0aW5nIHRoZSBpbmRleCBoZWFkZXJzLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBBTFBIQUJFVElDQUxfSU5ERVggaXMgc2V0IHRvIFlFUy4KCklHTk9SRV9QUkVGSVggICAgICAgICAgPQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBIVE1MIG91dHB1dAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIElmIHRoZSBHRU5FUkFURV9IVE1MIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBIVE1MIG91dHB1dAojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpHRU5FUkFURV9IVE1MICAgICAgICAgID0gWUVTCgojIFRoZSBIVE1MX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBIVE1MIGRvY3Mgd2lsbCBiZSBwdXQuIElmIGEKIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKIyBpdC4KIyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IGh0bWwuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkhUTUxfT1VUUFVUICAgICAgICAgICAgPSAuCgojIFRoZSBIVE1MX0ZJTEVfRVhURU5TSU9OIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBmaWxlIGV4dGVuc2lvbiBmb3IgZWFjaAojIGdlbmVyYXRlZCBIVE1MIHBhZ2UgKGZvciBleGFtcGxlOiAuaHRtLCAucGhwLCAuYXNwKS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogLmh0bWwuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkhUTUxfRklMRV9FWFRFTlNJT04gICAgPSAuaHRtbAoKIyBUaGUgSFRNTF9IRUFERVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSB1c2VyLWRlZmluZWQgSFRNTCBoZWFkZXIgZmlsZSBmb3IKIyBlYWNoIGdlbmVyYXRlZCBIVE1MIHBhZ2UuIElmIHRoZSB0YWcgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYQojIHN0YW5kYXJkIGhlYWRlci4KIwojIFRvIGdldCB2YWxpZCBIVE1MIHRoZSBoZWFkZXIgZmlsZSB0aGF0IGluY2x1ZGVzIGFueSBzY3JpcHRzIGFuZCBzdHlsZSBzaGVldHMKIyB0aGF0IGRveHlnZW4gbmVlZHMsIHdoaWNoIGlzIGRlcGVuZGVudCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzZWQgKGUuZy4KIyB0aGUgc2V0dGluZyBHRU5FUkFURV9UUkVFVklFVykuIEl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBzdGFydCB3aXRoIGEKIyBkZWZhdWx0IGhlYWRlciB1c2luZwojIGRveHlnZW4gLXcgaHRtbCBuZXdfaGVhZGVyLmh0bWwgbmV3X2Zvb3Rlci5odG1sIG5ld19zdHlsZXNoZWV0LmNzcwojIFlvdXJDb25maWdGaWxlCiMgYW5kIHRoZW4gbW9kaWZ5IHRoZSBmaWxlIG5ld19oZWFkZXIuaHRtbC4gU2VlIGFsc28gc2VjdGlvbiAiRG94eWdlbiB1c2FnZSIKIyBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBkZWZhdWx0IGhlYWRlciB0aGF0IGRveHlnZW4gbm9ybWFsbHkKIyB1c2VzLgojIE5vdGU6IFRoZSBoZWFkZXIgaXMgc3ViamVjdCB0byBjaGFuZ2Ugc28geW91IHR5cGljYWxseSBoYXZlIHRvIHJlZ2VuZXJhdGUgdGhlCiMgZGVmYXVsdCBoZWFkZXIgd2hlbiB1cGdyYWRpbmcgdG8gYSBuZXdlciB2ZXJzaW9uIG9mIGRveHlnZW4uIEZvciBhIGRlc2NyaXB0aW9uCiMgb2YgdGhlIHBvc3NpYmxlIG1hcmtlcnMgYW5kIGJsb2NrIG5hbWVzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbi4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgoKSFRNTF9IRUFERVIgICAgICAgICAgICA9CgojIFRoZSBIVE1MX0ZPT1RFUiB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHVzZXItZGVmaW5lZCBIVE1MIGZvb3RlciBmb3IgZWFjaAojIGdlbmVyYXRlZCBIVE1MIHBhZ2UuIElmIHRoZSB0YWcgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzdGFuZGFyZAojIGZvb3Rlci4gU2VlIEhUTUxfSEVBREVSIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZW5lcmF0ZSBhIGRlZmF1bHQKIyBmb290ZXIgYW5kIHdoYXQgc3BlY2lhbCBjb21tYW5kcyBjYW4gYmUgdXNlZCBpbnNpZGUgdGhlIGZvb3Rlci4gU2VlIGFsc28KIyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZSBkZWZhdWx0IGZvb3RlcgojIHRoYXQgZG94eWdlbiBub3JtYWxseSB1c2VzLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpIVE1MX0ZPT1RFUiAgICAgICAgICAgID0KCiMgVGhlIEhUTUxfU1RZTEVTSEVFVCB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIHVzZXItZGVmaW5lZCBjYXNjYWRpbmcgc3R5bGUKIyBzaGVldCB0aGF0IGlzIHVzZWQgYnkgZWFjaCBIVE1MIHBhZ2UuIEl0IGNhbiBiZSB1c2VkIHRvIGZpbmUtdHVuZSB0aGUgbG9vayBvZgojIHRoZSBIVE1MIG91dHB1dC4gSWYgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBkZWZhdWx0IHN0eWxlIHNoZWV0LgojIFNlZSBhbHNvIHNlY3Rpb24gIkRveHlnZW4gdXNhZ2UiIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gZ2VuZXJhdGUgdGhlIHN0eWxlCiMgc2hlZXQgdGhhdCBkb3h5Z2VuIG5vcm1hbGx5IHVzZXMuCiMgTm90ZTogSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIEhUTUxfRVhUUkFfU1RZTEVTSEVFVCBpbnN0ZWFkIG9mIHRoaXMgdGFnLCBhcwojIGl0IGlzIG1vcmUgcm9idXN0IGFuZCB0aGlzIHRhZyAoSFRNTF9TVFlMRVNIRUVUKSB3aWxsIGluIHRoZSBmdXR1cmUgYmVjb21lCiMgb2Jzb2xldGUuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkhUTUxfU1RZTEVTSEVFVCAgICAgICAgPQoKIyBUaGUgSFRNTF9FWFRSQV9TVFlMRVNIRUVUIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGFkZGl0aW9uYWwgdXNlci0KIyBkZWZpbmVkIGNhc2NhZGluZyBzdHlsZSBzaGVldCB0aGF0IGlzIGluY2x1ZGVkIGFmdGVyIHRoZSBzdGFuZGFyZCBzdHlsZSBzaGVldHMKIyBjcmVhdGVkIGJ5IGRveHlnZW4uIFVzaW5nIHRoaXMgb3B0aW9uIG9uZSBjYW4gb3ZlcnJ1bGUgY2VydGFpbiBzdHlsZSBhc3BlY3RzLgojIFRoaXMgaXMgcHJlZmVycmVkIG92ZXIgdXNpbmcgSFRNTF9TVFlMRVNIRUVUIHNpbmNlIGl0IGRvZXMgbm90IHJlcGxhY2UgdGhlCiMgc3RhbmRhcmQgc3R5bGUgc2hlZXQgYW5kIGlzIHRoZXJlZm9yIG1vcmUgcm9idXN0IGFnYWluc3QgZnV0dXJlIHVwZGF0ZXMuCiMgRG94eWdlbiB3aWxsIGNvcHkgdGhlIHN0eWxlIHNoZWV0IGZpbGUgdG8gdGhlIG91dHB1dCBkaXJlY3RvcnkuIEZvciBhbiBleGFtcGxlCiMgc2VlIHRoZSBkb2N1bWVudGF0aW9uLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpIVE1MX0VYVFJBX1NUWUxFU0hFRVQgID0KCiMgVGhlIEhUTUxfRVhUUkFfRklMRVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZXh0cmEgaW1hZ2VzIG9yCiMgb3RoZXIgc291cmNlIGZpbGVzIHdoaWNoIHNob3VsZCBiZSBjb3BpZWQgdG8gdGhlIEhUTUwgb3V0cHV0IGRpcmVjdG9yeS4gTm90ZQojIHRoYXQgdGhlc2UgZmlsZXMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIGJhc2UgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LiBVc2UgdGhlCiMgJHJlbHBhdGheIG1hcmtlciBpbiB0aGUgSFRNTF9IRUFERVIgYW5kL29yIEhUTUxfRk9PVEVSIGZpbGVzIHRvIGxvYWQgdGhlc2UKIyBmaWxlcy4gSW4gdGhlIEhUTUxfU1RZTEVTSEVFVCBmaWxlLCB1c2UgdGhlIGZpbGUgbmFtZSBvbmx5LiBBbHNvIG5vdGUgdGhhdCB0aGUKIyBmaWxlcyB3aWxsIGJlIGNvcGllZCBhcy1pczsgdGhlcmUgYXJlIG5vIGNvbW1hbmRzIG9yIG1hcmtlcnMgYXZhaWxhYmxlLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpIVE1MX0VYVFJBX0ZJTEVTICAgICAgID0KCiMgVGhlIEhUTUxfQ09MT1JTVFlMRV9IVUUgdGFnIGNvbnRyb2xzIHRoZSBjb2xvciBvZiB0aGUgSFRNTCBvdXRwdXQuIERveHlnZW4KIyB3aWxsIGFkanVzdCB0aGUgY29sb3JzIGluIHRoZSBzdHlsZXNoZWV0IGFuZCBiYWNrZ3JvdW5kIGltYWdlcyBhY2NvcmRpbmcgdG8KIyB0aGlzIGNvbG9yLiBIdWUgaXMgc3BlY2lmaWVkIGFzIGFuIGFuZ2xlIG9uIGEgY29sb3J3aGVlbCwgc2VlCiMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IdWUgZm9yIG1vcmUgaW5mb3JtYXRpb24uIEZvciBpbnN0YW5jZSB0aGUgdmFsdWUKIyAwIHJlcHJlc2VudHMgcmVkLCA2MCBpcyB5ZWxsb3csIDEyMCBpcyBncmVlbiwgMTgwIGlzIGN5YW4sIDI0MCBpcyBibHVlLCAzMDAKIyBwdXJwbGUsIGFuZCAzNjAgaXMgcmVkIGFnYWluLgojIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDM1OSwgZGVmYXVsdCB2YWx1ZTogMjIwLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpIVE1MX0NPTE9SU1RZTEVfSFVFICAgID0gMjIwCgojIFRoZSBIVE1MX0NPTE9SU1RZTEVfU0FUIHRhZyBjb250cm9scyB0aGUgcHVyaXR5IChvciBzYXR1cmF0aW9uKSBvZiB0aGUgY29sb3JzCiMgaW4gdGhlIEhUTUwgb3V0cHV0LiBGb3IgYSB2YWx1ZSBvZiAwIHRoZSBvdXRwdXQgd2lsbCB1c2UgZ3JheXNjYWxlcyBvbmx5LiBBCiMgdmFsdWUgb2YgMjU1IHdpbGwgcHJvZHVjZSB0aGUgbW9zdCB2aXZpZCBjb2xvcnMuCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMjU1LCBkZWZhdWx0IHZhbHVlOiAxMDAuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkhUTUxfQ09MT1JTVFlMRV9TQVQgICAgPSAxMDAKCiMgVGhlIEhUTUxfQ09MT1JTVFlMRV9HQU1NQSB0YWcgY29udHJvbHMgdGhlIGdhbW1hIGNvcnJlY3Rpb24gYXBwbGllZCB0byB0aGUKIyBsdW1pbmFuY2UgY29tcG9uZW50IG9mIHRoZSBjb2xvcnMgaW4gdGhlIEhUTUwgb3V0cHV0LiBWYWx1ZXMgYmVsb3cgMTAwCiMgZ3JhZHVhbGx5IG1ha2UgdGhlIG91dHB1dCBsaWdodGVyLCB3aGVyZWFzIHZhbHVlcyBhYm92ZSAxMDAgbWFrZSB0aGUgb3V0cHV0CiMgZGFya2VyLiBUaGUgdmFsdWUgZGl2aWRlZCBieSAxMDAgaXMgdGhlIGFjdHVhbCBnYW1tYSBhcHBsaWVkLCBzbyA4MCByZXByZXNlbnRzCiMgYSBnYW1tYSBvZiAwLjgsIFRoZSB2YWx1ZSAyMjAgcmVwcmVzZW50cyBhIGdhbW1hIG9mIDIuMiwgYW5kIDEwMCBkb2VzIG5vdAojIGNoYW5nZSB0aGUgZ2FtbWEuCiMgTWluaW11bSB2YWx1ZTogNDAsIG1heGltdW0gdmFsdWU6IDI0MCwgZGVmYXVsdCB2YWx1ZTogODAuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkhUTUxfQ09MT1JTVFlMRV9HQU1NQSAgPSA4MAoKIyBJZiB0aGUgSFRNTF9USU1FU1RBTVAgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgZm9vdGVyIG9mIGVhY2ggZ2VuZXJhdGVkIEhUTUwKIyBwYWdlIHdpbGwgY29udGFpbiB0aGUgZGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBwYWdlIHdhcyBnZW5lcmF0ZWQuIFNldHRpbmcgdGhpcwojIHRvIE5PIGNhbiBoZWxwIHdoZW4gY29tcGFyaW5nIHRoZSBvdXRwdXQgb2YgbXVsdGlwbGUgcnVucy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpIVE1MX1RJTUVTVEFNUCAgICAgICAgID0gWUVTCgojIElmIHRoZSBIVE1MX0RZTkFNSUNfU0VDVElPTlMgdGFnIGlzIHNldCB0byBZRVMgdGhlbiB0aGUgZ2VuZXJhdGVkIEhUTUwKIyBkb2N1bWVudGF0aW9uIHdpbGwgY29udGFpbiBzZWN0aW9ucyB0aGF0IGNhbiBiZSBoaWRkZW4gYW5kIHNob3duIGFmdGVyIHRoZQojIHBhZ2UgaGFzIGxvYWRlZC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkhUTUxfRFlOQU1JQ19TRUNUSU9OUyAgPSBOTwoKIyBXaXRoIEhUTUxfSU5ERVhfTlVNX0VOVFJJRVMgb25lIGNhbiBjb250cm9sIHRoZSBwcmVmZXJyZWQgbnVtYmVyIG9mIGVudHJpZXMKIyBzaG93biBpbiB0aGUgdmFyaW91cyB0cmVlIHN0cnVjdHVyZWQgaW5kaWNlcyBpbml0aWFsbHk7IHRoZSB1c2VyIGNhbiBleHBhbmQKIyBhbmQgY29sbGFwc2UgZW50cmllcyBkeW5hbWljYWxseSBsYXRlciBvbi4gRG94eWdlbiB3aWxsIGV4cGFuZCB0aGUgdHJlZSB0bwojIHN1Y2ggYSBsZXZlbCB0aGF0IGF0IG1vc3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgZW50cmllcyBhcmUgdmlzaWJsZSAodW5sZXNzCiMgYSBmdWxseSBjb2xsYXBzZWQgdHJlZSBhbHJlYWR5IGV4Y2VlZHMgdGhpcyBhbW91bnQpLiBTbyBzZXR0aW5nIHRoZSBudW1iZXIgb2YKIyBlbnRyaWVzIDEgd2lsbCBwcm9kdWNlIGEgZnVsbCBjb2xsYXBzZWQgdHJlZSBieSBkZWZhdWx0LiAwIGlzIGEgc3BlY2lhbCB2YWx1ZQojIHJlcHJlc2VudGluZyBhbiBpbmZpbml0ZSBudW1iZXIgb2YgZW50cmllcyBhbmQgd2lsbCByZXN1bHQgaW4gYSBmdWxsIGV4cGFuZGVkCiMgdHJlZSBieSBkZWZhdWx0LgojIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDk5OTksIGRlZmF1bHQgdmFsdWU6IDEwMC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgoKSFRNTF9JTkRFWF9OVU1fRU5UUklFUyA9IDEwMAoKIyBJZiB0aGUgR0VORVJBVEVfRE9DU0VUIHRhZyBpcyBzZXQgdG8gWUVTLCBhZGRpdGlvbmFsIGluZGV4IGZpbGVzIHdpbGwgYmUKIyBnZW5lcmF0ZWQgdGhhdCBjYW4gYmUgdXNlZCBhcyBpbnB1dCBmb3IgQXBwbGUncyBYY29kZSAzIGludGVncmF0ZWQgZGV2ZWxvcG1lbnQKIyBlbnZpcm9ubWVudCAoc2VlOiBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS90b29scy94Y29kZS8pLCBpbnRyb2R1Y2VkIHdpdGgKIyBPU1ggMTAuNSAoTGVvcGFyZCkuIFRvIGNyZWF0ZSBhIGRvY3VtZW50YXRpb24gc2V0LCBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYQojIE1ha2VmaWxlIGluIHRoZSBIVE1MIG91dHB1dCBkaXJlY3RvcnkuIFJ1bm5pbmcgbWFrZSB3aWxsIHByb2R1Y2UgdGhlIGRvY3NldCBpbgojIHRoYXQgZGlyZWN0b3J5IGFuZCBydW5uaW5nIG1ha2UgaW5zdGFsbCB3aWxsIGluc3RhbGwgdGhlIGRvY3NldCBpbgojIH4vTGlicmFyeS9EZXZlbG9wZXIvU2hhcmVkL0RvY3VtZW50YXRpb24vRG9jU2V0cyBzbyB0aGF0IFhjb2RlIHdpbGwgZmluZCBpdCBhdAojIHN0YXJ0dXAuIFNlZSBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS90b29scy9jcmVhdGluZ2RvY3NldHN3aXRoZG94eWdlbi5odG1sCiMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpHRU5FUkFURV9ET0NTRVQgICAgICAgID0gTk8KCiMgVGhpcyB0YWcgZGV0ZXJtaW5lcyB0aGUgbmFtZSBvZiB0aGUgZG9jc2V0IGZlZWQuIEEgZG9jdW1lbnRhdGlvbiBmZWVkIHByb3ZpZGVzCiMgYW4gdW1icmVsbGEgdW5kZXIgd2hpY2ggbXVsdGlwbGUgZG9jdW1lbnRhdGlvbiBzZXRzIGZyb20gYSBzaW5nbGUgcHJvdmlkZXIKIyAoc3VjaCBhcyBhIGNvbXBhbnkgb3IgcHJvZHVjdCBzdWl0ZSkgY2FuIGJlIGdyb3VwZWQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IERveHlnZW4gZ2VuZXJhdGVkIGRvY3MuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgoKRE9DU0VUX0ZFRUROQU1FICAgICAgICA9ICJEb3h5Z2VuIGdlbmVyYXRlZCBkb2NzIgoKIyBUaGlzIHRhZyBzcGVjaWZpZXMgYSBzdHJpbmcgdGhhdCBzaG91bGQgdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGRvY3VtZW50YXRpb24KIyBzZXQgYnVuZGxlLiBUaGlzIHNob3VsZCBiZSBhIHJldmVyc2UgZG9tYWluLW5hbWUgc3R5bGUgc3RyaW5nLCBlLmcuCiMgY29tLm15Y29tcGFueS5NeURvY1NldC4gRG94eWdlbiB3aWxsIGFwcGVuZCAuZG9jc2V0IHRvIHRoZSBuYW1lLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBvcmcuZG94eWdlbi5Qcm9qZWN0LgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9ET0NTRVQgaXMgc2V0IHRvIFlFUy4KCkRPQ1NFVF9CVU5ETEVfSUQgICAgICAgPSBvcmcuZG94eWdlbi5Qcm9qZWN0CgojIFRoZSBET0NTRVRfUFVCTElTSEVSX0lEIHRhZyBzcGVjaWZpZXMgYSBzdHJpbmcgdGhhdCBzaG91bGQgdW5pcXVlbHkgaWRlbnRpZnkKIyB0aGUgZG9jdW1lbnRhdGlvbiBwdWJsaXNoZXIuIFRoaXMgc2hvdWxkIGJlIGEgcmV2ZXJzZSBkb21haW4tbmFtZSBzdHlsZQojIHN0cmluZywgZS5nLiBjb20ubXljb21wYW55Lk15RG9jU2V0LmRvY3VtZW50YXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IG9yZy5kb3h5Z2VuLlB1Ymxpc2hlci4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfRE9DU0VUIGlzIHNldCB0byBZRVMuCgpET0NTRVRfUFVCTElTSEVSX0lEICAgID0gb3JnLmRveHlnZW4uUHVibGlzaGVyCgojIFRoZSBET0NTRVRfUFVCTElTSEVSX05BTUUgdGFnIGlkZW50aWZpZXMgdGhlIGRvY3VtZW50YXRpb24gcHVibGlzaGVyLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBQdWJsaXNoZXIuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0RPQ1NFVCBpcyBzZXQgdG8gWUVTLgoKRE9DU0VUX1BVQkxJU0hFUl9OQU1FICA9IFB1Ymxpc2hlcgoKIyBJZiB0aGUgR0VORVJBVEVfSFRNTEhFTFAgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIGdlbmVyYXRlcyB0aHJlZQojIGFkZGl0aW9uYWwgSFRNTCBpbmRleCBmaWxlczogaW5kZXguaGhwLCBpbmRleC5oaGMsIGFuZCBpbmRleC5oaGsuIFRoZQojIGluZGV4LmhocCBpcyBhIHByb2plY3QgZmlsZSB0aGF0IGNhbiBiZSByZWFkIGJ5IE1pY3Jvc29mdCdzIEhUTUwgSGVscCBXb3Jrc2hvcAojIChzZWU6IGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9kb3dubG9hZC9kZXRhaWxzLmFzcHg/aWQ9MjExMzgpIG9uCiMgV2luZG93cy4KIwojIFRoZSBIVE1MIEhlbHAgV29ya3Nob3AgY29udGFpbnMgYSBjb21waWxlciB0aGF0IGNhbiBjb252ZXJ0IGFsbCBIVE1MIG91dHB1dAojIGdlbmVyYXRlZCBieSBkb3h5Z2VuIGludG8gYSBzaW5nbGUgY29tcGlsZWQgSFRNTCBmaWxlICguY2htKS4gQ29tcGlsZWQgSFRNTAojIGZpbGVzIGFyZSBub3cgdXNlZCBhcyB0aGUgV2luZG93cyA5OCBoZWxwIGZvcm1hdCwgYW5kIHdpbGwgcmVwbGFjZSB0aGUgb2xkCiMgV2luZG93cyBoZWxwIGZvcm1hdCAoLmhscCkgb24gYWxsIFdpbmRvd3MgcGxhdGZvcm1zIGluIHRoZSBmdXR1cmUuIENvbXByZXNzZWQKIyBIVE1MIGZpbGVzIGFsc28gY29udGFpbiBhbiBpbmRleCwgYSB0YWJsZSBvZiBjb250ZW50cywgYW5kIHlvdSBjYW4gc2VhcmNoIGZvcgojIHdvcmRzIGluIHRoZSBkb2N1bWVudGF0aW9uLiBUaGUgSFRNTCB3b3Jrc2hvcCBhbHNvIGNvbnRhaW5zIGEgdmlld2VyIGZvcgojIGNvbXByZXNzZWQgSFRNTCBmaWxlcy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkdFTkVSQVRFX0hUTUxIRUxQICAgICAgPSBOTwoKIyBUaGUgQ0hNX0ZJTEUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGUgbmFtZSBvZiB0aGUgcmVzdWx0aW5nIC5jaG0KIyBmaWxlLiBZb3UgY2FuIGFkZCBhIHBhdGggaW4gZnJvbnQgb2YgdGhlIGZpbGUgaWYgdGhlIHJlc3VsdCBzaG91bGQgbm90IGJlCiMgd3JpdHRlbiB0byB0aGUgaHRtbCBvdXRwdXQgZGlyZWN0b3J5LgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MSEVMUCBpcyBzZXQgdG8gWUVTLgoKQ0hNX0ZJTEUgICAgICAgICAgICAgICA9CgojIFRoZSBISENfTE9DQVRJT04gdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIChhYnNvbHV0ZSBwYXRoCiMgaW5jbHVkaW5nIGZpbGUgbmFtZSkgb2YgdGhlIEhUTUwgaGVscCBjb21waWxlciAoIGhoYy5leGUpLiBJZiBub24tZW1wdHkKIyBkb3h5Z2VuIHdpbGwgdHJ5IHRvIHJ1biB0aGUgSFRNTCBoZWxwIGNvbXBpbGVyIG9uIHRoZSBnZW5lcmF0ZWQgaW5kZXguaGhwLgojIFRoZSBmaWxlIGhhcyB0byBiZSBzcGVjaWZpZWQgd2l0aCBmdWxsIHBhdGguCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCgpISENfTE9DQVRJT04gICAgICAgICAgID0KCiMgVGhlIEdFTkVSQVRFX0NISSBmbGFnIGNvbnRyb2xzIGlmIGEgc2VwYXJhdGUgLmNoaSBpbmRleCBmaWxlIGlzIGdlbmVyYXRlZCAoCiMgWUVTKSBvciB0aGF0IGl0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgbWFzdGVyIC5jaG0gZmlsZSAoIE5PKS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUxIRUxQIGlzIHNldCB0byBZRVMuCgpHRU5FUkFURV9DSEkgICAgICAgICAgID0gTk8KCiMgVGhlIENITV9JTkRFWF9FTkNPRElORyBpcyB1c2VkIHRvIGVuY29kZSBIdG1sSGVscCBpbmRleCAoIGhoayksIGNvbnRlbnQgKCBoaGMpCiMgYW5kIHByb2plY3QgZmlsZSBjb250ZW50LgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MSEVMUCBpcyBzZXQgdG8gWUVTLgoKQ0hNX0lOREVYX0VOQ09ESU5HICAgICA9CgojIFRoZSBCSU5BUllfVE9DIGZsYWcgY29udHJvbHMgd2hldGhlciBhIGJpbmFyeSB0YWJsZSBvZiBjb250ZW50cyBpcyBnZW5lcmF0ZWQgKAojIFlFUykgb3IgYSBub3JtYWwgdGFibGUgb2YgY29udGVudHMgKCBOTykgaW4gdGhlIC5jaG0gZmlsZS4gRnVydGhlcm1vcmUgaXQKIyBlbmFibGVzIHRoZSBQcmV2aW91cyBhbmQgTmV4dCBidXR0b25zLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTEhFTFAgaXMgc2V0IHRvIFlFUy4KCkJJTkFSWV9UT0MgICAgICAgICAgICAgPSBOTwoKIyBUaGUgVE9DX0VYUEFORCBmbGFnIGNhbiBiZSBzZXQgdG8gWUVTIHRvIGFkZCBleHRyYSBpdGVtcyBmb3IgZ3JvdXAgbWVtYmVycyB0bwojIHRoZSB0YWJsZSBvZiBjb250ZW50cyBvZiB0aGUgSFRNTCBoZWxwIGRvY3VtZW50YXRpb24gYW5kIHRvIHRoZSB0cmVlIHZpZXcuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MSEVMUCBpcyBzZXQgdG8gWUVTLgoKVE9DX0VYUEFORCAgICAgICAgICAgICA9IE5PCgojIElmIHRoZSBHRU5FUkFURV9RSFAgdGFnIGlzIHNldCB0byBZRVMgYW5kIGJvdGggUUhQX05BTUVTUEFDRSBhbmQKIyBRSFBfVklSVFVBTF9GT0xERVIgYXJlIHNldCwgYW4gYWRkaXRpb25hbCBpbmRleCBmaWxlIHdpbGwgYmUgZ2VuZXJhdGVkIHRoYXQKIyBjYW4gYmUgdXNlZCBhcyBpbnB1dCBmb3IgUXQncyBxaGVscGdlbmVyYXRvciB0byBnZW5lcmF0ZSBhIFF0IENvbXByZXNzZWQgSGVscAojICgucWNoKSBvZiB0aGUgZ2VuZXJhdGVkIEhUTUwgZG9jdW1lbnRhdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkdFTkVSQVRFX1FIUCAgICAgICAgICAgPSBOTwoKIyBJZiB0aGUgUUhHX0xPQ0FUSU9OIHRhZyBpcyBzcGVjaWZpZWQsIHRoZSBRQ0hfRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeQojIHRoZSBmaWxlIG5hbWUgb2YgdGhlIHJlc3VsdGluZyAucWNoIGZpbGUuIFRoZSBwYXRoIHNwZWNpZmllZCBpcyByZWxhdGl2ZSB0bwojIHRoZSBIVE1MIG91dHB1dCBmb2xkZXIuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLgoKUUNIX0ZJTEUgICAgICAgICAgICAgICA9CgojIFRoZSBRSFBfTkFNRVNQQUNFIHRhZyBzcGVjaWZpZXMgdGhlIG5hbWVzcGFjZSB0byB1c2Ugd2hlbiBnZW5lcmF0aW5nIFF0IEhlbHAKIyBQcm9qZWN0IG91dHB1dC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBRdCBIZWxwIFByb2plY3QgLyBOYW1lc3BhY2UKIyAoc2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwjbmFtZXNwYWNlKS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogb3JnLmRveHlnZW4uUHJvamVjdC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUUhQIGlzIHNldCB0byBZRVMuCgpRSFBfTkFNRVNQQUNFICAgICAgICAgID0gb3JnLmRveHlnZW4uUHJvamVjdAoKIyBUaGUgUUhQX1ZJUlRVQUxfRk9MREVSIHRhZyBzcGVjaWZpZXMgdGhlIG5hbWVzcGFjZSB0byB1c2Ugd2hlbiBnZW5lcmF0aW5nIFF0CiMgSGVscCBQcm9qZWN0IG91dHB1dC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBRdCBIZWxwIFByb2plY3QgLyBWaXJ0dWFsCiMgRm9sZGVycyAoc2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwjdmlydHVhbC0KIyBmb2xkZXJzKS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogZG9jLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KClFIUF9WSVJUVUFMX0ZPTERFUiAgICAgPSBkb2MKCiMgSWYgdGhlIFFIUF9DVVNUX0ZJTFRFUl9OQU1FIHRhZyBpcyBzZXQsIGl0IHNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGN1c3RvbQojIGZpbHRlciB0byBhZGQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0IC8gQ3VzdG9tCiMgRmlsdGVycyAoc2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwjY3VzdG9tLQojIGZpbHRlcnMpLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KClFIUF9DVVNUX0ZJTFRFUl9OQU1FICAgPQoKIyBUaGUgUUhQX0NVU1RfRklMVEVSX0FUVFJTIHRhZyBzcGVjaWZpZXMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlCiMgY3VzdG9tIGZpbHRlciB0byBhZGQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgUXQgSGVscCBQcm9qZWN0IC8gQ3VzdG9tCiMgRmlsdGVycyAoc2VlOiBodHRwOi8vcXQtcHJvamVjdC5vcmcvZG9jL3F0LTQuOC9xdGhlbHBwcm9qZWN0Lmh0bWwjY3VzdG9tLQojIGZpbHRlcnMpLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9RSFAgaXMgc2V0IHRvIFlFUy4KClFIUF9DVVNUX0ZJTFRFUl9BVFRSUyAgPQoKIyBUaGUgUUhQX1NFQ1RfRklMVEVSX0FUVFJTIHRhZyBzcGVjaWZpZXMgdGhlIGxpc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgdGhpcwojIHByb2plY3QncyBmaWx0ZXIgc2VjdGlvbiBtYXRjaGVzLiBRdCBIZWxwIFByb2plY3QgLyBGaWx0ZXIgQXR0cmlidXRlcyAoc2VlOgojIGh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9kb2MvcXQtNC44L3F0aGVscHByb2plY3QuaHRtbCNmaWx0ZXItYXR0cmlidXRlcykuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLgoKUUhQX1NFQ1RfRklMVEVSX0FUVFJTICA9CgojIFRoZSBRSEdfTE9DQVRJT04gdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIFF0J3MKIyBxaGVscGdlbmVyYXRvci4gSWYgbm9uLWVtcHR5IGRveHlnZW4gd2lsbCB0cnkgdG8gcnVuIHFoZWxwZ2VuZXJhdG9yIG9uIHRoZQojIGdlbmVyYXRlZCAucWhwIGZpbGUuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1FIUCBpcyBzZXQgdG8gWUVTLgoKUUhHX0xPQ0FUSU9OICAgICAgICAgICA9CgojIElmIHRoZSBHRU5FUkFURV9FQ0xJUFNFSEVMUCB0YWcgaXMgc2V0IHRvIFlFUywgYWRkaXRpb25hbCBpbmRleCBmaWxlcyB3aWxsIGJlCiMgZ2VuZXJhdGVkLCB0b2dldGhlciB3aXRoIHRoZSBIVE1MIGZpbGVzLCB0aGV5IGZvcm0gYW4gRWNsaXBzZSBoZWxwIHBsdWdpbi4gVG8KIyBpbnN0YWxsIHRoaXMgcGx1Z2luIGFuZCBtYWtlIGl0IGF2YWlsYWJsZSB1bmRlciB0aGUgaGVscCBjb250ZW50cyBtZW51IGluCiMgRWNsaXBzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgSFRNTCBhbmQgWE1MIGZpbGVzIG5lZWRzCiMgdG8gYmUgY29waWVkIGludG8gdGhlIHBsdWdpbnMgZGlyZWN0b3J5IG9mIGVjbGlwc2UuIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkKIyB3aXRoaW4gdGhlIHBsdWdpbnMgZGlyZWN0b3J5IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgRUNMSVBTRV9ET0NfSUQgdmFsdWUuCiMgQWZ0ZXIgY29weWluZyBFY2xpcHNlIG5lZWRzIHRvIGJlIHJlc3RhcnRlZCBiZWZvcmUgdGhlIGhlbHAgYXBwZWFycy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkdFTkVSQVRFX0VDTElQU0VIRUxQICAgPSBOTwoKIyBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgRWNsaXBzZSBoZWxwIHBsdWdpbi4gV2hlbiBpbnN0YWxsaW5nIHRoZSBwbHVnaW4KIyB0aGUgZGlyZWN0b3J5IG5hbWUgY29udGFpbmluZyB0aGUgSFRNTCBhbmQgWE1MIGZpbGVzIHNob3VsZCBhbHNvIGhhdmUgdGhpcwojIG5hbWUuIEVhY2ggZG9jdW1lbnRhdGlvbiBzZXQgc2hvdWxkIGhhdmUgaXRzIG93biBpZGVudGlmaWVyLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBvcmcuZG94eWdlbi5Qcm9qZWN0LgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9FQ0xJUFNFSEVMUCBpcyBzZXQgdG8gWUVTLgoKRUNMSVBTRV9ET0NfSUQgICAgICAgICA9IG9yZy5kb3h5Z2VuLlByb2plY3QKCiMgSWYgeW91IHdhbnQgZnVsbCBjb250cm9sIG92ZXIgdGhlIGxheW91dCBvZiB0aGUgZ2VuZXJhdGVkIEhUTUwgcGFnZXMgaXQgbWlnaHQKIyBiZSBuZWNlc3NhcnkgdG8gZGlzYWJsZSB0aGUgaW5kZXggYW5kIHJlcGxhY2UgaXQgd2l0aCB5b3VyIG93bi4gVGhlCiMgRElTQUJMRV9JTkRFWCB0YWcgY2FuIGJlIHVzZWQgdG8gdHVybiBvbi9vZmYgdGhlIGNvbmRlbnNlZCBpbmRleCAodGFicykgYXQgdG9wCiMgb2YgZWFjaCBIVE1MIHBhZ2UuIEEgdmFsdWUgb2YgTk8gZW5hYmxlcyB0aGUgaW5kZXggYW5kIHRoZSB2YWx1ZSBZRVMgZGlzYWJsZXMKIyBpdC4gU2luY2UgdGhlIHRhYnMgaW4gdGhlIGluZGV4IGNvbnRhaW4gdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgdGhlIG5hdmlnYXRpb24KIyB0cmVlLCB5b3UgY2FuIHNldCB0aGlzIG9wdGlvbiB0byBZRVMgaWYgeW91IGFsc28gc2V0IEdFTkVSQVRFX1RSRUVWSUVXIHRvIFlFUy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkRJU0FCTEVfSU5ERVggICAgICAgICAgPSBOTwoKIyBUaGUgR0VORVJBVEVfVFJFRVZJRVcgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGV0aGVyIGEgdHJlZS1saWtlIGluZGV4CiMgc3RydWN0dXJlIHNob3VsZCBiZSBnZW5lcmF0ZWQgdG8gZGlzcGxheSBoaWVyYXJjaGljYWwgaW5mb3JtYXRpb24uIElmIHRoZSB0YWcKIyB2YWx1ZSBpcyBzZXQgdG8gWUVTLCBhIHNpZGUgcGFuZWwgd2lsbCBiZSBnZW5lcmF0ZWQgY29udGFpbmluZyBhIHRyZWUtbGlrZQojIGluZGV4IHN0cnVjdHVyZSAoanVzdCBsaWtlIHRoZSBvbmUgdGhhdCBpcyBnZW5lcmF0ZWQgZm9yIEhUTUwgSGVscCkuIEZvciB0aGlzCiMgdG8gd29yayBhIGJyb3dzZXIgdGhhdCBzdXBwb3J0cyBKYXZhU2NyaXB0LCBESFRNTCwgQ1NTIGFuZCBmcmFtZXMgaXMgcmVxdWlyZWQKIyAoaS5lLiBhbnkgbW9kZXJuIGJyb3dzZXIpLiBXaW5kb3dzIHVzZXJzIGFyZSBwcm9iYWJseSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZQojIEhUTUwgaGVscCBmZWF0dXJlLiBWaWEgY3VzdG9tIHN0eWxlc2hlZXRzIChzZWUgSFRNTF9FWFRSQV9TVFlMRVNIRUVUKSBvbmUgY2FuCiMgZnVydGhlciBmaW5lLXR1bmUgdGhlIGxvb2sgb2YgdGhlIGluZGV4LiBBcyBhbiBleGFtcGxlLCB0aGUgZGVmYXVsdCBzdHlsZQojIHNoZWV0IGdlbmVyYXRlZCBieSBkb3h5Z2VuIGhhcyBhbiBleGFtcGxlIHRoYXQgc2hvd3MgaG93IHRvIHB1dCBhbiBpbWFnZSBhdAojIHRoZSByb290IG9mIHRoZSB0cmVlIGluc3RlYWQgb2YgdGhlIFBST0pFQ1RfTkFNRS4gU2luY2UgdGhlIHRyZWUgYmFzaWNhbGx5IGhhcwojIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIHRoZSB0YWIgaW5kZXgsIHlvdSBjb3VsZCBjb25zaWRlciBzZXR0aW5nCiMgRElTQUJMRV9JTkRFWCB0byBZRVMgd2hlbiBlbmFibGluZyB0aGlzIG9wdGlvbi4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkdFTkVSQVRFX1RSRUVWSUVXICAgICAgPSBOTwoKIyBUaGUgRU5VTV9WQUxVRVNfUEVSX0xJTkUgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbnVtYmVyIG9mIGVudW0gdmFsdWVzIHRoYXQKIyBkb3h5Z2VuIHdpbGwgZ3JvdXAgb24gb25lIGxpbmUgaW4gdGhlIGdlbmVyYXRlZCBIVE1MIGRvY3VtZW50YXRpb24uCiMKIyBOb3RlIHRoYXQgYSB2YWx1ZSBvZiAwIHdpbGwgY29tcGxldGVseSBzdXBwcmVzcyB0aGUgZW51bSB2YWx1ZXMgZnJvbSBhcHBlYXJpbmcKIyBpbiB0aGUgb3ZlcnZpZXcgc2VjdGlvbi4KIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAyMCwgZGVmYXVsdCB2YWx1ZTogNC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfSFRNTCBpcyBzZXQgdG8gWUVTLgoKRU5VTV9WQUxVRVNfUEVSX0xJTkUgICA9IDQKCiMgSWYgdGhlIHRyZWV2aWV3IGlzIGVuYWJsZWQgKHNlZSBHRU5FUkFURV9UUkVFVklFVykgdGhlbiB0aGlzIHRhZyBjYW4gYmUgdXNlZAojIHRvIHNldCB0aGUgaW5pdGlhbCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgZnJhbWUgaW4gd2hpY2ggdGhlIHRyZWUgaXMgc2hvd24uCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTUwMCwgZGVmYXVsdCB2YWx1ZTogMjUwLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpUUkVFVklFV19XSURUSCAgICAgICAgID0gMjUwCgojIFdoZW4gdGhlIEVYVF9MSU5LU19JTl9XSU5ET1cgb3B0aW9uIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIG9wZW4gbGlua3MgdG8KIyBleHRlcm5hbCBzeW1ib2xzIGltcG9ydGVkIHZpYSB0YWcgZmlsZXMgaW4gYSBzZXBhcmF0ZSB3aW5kb3cuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpFWFRfTElOS1NfSU5fV0lORE9XICAgID0gTk8KCiMgVXNlIHRoaXMgdGFnIHRvIGNoYW5nZSB0aGUgZm9udCBzaXplIG9mIExhVGVYIGZvcm11bGFzIGluY2x1ZGVkIGFzIGltYWdlcyBpbgojIHRoZSBIVE1MIGRvY3VtZW50YXRpb24uIFdoZW4geW91IGNoYW5nZSB0aGUgZm9udCBzaXplIGFmdGVyIGEgc3VjY2Vzc2Z1bAojIGRveHlnZW4gcnVuIHlvdSBuZWVkIHRvIG1hbnVhbGx5IHJlbW92ZSBhbnkgZm9ybV8qLnBuZyBpbWFnZXMgZnJvbSB0aGUgSFRNTAojIG91dHB1dCBkaXJlY3RvcnkgdG8gZm9yY2UgdGhlbSB0byBiZSByZWdlbmVyYXRlZC4KIyBNaW5pbXVtIHZhbHVlOiA4LCBtYXhpbXVtIHZhbHVlOiA1MCwgZGVmYXVsdCB2YWx1ZTogMTAuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkZPUk1VTEFfRk9OVFNJWkUgICAgICAgPSAxMAoKIyBVc2UgdGhlIEZPUk1VTEFfVFJBTlBBUkVOVCB0YWcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZSBpbWFnZXMKIyBnZW5lcmF0ZWQgZm9yIGZvcm11bGFzIGFyZSB0cmFuc3BhcmVudCBQTkdzLiBUcmFuc3BhcmVudCBQTkdzIGFyZSBub3QKIyBzdXBwb3J0ZWQgcHJvcGVybHkgZm9yIElFIDYuMCwgYnV0IGFyZSBzdXBwb3J0ZWQgb24gYWxsIG1vZGVybiBicm93c2Vycy4KIwojIE5vdGUgdGhhdCB3aGVuIGNoYW5naW5nIHRoaXMgb3B0aW9uIHlvdSBuZWVkIHRvIGRlbGV0ZSBhbnkgZm9ybV8qLnBuZyBmaWxlcyBpbgojIHRoZSBIVE1MIG91dHB1dCBkaXJlY3RvcnkgYmVmb3JlIHRoZSBjaGFuZ2VzIGhhdmUgZWZmZWN0LgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KCkZPUk1VTEFfVFJBTlNQQVJFTlQgICAgPSBZRVMKCiMgRW5hYmxlIHRoZSBVU0VfTUFUSEpBWCBvcHRpb24gdG8gcmVuZGVyIExhVGVYIGZvcm11bGFzIHVzaW5nIE1hdGhKYXggKHNlZQojIGh0dHA6Ly93d3cubWF0aGpheC5vcmcpIHdoaWNoIHVzZXMgY2xpZW50IHNpZGUgSmF2YXNjcmlwdCBmb3IgdGhlIHJlbmRlcmluZwojIGluc3RlYWQgb2YgdXNpbmcgcHJlcmVuZGVyZWQgYml0bWFwcy4gVXNlIHRoaXMgaWYgeW91IGRvIG5vdCBoYXZlIExhVGVYCiMgaW5zdGFsbGVkIG9yIGlmIHlvdSB3YW50IHRvIGZvcm11bGFzIGxvb2sgcHJldHRpZXIgaW4gdGhlIEhUTUwgb3V0cHV0LiBXaGVuCiMgZW5hYmxlZCB5b3UgbWF5IGFsc28gbmVlZCB0byBpbnN0YWxsIE1hdGhKYXggc2VwYXJhdGVseSBhbmQgY29uZmlndXJlIHRoZSBwYXRoCiMgdG8gaXQgdXNpbmcgdGhlIE1BVEhKQVhfUkVMUEFUSCBvcHRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9IVE1MIGlzIHNldCB0byBZRVMuCgpVU0VfTUFUSEpBWCAgICAgICAgICAgID0gTk8KCiMgV2hlbiBNYXRoSmF4IGlzIGVuYWJsZWQgeW91IGNhbiBzZXQgdGhlIGRlZmF1bHQgb3V0cHV0IGZvcm1hdCB0byBiZSB1c2VkIGZvcgojIHRoZSBNYXRoSmF4IG91dHB1dC4gU2VlIHRoZSBNYXRoSmF4IHNpdGUgKHNlZToKIyBodHRwOi8vZG9jcy5tYXRoamF4Lm9yZy9lbi9sYXRlc3Qvb3V0cHV0Lmh0bWwpIGZvciBtb3JlIGRldGFpbHMuCiMgUG9zc2libGUgdmFsdWVzIGFyZTogSFRNTC1DU1MgKHdoaWNoIGlzIHNsb3dlciwgYnV0IGhhcyB0aGUgYmVzdAojIGNvbXBhdGliaWxpdHkpLCBOYXRpdmVNTUwgKGkuZS4gTWF0aE1MKSBhbmQgU1ZHLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBIVE1MLUNTUy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgVVNFX01BVEhKQVggaXMgc2V0IHRvIFlFUy4KCk1BVEhKQVhfRk9STUFUICAgICAgICAgPSBIVE1MLUNTUwoKIyBXaGVuIE1hdGhKYXggaXMgZW5hYmxlZCB5b3UgbmVlZCB0byBzcGVjaWZ5IHRoZSBsb2NhdGlvbiByZWxhdGl2ZSB0byB0aGUgSFRNTAojIG91dHB1dCBkaXJlY3RvcnkgdXNpbmcgdGhlIE1BVEhKQVhfUkVMUEFUSCBvcHRpb24uIFRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkKIyBzaG91bGQgY29udGFpbiB0aGUgTWF0aEpheC5qcyBzY3JpcHQuIEZvciBpbnN0YW5jZSwgaWYgdGhlIG1hdGhqYXggZGlyZWN0b3J5CiMgaXMgbG9jYXRlZCBhdCB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgSFRNTCBvdXRwdXQgZGlyZWN0b3J5LCB0aGVuCiMgTUFUSEpBWF9SRUxQQVRIIHNob3VsZCBiZSAuLi9tYXRoamF4LiBUaGUgZGVmYXVsdCB2YWx1ZSBwb2ludHMgdG8gdGhlIE1hdGhKYXgKIyBDb250ZW50IERlbGl2ZXJ5IE5ldHdvcmsgc28geW91IGNhbiBxdWlja2x5IHNlZSB0aGUgcmVzdWx0IHdpdGhvdXQgaW5zdGFsbGluZwojIE1hdGhKYXguIEhvd2V2ZXIsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGluc3RhbGwgYSBsb2NhbCBjb3B5IG9mCiMgTWF0aEpheCBmcm9tIGh0dHA6Ly93d3cubWF0aGpheC5vcmcgYmVmb3JlIGRlcGxveW1lbnQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IGh0dHA6Ly9jZG4ubWF0aGpheC5vcmcvbWF0aGpheC9sYXRlc3QuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuCgpNQVRISkFYX1JFTFBBVEggICAgICAgID0gaHR0cDovL2Nkbi5tYXRoamF4Lm9yZy9tYXRoamF4L2xhdGVzdAoKIyBUaGUgTUFUSEpBWF9FWFRFTlNJT05TIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIE1hdGhKYXgKIyBleHRlbnNpb24gbmFtZXMgdGhhdCBzaG91bGQgYmUgZW5hYmxlZCBkdXJpbmcgTWF0aEpheCByZW5kZXJpbmcuIEZvciBleGFtcGxlCiMgTUFUSEpBWF9FWFRFTlNJT05TID0gVGVYL0FNU21hdGggVGVYL0FNU3N5bWJvbHMKIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgVVNFX01BVEhKQVggaXMgc2V0IHRvIFlFUy4KCk1BVEhKQVhfRVhURU5TSU9OUyAgICAgPQoKIyBUaGUgTUFUSEpBWF9DT0RFRklMRSB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhIGZpbGUgd2l0aCBqYXZhc2NyaXB0IHBpZWNlcwojIG9mIGNvZGUgdGhhdCB3aWxsIGJlIHVzZWQgb24gc3RhcnR1cCBvZiB0aGUgTWF0aEpheCBjb2RlLiBTZWUgdGhlIE1hdGhKYXggc2l0ZQojIChzZWU6IGh0dHA6Ly9kb2NzLm1hdGhqYXgub3JnL2VuL2xhdGVzdC9vdXRwdXQuaHRtbCkgZm9yIG1vcmUgZGV0YWlscy4gRm9yIGFuCiMgZXhhbXBsZSBzZWUgdGhlIGRvY3VtZW50YXRpb24uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFVTRV9NQVRISkFYIGlzIHNldCB0byBZRVMuCgpNQVRISkFYX0NPREVGSUxFICAgICAgID0KCiMgV2hlbiB0aGUgU0VBUkNIRU5HSU5FIHRhZyBpcyBlbmFibGVkIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIHNlYXJjaCBib3ggZm9yCiMgdGhlIEhUTUwgb3V0cHV0LiBUaGUgdW5kZXJseWluZyBzZWFyY2ggZW5naW5lIHVzZXMgamF2YXNjcmlwdCBhbmQgREhUTUwgYW5kCiMgc2hvdWxkIHdvcmsgb24gYW55IG1vZGVybiBicm93c2VyLiBOb3RlIHRoYXQgd2hlbiB1c2luZyBIVE1MIGhlbHAKIyAoR0VORVJBVEVfSFRNTEhFTFApLCBRdCBoZWxwIChHRU5FUkFURV9RSFApLCBvciBkb2NzZXRzIChHRU5FUkFURV9ET0NTRVQpCiMgdGhlcmUgaXMgYWxyZWFkeSBhIHNlYXJjaCBmdW5jdGlvbiBzbyB0aGlzIG9uZSBzaG91bGQgdHlwaWNhbGx5IGJlIGRpc2FibGVkLgojIEZvciBsYXJnZSBwcm9qZWN0cyB0aGUgamF2YXNjcmlwdCBiYXNlZCBzZWFyY2ggZW5naW5lIGNhbiBiZSBzbG93LCB0aGVuCiMgZW5hYmxpbmcgU0VSVkVSX0JBU0VEX1NFQVJDSCBtYXkgcHJvdmlkZSBhIGJldHRlciBzb2x1dGlvbi4gSXQgaXMgcG9zc2libGUgdG8KIyBzZWFyY2ggdXNpbmcgdGhlIGtleWJvYXJkOyB0byBqdW1wIHRvIHRoZSBzZWFyY2ggYm94IHVzZSA8YWNjZXNzIGtleT4gKyBTCiMgKHdoYXQgdGhlIDxhY2Nlc3Mga2V5PiBpcyBkZXBlbmRzIG9uIHRoZSBPUyBhbmQgYnJvd3NlciwgYnV0IGl0IGlzIHR5cGljYWxseQojIDxDVFJMPiwgPEFMVD4vPG9wdGlvbj4sIG9yIGJvdGgpLiBJbnNpZGUgdGhlIHNlYXJjaCBib3ggdXNlIHRoZSA8Y3Vyc29yIGRvd24KIyBrZXk+IHRvIGp1bXAgaW50byB0aGUgc2VhcmNoIHJlc3VsdHMgd2luZG93LCB0aGUgcmVzdWx0cyBjYW4gYmUgbmF2aWdhdGVkCiMgdXNpbmcgdGhlIDxjdXJzb3Iga2V5cz4uIFByZXNzIDxFbnRlcj4gdG8gc2VsZWN0IGFuIGl0ZW0gb3IgPGVzY2FwZT4gdG8gY2FuY2VsCiMgdGhlIHNlYXJjaC4gVGhlIGZpbHRlciBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZCB3aGVuIHRoZSBjdXJzb3IgaXMgaW5zaWRlIHRoZQojIHNlYXJjaCBib3ggYnkgcHJlc3NpbmcgPFNoaWZ0Pis8Y3Vyc29yIGRvd24+LiBBbHNvIGhlcmUgdXNlIHRoZSA8Y3Vyc29yIGtleXM+CiMgdG8gc2VsZWN0IGEgZmlsdGVyIGFuZCA8RW50ZXI+IG9yIDxlc2NhcGU+IHRvIGFjdGl2YXRlIG9yIGNhbmNlbCB0aGUgZmlsdGVyCiMgb3B0aW9uLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0hUTUwgaXMgc2V0IHRvIFlFUy4KClNFQVJDSEVOR0lORSAgICAgICAgICAgPSBZRVMKCiMgV2hlbiB0aGUgU0VSVkVSX0JBU0VEX1NFQVJDSCB0YWcgaXMgZW5hYmxlZCB0aGUgc2VhcmNoIGVuZ2luZSB3aWxsIGJlCiMgaW1wbGVtZW50ZWQgdXNpbmcgYSB3ZWIgc2VydmVyIGluc3RlYWQgb2YgYSB3ZWIgY2xpZW50IHVzaW5nIEphdmFzY3JpcHQuIFRoZXJlCiMgYXJlIHR3byBmbGF2b3JzIG9mIHdlYiBzZXJ2ZXIgYmFzZWQgc2VhcmNoaW5nIGRlcGVuZGluZyBvbiB0aGUgRVhURVJOQUxfU0VBUkNICiMgc2V0dGluZy4gV2hlbiBkaXNhYmxlZCwgZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgUEhQIHNjcmlwdCBmb3Igc2VhcmNoaW5nIGFuZAojIGFuIGluZGV4IGZpbGUgdXNlZCBieSB0aGUgc2NyaXB0LiBXaGVuIEVYVEVSTkFMX1NFQVJDSCBpcyBlbmFibGVkIHRoZSBpbmRleGluZwojIGFuZCBzZWFyY2hpbmcgbmVlZHMgdG8gYmUgcHJvdmlkZWQgYnkgZXh0ZXJuYWwgdG9vbHMuIFNlZSB0aGUgc2VjdGlvbgojICJFeHRlcm5hbCBJbmRleGluZyBhbmQgU2VhcmNoaW5nIiBmb3IgZGV0YWlscy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgoKU0VSVkVSX0JBU0VEX1NFQVJDSCAgICA9IE5PCgojIFdoZW4gRVhURVJOQUxfU0VBUkNIIHRhZyBpcyBlbmFibGVkIGRveHlnZW4gd2lsbCBubyBsb25nZXIgZ2VuZXJhdGUgdGhlIFBIUAojIHNjcmlwdCBmb3Igc2VhcmNoaW5nLiBJbnN0ZWFkIHRoZSBzZWFyY2ggcmVzdWx0cyBhcmUgd3JpdHRlbiB0byBhbiBYTUwgZmlsZQojIHdoaWNoIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBieSBhbiBleHRlcm5hbCBpbmRleGVyLiBEb3h5Z2VuIHdpbGwgaW52b2tlIGFuCiMgZXh0ZXJuYWwgc2VhcmNoIGVuZ2luZSBwb2ludGVkIHRvIGJ5IHRoZSBTRUFSQ0hFTkdJTkVfVVJMIG9wdGlvbiB0byBvYnRhaW4gdGhlCiMgc2VhcmNoIHJlc3VsdHMuCiMKIyBEb3h5Z2VuIHNoaXBzIHdpdGggYW4gZXhhbXBsZSBpbmRleGVyICggZG94eWluZGV4ZXIpIGFuZCBzZWFyY2ggZW5naW5lCiMgKGRveHlzZWFyY2guY2dpKSB3aGljaCBhcmUgYmFzZWQgb24gdGhlIG9wZW4gc291cmNlIHNlYXJjaCBlbmdpbmUgbGlicmFyeQojIFhhcGlhbiAoc2VlOiBodHRwOi8veGFwaWFuLm9yZy8pLgojCiMgU2VlIHRoZSBzZWN0aW9uICJFeHRlcm5hbCBJbmRleGluZyBhbmQgU2VhcmNoaW5nIiBmb3IgZGV0YWlscy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgoKRVhURVJOQUxfU0VBUkNIICAgICAgICA9IE5PCgojIFRoZSBTRUFSQ0hFTkdJTkVfVVJMIHNob3VsZCBwb2ludCB0byBhIHNlYXJjaCBlbmdpbmUgaG9zdGVkIGJ5IGEgd2ViIHNlcnZlcgojIHdoaWNoIHdpbGwgcmV0dXJuIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIEVYVEVSTkFMX1NFQVJDSCBpcyBlbmFibGVkLgojCiMgRG94eWdlbiBzaGlwcyB3aXRoIGFuIGV4YW1wbGUgaW5kZXhlciAoIGRveHlpbmRleGVyKSBhbmQgc2VhcmNoIGVuZ2luZQojIChkb3h5c2VhcmNoLmNnaSkgd2hpY2ggYXJlIGJhc2VkIG9uIHRoZSBvcGVuIHNvdXJjZSBzZWFyY2ggZW5naW5lIGxpYnJhcnkKIyBYYXBpYW4gKHNlZTogaHR0cDovL3hhcGlhbi5vcmcvKS4gU2VlIHRoZSBzZWN0aW9uICJFeHRlcm5hbCBJbmRleGluZyBhbmQKIyBTZWFyY2hpbmciIGZvciBkZXRhaWxzLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KClNFQVJDSEVOR0lORV9VUkwgICAgICAgPQoKIyBXaGVuIFNFUlZFUl9CQVNFRF9TRUFSQ0ggYW5kIEVYVEVSTkFMX1NFQVJDSCBhcmUgYm90aCBlbmFibGVkIHRoZSB1bmluZGV4ZWQKIyBzZWFyY2ggZGF0YSBpcyB3cml0dGVuIHRvIGEgZmlsZSBmb3IgaW5kZXhpbmcgYnkgYW4gZXh0ZXJuYWwgdG9vbC4gV2l0aCB0aGUKIyBTRUFSQ0hEQVRBX0ZJTEUgdGFnIHRoZSBuYW1lIG9mIHRoaXMgZmlsZSBjYW4gYmUgc3BlY2lmaWVkLgojIFRoZSBkZWZhdWx0IGZpbGUgaXM6IHNlYXJjaGRhdGEueG1sLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBTRUFSQ0hFTkdJTkUgaXMgc2V0IHRvIFlFUy4KClNFQVJDSERBVEFfRklMRSAgICAgICAgPSBzZWFyY2hkYXRhLnhtbAoKIyBXaGVuIFNFUlZFUl9CQVNFRF9TRUFSQ0ggYW5kIEVYVEVSTkFMX1NFQVJDSCBhcmUgYm90aCBlbmFibGVkIHRoZQojIEVYVEVSTkFMX1NFQVJDSF9JRCB0YWcgY2FuIGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllciBmb3IgdGhlIHByb2plY3QuIFRoaXMgaXMKIyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBFWFRSQV9TRUFSQ0hfTUFQUElOR1MgdG8gc2VhcmNoIHRocm91Z2ggbXVsdGlwbGUKIyBwcm9qZWN0cyBhbmQgcmVkaXJlY3QgdGhlIHJlc3VsdHMgYmFjayB0byB0aGUgcmlnaHQgcHJvamVjdC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIRU5HSU5FIGlzIHNldCB0byBZRVMuCgpFWFRFUk5BTF9TRUFSQ0hfSUQgICAgID0KCiMgVGhlIEVYVFJBX1NFQVJDSF9NQVBQSU5HUyB0YWcgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIHNlYXJjaGluZyB0aHJvdWdoIGRveHlnZW4KIyBwcm9qZWN0cyBvdGhlciB0aGFuIHRoZSBvbmUgZGVmaW5lZCBieSB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSwgYnV0IHRoYXQgYXJlCiMgYWxsIGFkZGVkIHRvIHRoZSBzYW1lIGV4dGVybmFsIHNlYXJjaCBpbmRleC4gRWFjaCBwcm9qZWN0IG5lZWRzIHRvIGhhdmUgYQojIHVuaXF1ZSBpZCBzZXQgdmlhIEVYVEVSTkFMX1NFQVJDSF9JRC4gVGhlIHNlYXJjaCBtYXBwaW5nIHRoZW4gbWFwcyB0aGUgaWQgb2YKIyB0byBhIHJlbGF0aXZlIGxvY2F0aW9uIHdoZXJlIHRoZSBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZC4gVGhlIGZvcm1hdCBpczoKIyBFWFRSQV9TRUFSQ0hfTUFQUElOR1MgPSB0YWduYW1lMT1sb2MxIHRhZ25hbWUyPWxvYzIgLi4uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIFNFQVJDSEVOR0lORSBpcyBzZXQgdG8gWUVTLgoKRVhUUkFfU0VBUkNIX01BUFBJTkdTICA9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIExhVGVYIG91dHB1dAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIElmIHRoZSBHRU5FUkFURV9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgTGFUZVggb3V0cHV0LgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCgpHRU5FUkFURV9MQVRFWCAgICAgICAgID0gTk8KCiMgVGhlIExBVEVYX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBMYVRlWCBkb2NzIHdpbGwgYmUgcHV0LiBJZiBhCiMgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGluIGZyb250IG9mCiMgaXQuCiMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBsYXRleC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KCkxBVEVYX09VVFBVVCAgICAgICAgICAgPSBsYXRleAoKIyBUaGUgTEFURVhfQ01EX05BTUUgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIExhVGVYIGNvbW1hbmQgbmFtZSB0byBiZQojIGludm9rZWQuCiMKIyBOb3RlIHRoYXQgd2hlbiBlbmFibGluZyBVU0VfUERGTEFURVggdGhpcyBvcHRpb24gaXMgb25seSB1c2VkIGZvciBnZW5lcmF0aW5nCiMgYml0bWFwcyBmb3IgZm9ybXVsYXMgaW4gdGhlIEhUTUwgb3V0cHV0LCBidXQgbm90IGluIHRoZSBNYWtlZmlsZSB0aGF0IGlzCiMgd3JpdHRlbiB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeS4KIyBUaGUgZGVmYXVsdCBmaWxlIGlzOiBsYXRleC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KCkxBVEVYX0NNRF9OQU1FICAgICAgICAgPSBsYXRleAoKIyBUaGUgTUFLRUlOREVYX0NNRF9OQU1FIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb21tYW5kIG5hbWUgdG8gZ2VuZXJhdGUKIyBpbmRleCBmb3IgTGFUZVguCiMgVGhlIGRlZmF1bHQgZmlsZSBpczogbWFrZWluZGV4LgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgoKTUFLRUlOREVYX0NNRF9OQU1FICAgICA9IG1ha2VpbmRleAoKIyBJZiB0aGUgQ09NUEFDVF9MQVRFWCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIGdlbmVyYXRlcyBtb3JlIGNvbXBhY3QgTGFUZVgKIyBkb2N1bWVudHMuIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3Igc21hbGwgcHJvamVjdHMgYW5kIG1heSBoZWxwIHRvIHNhdmUgc29tZQojIHRyZWVzIGluIGdlbmVyYWwuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgoKQ09NUEFDVF9MQVRFWCAgICAgICAgICA9IE5PCgojIFRoZSBQQVBFUl9UWVBFIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIHBhcGVyIHR5cGUgdGhhdCBpcyB1c2VkIGJ5IHRoZQojIHByaW50ZXIuCiMgUG9zc2libGUgdmFsdWVzIGFyZTogYTQgKDIxMCB4IDI5NyBtbSksIGxldHRlciAoOC41IHggMTEgaW5jaGVzKSwgbGVnYWwgKDguNSB4CiMgMTQgaW5jaGVzKSBhbmQgZXhlY3V0aXZlICg3LjI1IHggMTAuNSBpbmNoZXMpLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBhNC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KClBBUEVSX1RZUEUgICAgICAgICAgICAgPSBhNAoKIyBUaGUgRVhUUkFfUEFDS0FHRVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgTGFUZVggcGFja2FnZSBuYW1lcwojIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBMYVRlWCBvdXRwdXQuIFRvIGdldCB0aGUgdGltZXMgZm9udCBmb3IKIyBpbnN0YW5jZSB5b3UgY2FuIHNwZWNpZnkKIyBFWFRSQV9QQUNLQUdFUz10aW1lcwojIElmIGxlZnQgYmxhbmsgbm8gZXh0cmEgcGFja2FnZXMgd2lsbCBiZSBpbmNsdWRlZC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KCkVYVFJBX1BBQ0tBR0VTICAgICAgICAgPQoKIyBUaGUgTEFURVhfSEVBREVSIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgcGVyc29uYWwgTGFUZVggaGVhZGVyIGZvciB0aGUKIyBnZW5lcmF0ZWQgTGFUZVggZG9jdW1lbnQuIFRoZSBoZWFkZXIgc2hvdWxkIGNvbnRhaW4gZXZlcnl0aGluZyB1bnRpbCB0aGUgZmlyc3QKIyBjaGFwdGVyLiBJZiBpdCBpcyBsZWZ0IGJsYW5rIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIHN0YW5kYXJkIGhlYWRlci4gU2VlCiMgc2VjdGlvbiAiRG94eWdlbiB1c2FnZSIgZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBsZXQgZG94eWdlbiB3cml0ZSB0aGUKIyBkZWZhdWx0IGhlYWRlciB0byBhIHNlcGFyYXRlIGZpbGUuCiMKIyBOb3RlOiBPbmx5IHVzZSBhIHVzZXItZGVmaW5lZCBoZWFkZXIgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nISBUaGUKIyBmb2xsb3dpbmcgY29tbWFuZHMgaGF2ZSBhIHNwZWNpYWwgbWVhbmluZyBpbnNpZGUgdGhlIGhlYWRlcjogJHRpdGxlLAojICRkYXRldGltZSwgJGRhdGUsICRkb3h5Z2VudmVyc2lvbiwgJHByb2plY3RuYW1lLCAkcHJvamVjdG51bWJlci4gRG94eWdlbiB3aWxsCiMgcmVwbGFjZSB0aGVtIGJ5IHJlc3BlY3RpdmVseSB0aGUgdGl0bGUgb2YgdGhlIHBhZ2UsIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUsCiMgb25seSB0aGUgY3VycmVudCBkYXRlLCB0aGUgdmVyc2lvbiBudW1iZXIgb2YgZG94eWdlbiwgdGhlIHByb2plY3QgbmFtZSAoc2VlCiMgUFJPSkVDVF9OQU1FKSwgb3IgdGhlIHByb2plY3QgbnVtYmVyIChzZWUgUFJPSkVDVF9OVU1CRVIpLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgoKTEFURVhfSEVBREVSICAgICAgICAgICA9CgojIFRoZSBMQVRFWF9GT09URVIgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBwZXJzb25hbCBMYVRlWCBmb290ZXIgZm9yIHRoZQojIGdlbmVyYXRlZCBMYVRlWCBkb2N1bWVudC4gVGhlIGZvb3RlciBzaG91bGQgY29udGFpbiBldmVyeXRoaW5nIGFmdGVyIHRoZSBsYXN0CiMgY2hhcHRlci4gSWYgaXQgaXMgbGVmdCBibGFuayBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBzdGFuZGFyZCBmb290ZXIuCiMKIyBOb3RlOiBPbmx5IHVzZSBhIHVzZXItZGVmaW5lZCBmb290ZXIgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nIQojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9MQVRFWCBpcyBzZXQgdG8gWUVTLgoKTEFURVhfRk9PVEVSICAgICAgICAgICA9CgojIFRoZSBMQVRFWF9FWFRSQV9GSUxFUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBleHRyYSBpbWFnZXMgb3IKIyBvdGhlciBzb3VyY2UgZmlsZXMgd2hpY2ggc2hvdWxkIGJlIGNvcGllZCB0byB0aGUgTEFURVhfT1VUUFVUIG91dHB1dAojIGRpcmVjdG9yeS4gTm90ZSB0aGF0IHRoZSBmaWxlcyB3aWxsIGJlIGNvcGllZCBhcy1pczsgdGhlcmUgYXJlIG5vIGNvbW1hbmRzIG9yCiMgbWFya2VycyBhdmFpbGFibGUuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCgpMQVRFWF9FWFRSQV9GSUxFUyAgICAgID0KCiMgSWYgdGhlIFBERl9IWVBFUkxJTktTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgTGFUZVggdGhhdCBpcyBnZW5lcmF0ZWQgaXMKIyBwcmVwYXJlZCBmb3IgY29udmVyc2lvbiB0byBQREYgKHVzaW5nIHBzMnBkZiBvciBwZGZsYXRleCkuIFRoZSBQREYgZmlsZSB3aWxsCiMgY29udGFpbiBsaW5rcyAoanVzdCBsaWtlIHRoZSBIVE1MIG91dHB1dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMuIFRoaXMKIyBtYWtlcyB0aGUgb3V0cHV0IHN1aXRhYmxlIGZvciBvbmxpbmUgYnJvd3NpbmcgdXNpbmcgYSBQREYgdmlld2VyLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCgpQREZfSFlQRVJMSU5LUyAgICAgICAgID0gWUVTCgojIElmIHRoZSBMQVRFWF9QREZMQVRFWCB0YWcgaXMgc2V0IHRvIFlFUywgZG94eWdlbiB3aWxsIHVzZSBwZGZsYXRleCB0byBnZW5lcmF0ZQojIHRoZSBQREYgZmlsZSBkaXJlY3RseSBmcm9tIHRoZSBMYVRlWCBmaWxlcy4gU2V0IHRoaXMgb3B0aW9uIHRvIFlFUyB0byBnZXQgYQojIGhpZ2hlciBxdWFsaXR5IFBERiBkb2N1bWVudGF0aW9uLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCgpVU0VfUERGTEFURVggICAgICAgICAgID0gWUVTCgojIElmIHRoZSBMQVRFWF9CQVRDSE1PREUgdGFnIGlzIHNldCB0byBZRVMsIGRveHlnZW4gd2lsbCBhZGQgdGhlIFxiYXRjaG1vZGUKIyBjb21tYW5kIHRvIHRoZSBnZW5lcmF0ZWQgTGFUZVggZmlsZXMuIFRoaXMgd2lsbCBpbnN0cnVjdCBMYVRlWCB0byBrZWVwIHJ1bm5pbmcKIyBpZiBlcnJvcnMgb2NjdXIsIGluc3RlYWQgb2YgYXNraW5nIHRoZSB1c2VyIGZvciBoZWxwLiBUaGlzIG9wdGlvbiBpcyBhbHNvIHVzZWQKIyB3aGVuIGdlbmVyYXRpbmcgZm9ybXVsYXMgaW4gSFRNTC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCgpMQVRFWF9CQVRDSE1PREUgICAgICAgID0gTk8KCiMgSWYgdGhlIExBVEVYX0hJREVfSU5ESUNFUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBub3QgaW5jbHVkZSB0aGUKIyBpbmRleCBjaGFwdGVycyAoc3VjaCBhcyBGaWxlIEluZGV4LCBDb21wb3VuZCBJbmRleCwgZXRjLikgaW4gdGhlIG91dHB1dC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCgpMQVRFWF9ISURFX0lORElDRVMgICAgID0gTk8KCiMgSWYgdGhlIExBVEVYX1NPVVJDRV9DT0RFIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGluY2x1ZGUgc291cmNlCiMgY29kZSB3aXRoIHN5bnRheCBoaWdobGlnaHRpbmcgaW4gdGhlIExhVGVYIG91dHB1dC4KIwojIE5vdGUgdGhhdCB3aGljaCBzb3VyY2VzIGFyZSBzaG93biBhbHNvIGRlcGVuZHMgb24gb3RoZXIgc2V0dGluZ3Mgc3VjaCBhcwojIFNPVVJDRV9CUk9XU0VSLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTEFURVggaXMgc2V0IHRvIFlFUy4KCkxBVEVYX1NPVVJDRV9DT0RFICAgICAgPSBOTwoKIyBUaGUgTEFURVhfQklCX1NUWUxFIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBzdHlsZSB0byB1c2UgZm9yIHRoZQojIGJpYmxpb2dyYXBoeSwgZS5nLiBwbGFpbm5hdCwgb3IgaWVlZXRyLiBTZWUKIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpYlRlWCBhbmQgXGNpdGUgZm9yIG1vcmUgaW5mby4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogcGxhaW4uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX0xBVEVYIGlzIHNldCB0byBZRVMuCgpMQVRFWF9CSUJfU1RZTEUgICAgICAgID0gcGxhaW4KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgUlRGIG91dHB1dAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIElmIHRoZSBHRU5FUkFURV9SVEYgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIFJURiBvdXRwdXQuIFRoZQojIFJURiBvdXRwdXQgaXMgb3B0aW1pemVkIGZvciBXb3JkIDk3IGFuZCBtYXkgbm90IGxvb2sgdG9vIHByZXR0eSB3aXRoIG90aGVyIFJURgojIHJlYWRlcnMvZWRpdG9ycy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpHRU5FUkFURV9SVEYgICAgICAgICAgID0gTk8KCiMgVGhlIFJURl9PVVRQVVQgdGFnIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGVyZSB0aGUgUlRGIGRvY3Mgd2lsbCBiZSBwdXQuIElmIGEKIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKIyBpdC4KIyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IHJ0Zi4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCgpSVEZfT1VUUFVUICAgICAgICAgICAgID0gcnRmCgojIElmIHRoZSBDT01QQUNUX1JURiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIGdlbmVyYXRlcyBtb3JlIGNvbXBhY3QgUlRGCiMgZG9jdW1lbnRzLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIHNtYWxsIHByb2plY3RzIGFuZCBtYXkgaGVscCB0byBzYXZlIHNvbWUKIyB0cmVlcyBpbiBnZW5lcmFsLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCgpDT01QQUNUX1JURiAgICAgICAgICAgID0gTk8KCiMgSWYgdGhlIFJURl9IWVBFUkxJTktTIHRhZyBpcyBzZXQgdG8gWUVTLCB0aGUgUlRGIHRoYXQgaXMgZ2VuZXJhdGVkIHdpbGwKIyBjb250YWluIGh5cGVybGluayBmaWVsZHMuIFRoZSBSVEYgZmlsZSB3aWxsIGNvbnRhaW4gbGlua3MgKGp1c3QgbGlrZSB0aGUgSFRNTAojIG91dHB1dCkgaW5zdGVhZCBvZiBwYWdlIHJlZmVyZW5jZXMuIFRoaXMgbWFrZXMgdGhlIG91dHB1dCBzdWl0YWJsZSBmb3Igb25saW5lCiMgYnJvd3NpbmcgdXNpbmcgV29yZCBvciBzb21lIG90aGVyIFdvcmQgY29tcGF0aWJsZSByZWFkZXJzIHRoYXQgc3VwcG9ydCB0aG9zZQojIGZpZWxkcy4KIwojIE5vdGU6IFdvcmRQYWQgKHdyaXRlKSBhbmQgb3RoZXJzIGRvIG5vdCBzdXBwb3J0IGxpbmtzLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCgpSVEZfSFlQRVJMSU5LUyAgICAgICAgID0gTk8KCiMgTG9hZCBzdHlsZXNoZWV0IGRlZmluaXRpb25zIGZyb20gZmlsZS4gU3ludGF4IGlzIHNpbWlsYXIgdG8gZG94eWdlbidzIGNvbmZpZwojIGZpbGUsIGkuZS4gYSBzZXJpZXMgb2YgYXNzaWdubWVudHMuIFlvdSBvbmx5IGhhdmUgdG8gcHJvdmlkZSByZXBsYWNlbWVudHMsCiMgbWlzc2luZyBkZWZpbml0aW9ucyBhcmUgc2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWUuCiMKIyBTZWUgYWxzbyBzZWN0aW9uICJEb3h5Z2VuIHVzYWdlIiBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGdlbmVyYXRlIHRoZQojIGRlZmF1bHQgc3R5bGUgc2hlZXQgdGhhdCBkb3h5Z2VuIG5vcm1hbGx5IHVzZXMuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1JURiBpcyBzZXQgdG8gWUVTLgoKUlRGX1NUWUxFU0hFRVRfRklMRSAgICA9CgojIFNldCBvcHRpb25hbCB2YXJpYWJsZXMgdXNlZCBpbiB0aGUgZ2VuZXJhdGlvbiBvZiBhbiBSVEYgZG9jdW1lbnQuIFN5bnRheCBpcwojIHNpbWlsYXIgdG8gZG94eWdlbidzIGNvbmZpZyBmaWxlLiBBIHRlbXBsYXRlIGV4dGVuc2lvbnMgZmlsZSBjYW4gYmUgZ2VuZXJhdGVkCiMgdXNpbmcgZG94eWdlbiAtZSBydGYgZXh0ZW5zaW9uRmlsZS4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUlRGIGlzIHNldCB0byBZRVMuCgpSVEZfRVhURU5TSU9OU19GSUxFICAgID0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB0aGUgbWFuIHBhZ2Ugb3V0cHV0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgSWYgdGhlIEdFTkVSQVRFX01BTiB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgbWFuIHBhZ2VzIGZvcgojIGNsYXNzZXMgYW5kIGZpbGVzLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkdFTkVSQVRFX01BTiAgICAgICAgICAgPSBOTwoKIyBUaGUgTUFOX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBtYW4gcGFnZXMgd2lsbCBiZSBwdXQuIElmIGEKIyByZWxhdGl2ZSBwYXRoIGlzIGVudGVyZWQgdGhlIHZhbHVlIG9mIE9VVFBVVF9ESVJFQ1RPUlkgd2lsbCBiZSBwdXQgaW4gZnJvbnQgb2YKIyBpdC4gQSBkaXJlY3RvcnkgbWFuMyB3aWxsIGJlIGNyZWF0ZWQgaW5zaWRlIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIGJ5CiMgTUFOX09VVFBVVC4KIyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgaXM6IG1hbi4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfTUFOIGlzIHNldCB0byBZRVMuCgpNQU5fT1VUUFVUICAgICAgICAgICAgID0gbWFuCgojIFRoZSBNQU5fRVhURU5TSU9OIHRhZyBkZXRlcm1pbmVzIHRoZSBleHRlbnNpb24gdGhhdCBpcyBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkCiMgbWFuIHBhZ2VzLiBJbiBjYXNlIHRoZSBtYW51YWwgc2VjdGlvbiBkb2VzIG5vdCBzdGFydCB3aXRoIGEgbnVtYmVyLCB0aGUgbnVtYmVyCiMgMyBpcyBwcmVwZW5kZWQuIFRoZSBkb3QgKC4pIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIE1BTl9FWFRFTlNJT04gdGFnIGlzCiMgb3B0aW9uYWwuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IC4zLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9NQU4gaXMgc2V0IHRvIFlFUy4KCk1BTl9FWFRFTlNJT04gICAgICAgICAgPSAuMwoKIyBUaGUgTUFOX1NVQkRJUiB0YWcgZGV0ZXJtaW5lcyB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IGNyZWF0ZWQgd2l0aGluCiMgTUFOX09VVFBVVCBpbiB3aGljaCB0aGUgbWFuIHBhZ2VzIGFyZSBwbGFjZWQuIElmIGRlZmF1bHRzIHRvIG1hbiBmb2xsb3dlZCBieQojIE1BTl9FWFRFTlNJT04gd2l0aCB0aGUgaW5pdGlhbCAuIHJlbW92ZWQuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX01BTiBpcyBzZXQgdG8gWUVTLgoKTUFOX1NVQkRJUiAgICAgICAgICAgICA9CgojIElmIHRoZSBNQU5fTElOS1MgdGFnIGlzIHNldCB0byBZRVMgYW5kIGRveHlnZW4gZ2VuZXJhdGVzIG1hbiBvdXRwdXQsIHRoZW4gaXQKIyB3aWxsIGdlbmVyYXRlIG9uZSBhZGRpdGlvbmFsIG1hbiBmaWxlIGZvciBlYWNoIGVudGl0eSBkb2N1bWVudGVkIGluIHRoZSByZWFsCiMgbWFuIHBhZ2UocykuIFRoZXNlIGFkZGl0aW9uYWwgZmlsZXMgb25seSBzb3VyY2UgdGhlIHJlYWwgbWFuIHBhZ2UsIGJ1dCB3aXRob3V0CiMgdGhlbSB0aGUgbWFuIGNvbW1hbmQgd291bGQgYmUgdW5hYmxlIHRvIGZpbmQgdGhlIGNvcnJlY3QgcGFnZS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX01BTiBpcyBzZXQgdG8gWUVTLgoKTUFOX0xJTktTICAgICAgICAgICAgICA9IE5PCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFhNTCBvdXRwdXQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBJZiB0aGUgR0VORVJBVEVfWE1MIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhbiBYTUwgZmlsZSB0aGF0CiMgY2FwdHVyZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgY29kZSBpbmNsdWRpbmcgYWxsIGRvY3VtZW50YXRpb24uCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKR0VORVJBVEVfWE1MICAgICAgICAgICA9IE5PCgojIFRoZSBYTUxfT1VUUFVUIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgd2hlcmUgdGhlIFhNTCBwYWdlcyB3aWxsIGJlIHB1dC4gSWYgYQojIHJlbGF0aXZlIHBhdGggaXMgZW50ZXJlZCB0aGUgdmFsdWUgb2YgT1VUUFVUX0RJUkVDVE9SWSB3aWxsIGJlIHB1dCBpbiBmcm9udCBvZgojIGl0LgojIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBpczogeG1sLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9YTUwgaXMgc2V0IHRvIFlFUy4KClhNTF9PVVRQVVQgICAgICAgICAgICAgPSB4bWwKCiMgSWYgdGhlIFhNTF9QUk9HUkFNTElTVElORyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZHVtcCB0aGUgcHJvZ3JhbQojIGxpc3RpbmdzIChpbmNsdWRpbmcgc3ludGF4IGhpZ2hsaWdodGluZyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgaW5mb3JtYXRpb24pIHRvCiMgdGhlIFhNTCBvdXRwdXQuIE5vdGUgdGhhdCBlbmFibGluZyB0aGlzIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0aGUgc2l6ZQojIG9mIHRoZSBYTUwgb3V0cHV0LgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEdFTkVSQVRFX1hNTCBpcyBzZXQgdG8gWUVTLgoKWE1MX1BST0dSQU1MSVNUSU5HICAgICA9IFlFUwoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBET0NCT09LIG91dHB1dAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIElmIHRoZSBHRU5FUkFURV9ET0NCT09LIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBEb2Nib29rIGZpbGVzCiMgdGhhdCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBQREYuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKR0VORVJBVEVfRE9DQk9PSyAgICAgICA9IE5PCgojIFRoZSBET0NCT09LX09VVFBVVCB0YWcgaXMgdXNlZCB0byBzcGVjaWZ5IHdoZXJlIHRoZSBEb2Nib29rIHBhZ2VzIHdpbGwgYmUgcHV0LgojIElmIGEgcmVsYXRpdmUgcGF0aCBpcyBlbnRlcmVkIHRoZSB2YWx1ZSBvZiBPVVRQVVRfRElSRUNUT1JZIHdpbGwgYmUgcHV0IGluCiMgZnJvbnQgb2YgaXQuCiMgVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGlzOiBkb2Nib29rLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9ET0NCT09LIGlzIHNldCB0byBZRVMuCgpET0NCT09LX09VVFBVVCAgICAgICAgID0gZG9jYm9vawoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEF1dG9HZW4gRGVmaW5pdGlvbnMgb3V0cHV0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgSWYgdGhlIEdFTkVSQVRFX0FVVE9HRU5fREVGIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhbiBBdXRvR2VuCiMgRGVmaW5pdGlvbnMgKHNlZSBodHRwOi8vYXV0b2dlbi5zZi5uZXQpIGZpbGUgdGhhdCBjYXB0dXJlcyB0aGUgc3RydWN0dXJlIG9mCiMgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIHN0aWxsCiMgZXhwZXJpbWVudGFsIGFuZCBpbmNvbXBsZXRlIGF0IHRoZSBtb21lbnQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgoKR0VORVJBVEVfQVVUT0dFTl9ERUYgICA9IE5PCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIFBlcmwgbW9kdWxlIG91dHB1dAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIElmIHRoZSBHRU5FUkFURV9QRVJMTU9EIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIFBlcmwgbW9kdWxlCiMgZmlsZSB0aGF0IGNhcHR1cmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvZGUgaW5jbHVkaW5nIGFsbCBkb2N1bWVudGF0aW9uLgojCiMgTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBzdGlsbCBleHBlcmltZW50YWwgYW5kIGluY29tcGxldGUgYXQgdGhlIG1vbWVudC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpHRU5FUkFURV9QRVJMTU9EICAgICAgID0gTk8KCiMgSWYgdGhlIFBFUkxNT0RfTEFURVggdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIGdlbmVyYXRlIHRoZSBuZWNlc3NhcnkKIyBNYWtlZmlsZSBydWxlcywgUGVybCBzY3JpcHRzIGFuZCBMYVRlWCBjb2RlIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUgUERGIGFuZCBEVkkKIyBvdXRwdXQgZnJvbSB0aGUgUGVybCBtb2R1bGUgb3V0cHV0LgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUEVSTE1PRCBpcyBzZXQgdG8gWUVTLgoKUEVSTE1PRF9MQVRFWCAgICAgICAgICA9IE5PCgojIElmIHRoZSBQRVJMTU9EX1BSRVRUWSB0YWcgaXMgc2V0IHRvIFlFUyB0aGUgUGVybCBtb2R1bGUgb3V0cHV0IHdpbGwgYmUgbmljZWx5CiMgZm9ybWF0dGVkIHNvIGl0IGNhbiBiZSBwYXJzZWQgYnkgYSBodW1hbiByZWFkZXIuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvCiMgdW5kZXJzdGFuZCB3aGF0IGlzIGdvaW5nIG9uLiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhpcyB0YWcgaXMgc2V0IHRvIE5PIHRoZQojIHNpemUgb2YgdGhlIFBlcmwgbW9kdWxlIG91dHB1dCB3aWxsIGJlIG11Y2ggc21hbGxlciBhbmQgUGVybCB3aWxsIHBhcnNlIGl0CiMganVzdCB0aGUgc2FtZS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBHRU5FUkFURV9QRVJMTU9EIGlzIHNldCB0byBZRVMuCgpQRVJMTU9EX1BSRVRUWSAgICAgICAgID0gWUVTCgojIFRoZSBuYW1lcyBvZiB0aGUgbWFrZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRlZCBkb3h5cnVsZXMubWFrZSBmaWxlIGFyZQojIHByZWZpeGVkIHdpdGggdGhlIHN0cmluZyBjb250YWluZWQgaW4gUEVSTE1PRF9NQUtFVkFSX1BSRUZJWC4gVGhpcyBpcyB1c2VmdWwKIyBzbyBkaWZmZXJlbnQgZG94eXJ1bGVzLm1ha2UgZmlsZXMgaW5jbHVkZWQgYnkgdGhlIHNhbWUgTWFrZWZpbGUgZG9uJ3QKIyBvdmVyd3JpdGUgZWFjaCBvdGhlcidzIHZhcmlhYmxlcy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgR0VORVJBVEVfUEVSTE1PRCBpcyBzZXQgdG8gWUVTLgoKUEVSTE1PRF9NQUtFVkFSX1BSRUZJWCA9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhlIHByZXByb2Nlc3NvcgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIElmIHRoZSBFTkFCTEVfUFJFUFJPQ0VTU0lORyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZXZhbHVhdGUgYWxsCiMgQy1wcmVwcm9jZXNzb3IgZGlyZWN0aXZlcyBmb3VuZCBpbiB0aGUgc291cmNlcyBhbmQgaW5jbHVkZSBmaWxlcy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgoKRU5BQkxFX1BSRVBST0NFU1NJTkcgICA9IFlFUwoKIyBJZiB0aGUgTUFDUk9fRVhQQU5TSU9OIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBleHBhbmQgYWxsIG1hY3JvIG5hbWVzCiMgaW4gdGhlIHNvdXJjZSBjb2RlLiBJZiBzZXQgdG8gTk8gb25seSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB3aWxsIGJlCiMgcGVyZm9ybWVkLiBNYWNybyBleHBhbnNpb24gY2FuIGJlIGRvbmUgaW4gYSBjb250cm9sbGVkIHdheSBieSBzZXR0aW5nCiMgRVhQQU5EX09OTFlfUFJFREVGIHRvIFlFUy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCgpNQUNST19FWFBBTlNJT04gICAgICAgID0gTk8KCiMgSWYgdGhlIEVYUEFORF9PTkxZX1BSRURFRiBhbmQgTUFDUk9fRVhQQU5TSU9OIHRhZ3MgYXJlIGJvdGggc2V0IHRvIFlFUyB0aGVuCiMgdGhlIG1hY3JvIGV4cGFuc2lvbiBpcyBsaW1pdGVkIHRvIHRoZSBtYWNyb3Mgc3BlY2lmaWVkIHdpdGggdGhlIFBSRURFRklORUQgYW5kCiMgRVhQQU5EX0FTX0RFRklORUQgdGFncy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCgpFWFBBTkRfT05MWV9QUkVERUYgICAgID0gTk8KCiMgSWYgdGhlIFNFQVJDSF9JTkNMVURFUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGUgaW5jbHVkZXMgZmlsZXMgaW4gdGhlCiMgSU5DTFVERV9QQVRIIHdpbGwgYmUgc2VhcmNoZWQgaWYgYSAjaW5jbHVkZSBpcyBmb3VuZC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQgdG8gWUVTLgoKU0VBUkNIX0lOQ0xVREVTICAgICAgICA9IFlFUwoKIyBUaGUgSU5DTFVERV9QQVRIIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQKIyBjb250YWluIGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUgbm90IGlucHV0IGZpbGVzIGJ1dCBzaG91bGQgYmUgcHJvY2Vzc2VkIGJ5IHRoZQojIHByZXByb2Nlc3Nvci4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgU0VBUkNIX0lOQ0xVREVTIGlzIHNldCB0byBZRVMuCgpJTkNMVURFX1BBVEggICAgICAgICAgID0KCiMgWW91IGNhbiB1c2UgdGhlIElOQ0xVREVfRklMRV9QQVRURVJOUyB0YWcgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSB3aWxkY2FyZAojIHBhdHRlcm5zIChsaWtlICouaCBhbmQgKi5ocHApIHRvIGZpbHRlciBvdXQgdGhlIGhlYWRlci1maWxlcyBpbiB0aGUKIyBkaXJlY3Rvcmllcy4gSWYgbGVmdCBibGFuaywgdGhlIHBhdHRlcm5zIHNwZWNpZmllZCB3aXRoIEZJTEVfUEFUVEVSTlMgd2lsbCBiZQojIHVzZWQuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGlzIHNldCB0byBZRVMuCgpJTkNMVURFX0ZJTEVfUEFUVEVSTlMgID0KCiMgVGhlIFBSRURFRklORUQgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgbWFjcm8gbmFtZXMgdGhhdCBhcmUKIyBkZWZpbmVkIGJlZm9yZSB0aGUgcHJlcHJvY2Vzc29yIGlzIHN0YXJ0ZWQgKHNpbWlsYXIgdG8gdGhlIC1EIG9wdGlvbiBvZiBlLmcuCiMgZ2NjKS4gVGhlIGFyZ3VtZW50IG9mIHRoZSB0YWcgaXMgYSBsaXN0IG9mIG1hY3JvcyBvZiB0aGUgZm9ybTogbmFtZSBvcgojIG5hbWU9ZGVmaW5pdGlvbiAobm8gc3BhY2VzKS4gSWYgdGhlIGRlZmluaXRpb24gYW5kIHRoZSAiPSIgYXJlIG9taXR0ZWQsICI9MSIKIyBpcyBhc3N1bWVkLiBUbyBwcmV2ZW50IGEgbWFjcm8gZGVmaW5pdGlvbiBmcm9tIGJlaW5nIHVuZGVmaW5lZCB2aWEgI3VuZGVmIG9yCiMgcmVjdXJzaXZlbHkgZXhwYW5kZWQgdXNlIHRoZSA6PSBvcGVyYXRvciBpbnN0ZWFkIG9mIHRoZSA9IG9wZXJhdG9yLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQgdG8gWUVTLgoKUFJFREVGSU5FRCAgICAgICAgICAgICA9CgojIElmIHRoZSBNQUNST19FWFBBTlNJT04gYW5kIEVYUEFORF9PTkxZX1BSRURFRiB0YWdzIGFyZSBzZXQgdG8gWUVTIHRoZW4gdGhpcwojIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGEgbGlzdCBvZiBtYWNybyBuYW1lcyB0aGF0IHNob3VsZCBiZSBleHBhbmRlZC4gVGhlCiMgbWFjcm8gZGVmaW5pdGlvbiB0aGF0IGlzIGZvdW5kIGluIHRoZSBzb3VyY2VzIHdpbGwgYmUgdXNlZC4gVXNlIHRoZSBQUkVERUZJTkVECiMgdGFnIGlmIHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBtYWNybyBkZWZpbml0aW9uIHRoYXQgb3ZlcnJ1bGVzIHRoZQojIGRlZmluaXRpb24gZm91bmQgaW4gdGhlIHNvdXJjZSBjb2RlLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBFTkFCTEVfUFJFUFJPQ0VTU0lORyBpcyBzZXQgdG8gWUVTLgoKRVhQQU5EX0FTX0RFRklORUQgICAgICA9CgojIElmIHRoZSBTS0lQX0ZVTkNUSU9OX01BQ1JPUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4ncyBwcmVwcm9jZXNzb3Igd2lsbAojIHJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBmdW5jdGlvbi1saWtlIG1hY3JvcyB0aGF0IGFyZSBhbG9uZSBvbiBhIGxpbmUsIGhhdmUKIyBhbiBhbGwgdXBwZXJjYXNlIG5hbWUsIGFuZCBkbyBub3QgZW5kIHdpdGggYSBzZW1pY29sb24uIFN1Y2ggZnVuY3Rpb24gbWFjcm9zCiMgYXJlIHR5cGljYWxseSB1c2VkIGZvciBib2lsZXItcGxhdGUgY29kZSwgYW5kIHdpbGwgY29uZnVzZSB0aGUgcGFyc2VyIGlmIG5vdAojIHJlbW92ZWQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgRU5BQkxFX1BSRVBST0NFU1NJTkcgaXMgc2V0IHRvIFlFUy4KClNLSVBfRlVOQ1RJT05fTUFDUk9TICAgPSBZRVMKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBleHRlcm5hbCByZWZlcmVuY2VzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgVGhlIFRBR0ZJTEVTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIHRhZyBmaWxlcy4gRm9yIGVhY2ggdGFnCiMgZmlsZSB0aGUgbG9jYXRpb24gb2YgdGhlIGV4dGVybmFsIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGFkZGVkLiBUaGUgZm9ybWF0IG9mCiMgYSB0YWcgZmlsZSB3aXRob3V0IHRoaXMgbG9jYXRpb24gaXMgYXMgZm9sbG93czoKIyBUQUdGSUxFUyA9IGZpbGUxIGZpbGUyIC4uLgojIEFkZGluZyBsb2NhdGlvbiBmb3IgdGhlIHRhZyBmaWxlcyBpcyBkb25lIGFzIGZvbGxvd3M6CiMgVEFHRklMRVMgPSBmaWxlMT1sb2MxICJmaWxlMiA9IGxvYzIiIC4uLgojIHdoZXJlIGxvYzEgYW5kIGxvYzIgY2FuIGJlIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzIG9yIFVSTHMuIFNlZSB0aGUKIyBzZWN0aW9uICJMaW5raW5nIHRvIGV4dGVybmFsIGRvY3VtZW50YXRpb24iIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2UKIyBvZiB0YWcgZmlsZXMuCiMgTm90ZTogRWFjaCB0YWcgZmlsZSBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZSAod2hlcmUgdGhlIG5hbWUgZG9lcyBOT1QgaW5jbHVkZQojIHRoZSBwYXRoKS4gSWYgYSB0YWcgZmlsZSBpcyBub3QgbG9jYXRlZCBpbiB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGRveHlnZW4gaXMKIyBydW4sIHlvdSBtdXN0IGFsc28gc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgdGFnZmlsZSBoZXJlLgoKVEFHRklMRVMgICAgICAgICAgICAgICA9CgojIFdoZW4gYSBmaWxlIG5hbWUgaXMgc3BlY2lmaWVkIGFmdGVyIEdFTkVSQVRFX1RBR0ZJTEUsIGRveHlnZW4gd2lsbCBjcmVhdGUgYQojIHRhZyBmaWxlIHRoYXQgaXMgYmFzZWQgb24gdGhlIGlucHV0IGZpbGVzIGl0IHJlYWRzLiBTZWUgc2VjdGlvbiAiTGlua2luZyB0bwojIGV4dGVybmFsIGRvY3VtZW50YXRpb24iIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2FnZSBvZiB0YWcgZmlsZXMuCgpHRU5FUkFURV9UQUdGSUxFICAgICAgID0KCiMgSWYgdGhlIEFMTEVYVEVSTkFMUyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgZXh0ZXJuYWwgY2xhc3Mgd2lsbCBiZSBsaXN0ZWQgaW4gdGhlCiMgY2xhc3MgaW5kZXguIElmIHNldCB0byBOTyBvbmx5IHRoZSBpbmhlcml0ZWQgZXh0ZXJuYWwgY2xhc3NlcyB3aWxsIGJlIGxpc3RlZC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCgpBTExFWFRFUk5BTFMgICAgICAgICAgID0gTk8KCiMgSWYgdGhlIEVYVEVSTkFMX0dST1VQUyB0YWcgaXMgc2V0IHRvIFlFUyBhbGwgZXh0ZXJuYWwgZ3JvdXBzIHdpbGwgYmUgbGlzdGVkIGluCiMgdGhlIG1vZHVsZXMgaW5kZXguIElmIHNldCB0byBOTywgb25seSB0aGUgY3VycmVudCBwcm9qZWN0J3MgZ3JvdXBzIHdpbGwgYmUKIyBsaXN0ZWQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCkVYVEVSTkFMX0dST1VQUyAgICAgICAgPSBZRVMKCiMgSWYgdGhlIEVYVEVSTkFMX1BBR0VTIHRhZyBpcyBzZXQgdG8gWUVTIGFsbCBleHRlcm5hbCBwYWdlcyB3aWxsIGJlIGxpc3RlZCBpbgojIHRoZSByZWxhdGVkIHBhZ2VzIGluZGV4LiBJZiBzZXQgdG8gTk8sIG9ubHkgdGhlIGN1cnJlbnQgcHJvamVjdCdzIHBhZ2VzIHdpbGwKIyBiZSBsaXN0ZWQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCkVYVEVSTkFMX1BBR0VTICAgICAgICAgPSBZRVMKCiMgVGhlIFBFUkxfUEFUSCBzaG91bGQgYmUgdGhlIGFic29sdXRlIHBhdGggYW5kIG5hbWUgb2YgdGhlIHBlcmwgc2NyaXB0CiMgaW50ZXJwcmV0ZXIgKGkuZS4gdGhlIHJlc3VsdCBvZiAnd2hpY2ggcGVybCcpLgojIFRoZSBkZWZhdWx0IGZpbGUgKHdpdGggYWJzb2x1dGUgcGF0aCkgaXM6IC91c3IvYmluL3BlcmwuCgpQRVJMX1BBVEggICAgICAgICAgICAgID0gL3Vzci9iaW4vcGVybAoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoZSBkb3QgdG9vbAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIElmIHRoZSBDTEFTU19ESUFHUkFNUyB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBjbGFzcyBkaWFncmFtCiMgKGluIEhUTUwgYW5kIExhVGVYKSBmb3IgY2xhc3NlcyB3aXRoIGJhc2Ugb3Igc3VwZXIgY2xhc3Nlcy4gU2V0dGluZyB0aGUgdGFnIHRvCiMgTk8gdHVybnMgdGhlIGRpYWdyYW1zIG9mZi4gTm90ZSB0aGF0IHRoaXMgb3B0aW9uIGFsc28gd29ya3Mgd2l0aCBIQVZFX0RPVAojIGRpc2FibGVkLCBidXQgaXQgaXMgcmVjb21tZW5kZWQgdG8gaW5zdGFsbCBhbmQgdXNlIGRvdCwgc2luY2UgaXQgeWllbGRzIG1vcmUKIyBwb3dlcmZ1bCBncmFwaHMuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCkNMQVNTX0RJQUdSQU1TICAgICAgICAgPSBZRVMKCiMgWW91IGNhbiBkZWZpbmUgbWVzc2FnZSBzZXF1ZW5jZSBjaGFydHMgd2l0aGluIGRveHlnZW4gY29tbWVudHMgdXNpbmcgdGhlIFxtc2MKIyBjb21tYW5kLiBEb3h5Z2VuIHdpbGwgdGhlbiBydW4gdGhlIG1zY2dlbiB0b29sIChzZWU6CiMgaHR0cDovL3d3dy5tY3Rlcm5hbi5tZS51ay9tc2NnZW4vKSkgdG8gcHJvZHVjZSB0aGUgY2hhcnQgYW5kIGluc2VydCBpdCBpbiB0aGUKIyBkb2N1bWVudGF0aW9uLiBUaGUgTVNDR0VOX1BBVEggdGFnIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgZGlyZWN0b3J5IHdoZXJlCiMgdGhlIG1zY2dlbiB0b29sIHJlc2lkZXMuIElmIGxlZnQgZW1wdHkgdGhlIHRvb2wgaXMgYXNzdW1lZCB0byBiZSBmb3VuZCBpbiB0aGUKIyBkZWZhdWx0IHNlYXJjaCBwYXRoLgoKTVNDR0VOX1BBVEggICAgICAgICAgICA9CgojIFlvdSBjYW4gaW5jbHVkZSBkaWFncmFtcyBtYWRlIHdpdGggZGlhIGluIGRveHlnZW4gZG9jdW1lbnRhdGlvbi4gRG94eWdlbiB3aWxsCiMgdGhlbiBydW4gZGlhIHRvIHByb2R1Y2UgdGhlIGRpYWdyYW0gYW5kIGluc2VydCBpdCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gVGhlCiMgRElBX1BBVEggdGFnIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBkaWEgYmluYXJ5IHJlc2lkZXMuCiMgSWYgbGVmdCBlbXB0eSBkaWEgaXMgYXNzdW1lZCB0byBiZSBmb3VuZCBpbiB0aGUgZGVmYXVsdCBzZWFyY2ggcGF0aC4KCkRJQV9QQVRIICAgICAgICAgICAgICAgPQoKIyBJZiBzZXQgdG8gWUVTLCB0aGUgaW5oZXJpdGFuY2UgYW5kIGNvbGxhYm9yYXRpb24gZ3JhcGhzIHdpbGwgaGlkZSBpbmhlcml0YW5jZQojIGFuZCB1c2FnZSByZWxhdGlvbnMgaWYgdGhlIHRhcmdldCBpcyB1bmRvY3VtZW50ZWQgb3IgaXMgbm90IGEgY2xhc3MuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KCkhJREVfVU5ET0NfUkVMQVRJT05TICAgPSBZRVMKCiMgSWYgeW91IHNldCB0aGUgSEFWRV9ET1QgdGFnIHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBhc3N1bWUgdGhlIGRvdCB0b29sIGlzCiMgYXZhaWxhYmxlIGZyb20gdGhlIHBhdGguIFRoaXMgdG9vbCBpcyBwYXJ0IG9mIEdyYXBodml6IChzZWU6CiMgaHR0cDovL3d3dy5ncmFwaHZpei5vcmcvKSwgYSBncmFwaCB2aXN1YWxpemF0aW9uIHRvb2xraXQgZnJvbSBBVCZUIGFuZCBMdWNlbnQKIyBCZWxsIExhYnMuIFRoZSBvdGhlciBvcHRpb25zIGluIHRoaXMgc2VjdGlvbiBoYXZlIG5vIGVmZmVjdCBpZiB0aGlzIG9wdGlvbiBpcwojIHNldCB0byBOTwojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KCkhBVkVfRE9UICAgICAgICAgICAgICAgPSBZRVMKCiMgVGhlIERPVF9OVU1fVEhSRUFEUyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkb3QgaW52b2NhdGlvbnMgZG94eWdlbiBpcyBhbGxvd2VkCiMgdG8gcnVuIGluIHBhcmFsbGVsLiBXaGVuIHNldCB0byAwIGRveHlnZW4gd2lsbCBiYXNlIHRoaXMgb24gdGhlIG51bWJlciBvZgojIHByb2Nlc3NvcnMgYXZhaWxhYmxlIGluIHRoZSBzeXN0ZW0uIFlvdSBjYW4gc2V0IGl0IGV4cGxpY2l0bHkgdG8gYSB2YWx1ZQojIGxhcmdlciB0aGFuIDAgdG8gZ2V0IGNvbnRyb2wgb3ZlciB0aGUgYmFsYW5jZSBiZXR3ZWVuIENQVSBsb2FkIGFuZCBwcm9jZXNzaW5nCiMgc3BlZWQuCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMzIsIGRlZmF1bHQgdmFsdWU6IDAuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCgpET1RfTlVNX1RIUkVBRFMgICAgICAgID0gMAoKIyBXaGVuIHlvdSB3YW50IGEgZGlmZmVyZW50bHkgbG9va2luZyBmb250IG4gdGhlIGRvdCBmaWxlcyB0aGF0IGRveHlnZW4KIyBnZW5lcmF0ZXMgeW91IGNhbiBzcGVjaWZ5IHRoZSBmb250IG5hbWUgdXNpbmcgRE9UX0ZPTlROQU1FLiBZb3UgbmVlZCB0byBtYWtlCiMgc3VyZSBkb3QgaXMgYWJsZSB0byBmaW5kIHRoZSBmb250LCB3aGljaCBjYW4gYmUgZG9uZSBieSBwdXR0aW5nIGl0IGluIGEKIyBzdGFuZGFyZCBsb2NhdGlvbiBvciBieSBzZXR0aW5nIHRoZSBET1RGT05UUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBieQojIHNldHRpbmcgRE9UX0ZPTlRQQVRIIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZm9udC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogSGVsdmV0aWNhLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKRE9UX0ZPTlROQU1FICAgICAgICAgICA9IEhlbHZldGljYQoKIyBUaGUgRE9UX0ZPTlRTSVpFIHRhZyBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIHNpemUgKGluIHBvaW50cykgb2YgdGhlIGZvbnQgb2YKIyBkb3QgZ3JhcGhzLgojIE1pbmltdW0gdmFsdWU6IDQsIG1heGltdW0gdmFsdWU6IDI0LCBkZWZhdWx0IHZhbHVlOiAxMC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KCkRPVF9GT05UU0laRSAgICAgICAgICAgPSAxMAoKIyBCeSBkZWZhdWx0IGRveHlnZW4gd2lsbCB0ZWxsIGRvdCB0byB1c2UgdGhlIGRlZmF1bHQgZm9udCBhcyBzcGVjaWZpZWQgd2l0aAojIERPVF9GT05UTkFNRS4gSWYgeW91IHNwZWNpZnkgYSBkaWZmZXJlbnQgZm9udCB1c2luZyBET1RfRk9OVE5BTUUgeW91IGNhbiBzZXQKIyB0aGUgcGF0aCB3aGVyZSBkb3QgY2FuIGZpbmQgaXQgdXNpbmcgdGhpcyB0YWcuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCgpET1RfRk9OVFBBVEggICAgICAgICAgID0KCiMgSWYgdGhlIENMQVNTX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yCiMgZWFjaCBkb2N1bWVudGVkIGNsYXNzIHNob3dpbmcgdGhlIGRpcmVjdCBhbmQgaW5kaXJlY3QgaW5oZXJpdGFuY2UgcmVsYXRpb25zLgojIFNldHRpbmcgdGhpcyB0YWcgdG8gWUVTIHdpbGwgZm9yY2UgdGhlIENMQVNTX0RJQUdSQU1TIHRhZyB0byBOTy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKQ0xBU1NfR1JBUEggICAgICAgICAgICA9IFlFUwoKIyBJZiB0aGUgQ09MTEFCT1JBVElPTl9HUkFQSCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhCiMgZ3JhcGggZm9yIGVhY2ggZG9jdW1lbnRlZCBjbGFzcyBzaG93aW5nIHRoZSBkaXJlY3QgYW5kIGluZGlyZWN0IGltcGxlbWVudGF0aW9uCiMgZGVwZW5kZW5jaWVzIChpbmhlcml0YW5jZSwgY29udGFpbm1lbnQsIGFuZCBjbGFzcyByZWZlcmVuY2VzIHZhcmlhYmxlcykgb2YgdGhlCiMgY2xhc3Mgd2l0aCBvdGhlciBkb2N1bWVudGVkIGNsYXNzZXMuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KCkNPTExBQk9SQVRJT05fR1JBUEggICAgPSBZRVMKCiMgSWYgdGhlIEdST1VQX0dSQVBIUyB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGdyYXBoIGZvcgojIGdyb3Vwcywgc2hvd2luZyB0aGUgZGlyZWN0IGdyb3VwcyBkZXBlbmRlbmNpZXMuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KCkdST1VQX0dSQVBIUyAgICAgICAgICAgPSBZRVMKCiMgSWYgdGhlIFVNTF9MT09LIHRhZyBpcyBzZXQgdG8gWUVTIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBpbmhlcml0YW5jZSBhbmQKIyBjb2xsYWJvcmF0aW9uIGRpYWdyYW1zIGluIGEgc3R5bGUgc2ltaWxhciB0byB0aGUgT01HJ3MgVW5pZmllZCBNb2RlbGluZwojIExhbmd1YWdlLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KClVNTF9MT09LICAgICAgICAgICAgICAgPSBOTwoKIyBJZiB0aGUgVU1MX0xPT0sgdGFnIGlzIGVuYWJsZWQsIHRoZSBmaWVsZHMgYW5kIG1ldGhvZHMgYXJlIHNob3duIGluc2lkZSB0aGUKIyBjbGFzcyBub2RlLiBJZiB0aGVyZSBhcmUgbWFueSBmaWVsZHMgb3IgbWV0aG9kcyBhbmQgbWFueSBub2RlcyB0aGUgZ3JhcGggbWF5CiMgYmVjb21lIHRvbyBiaWcgdG8gYmUgdXNlZnVsLiBUaGUgVU1MX0xJTUlUX05VTV9GSUVMRFMgdGhyZXNob2xkIGxpbWl0cyB0aGUKIyBudW1iZXIgb2YgaXRlbXMgZm9yIGVhY2ggdHlwZSB0byBtYWtlIHRoZSBzaXplIG1vcmUgbWFuYWdlYWJsZS4gU2V0IHRoaXMgdG8gMAojIGZvciBubyBsaW1pdC4gTm90ZSB0aGF0IHRoZSB0aHJlc2hvbGQgbWF5IGJlIGV4Y2VlZGVkIGJ5IDUwJSBiZWZvcmUgdGhlIGxpbWl0CiMgaXMgZW5mb3JjZWQuIFNvIHdoZW4geW91IHNldCB0aGUgdGhyZXNob2xkIHRvIDEwLCB1cCB0byAxNSBmaWVsZHMgbWF5IGFwcGVhciwKIyBidXQgaWYgdGhlIG51bWJlciBleGNlZWRzIDE1LCB0aGUgdG90YWwgYW1vdW50IG9mIGZpZWxkcyBzaG93biBpcyBsaW1pdGVkIHRvCiMgMTAuCiMgTWluaW11bSB2YWx1ZTogMCwgbWF4aW11bSB2YWx1ZTogMTAwLCBkZWZhdWx0IHZhbHVlOiAxMC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KClVNTF9MSU1JVF9OVU1fRklFTERTICAgPSAxMAoKIyBJZiB0aGUgVEVNUExBVEVfUkVMQVRJT05TIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gdGhlIGluaGVyaXRhbmNlIGFuZAojIGNvbGxhYm9yYXRpb24gZ3JhcGhzIHdpbGwgc2hvdyB0aGUgcmVsYXRpb25zIGJldHdlZW4gdGVtcGxhdGVzIGFuZCB0aGVpcgojIGluc3RhbmNlcy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCgpURU1QTEFURV9SRUxBVElPTlMgICAgID0gTk8KCiMgSWYgdGhlIElOQ0xVREVfR1JBUEgsIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGFuZCBTRUFSQ0hfSU5DTFVERVMgdGFncyBhcmUgc2V0IHRvCiMgWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGVhY2ggZG9jdW1lbnRlZCBmaWxlIHNob3dpbmcgdGhlCiMgZGlyZWN0IGFuZCBpbmRpcmVjdCBpbmNsdWRlIGRlcGVuZGVuY2llcyBvZiB0aGUgZmlsZSB3aXRoIG90aGVyIGRvY3VtZW50ZWQKIyBmaWxlcy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKSU5DTFVERV9HUkFQSCAgICAgICAgICA9IFlFUwoKIyBJZiB0aGUgSU5DTFVERURfQllfR1JBUEgsIEVOQUJMRV9QUkVQUk9DRVNTSU5HIGFuZCBTRUFSQ0hfSU5DTFVERVMgdGFncyBhcmUKIyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIGdlbmVyYXRlIGEgZ3JhcGggZm9yIGVhY2ggZG9jdW1lbnRlZCBmaWxlIHNob3dpbmcKIyB0aGUgZGlyZWN0IGFuZCBpbmRpcmVjdCBpbmNsdWRlIGRlcGVuZGVuY2llcyBvZiB0aGUgZmlsZSB3aXRoIG90aGVyIGRvY3VtZW50ZWQKIyBmaWxlcy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKSU5DTFVERURfQllfR1JBUEggICAgICA9IFlFUwoKIyBJZiB0aGUgQ0FMTF9HUkFQSCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGNhbGwKIyBkZXBlbmRlbmN5IGdyYXBoIGZvciBldmVyeSBnbG9iYWwgZnVuY3Rpb24gb3IgY2xhc3MgbWV0aG9kLgojCiMgTm90ZSB0aGF0IGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgc2lnbmlmaWNhbnRseSBpbmNyZWFzZSB0aGUgdGltZSBvZiBhIHJ1bi4KIyBTbyBpbiBtb3N0IGNhc2VzIGl0IHdpbGwgYmUgYmV0dGVyIHRvIGVuYWJsZSBjYWxsIGdyYXBocyBmb3Igc2VsZWN0ZWQKIyBmdW5jdGlvbnMgb25seSB1c2luZyB0aGUgXGNhbGxncmFwaCBjb21tYW5kLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KCkNBTExfR1JBUEggICAgICAgICAgICAgPSBZRVMKCiMgSWYgdGhlIENBTExFUl9HUkFQSCB0YWcgaXMgc2V0IHRvIFlFUyB0aGVuIGRveHlnZW4gd2lsbCBnZW5lcmF0ZSBhIGNhbGxlcgojIGRlcGVuZGVuY3kgZ3JhcGggZm9yIGV2ZXJ5IGdsb2JhbCBmdW5jdGlvbiBvciBjbGFzcyBtZXRob2QuCiMKIyBOb3RlIHRoYXQgZW5hYmxpbmcgdGhpcyBvcHRpb24gd2lsbCBzaWduaWZpY2FudGx5IGluY3JlYXNlIHRoZSB0aW1lIG9mIGEgcnVuLgojIFNvIGluIG1vc3QgY2FzZXMgaXQgd2lsbCBiZSBiZXR0ZXIgdG8gZW5hYmxlIGNhbGxlciBncmFwaHMgZm9yIHNlbGVjdGVkCiMgZnVuY3Rpb25zIG9ubHkgdXNpbmcgdGhlIFxjYWxsZXJncmFwaCBjb21tYW5kLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBOTy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KCkNBTExFUl9HUkFQSCAgICAgICAgICAgPSBZRVMKCiMgSWYgdGhlIEdSQVBISUNBTF9ISUVSQVJDSFkgdGFnIGlzIHNldCB0byBZRVMgdGhlbiBkb3h5Z2VuIHdpbGwgZ3JhcGhpY2FsCiMgaGllcmFyY2h5IG9mIGFsbCBjbGFzc2VzIGluc3RlYWQgb2YgYSB0ZXh0dWFsIG9uZS4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKR1JBUEhJQ0FMX0hJRVJBUkNIWSAgICA9IFlFUwoKIyBJZiB0aGUgRElSRUNUT1JZX0dSQVBIIHRhZyBpcyBzZXQgdG8gWUVTIHRoZW4gZG94eWdlbiB3aWxsIHNob3cgdGhlCiMgZGVwZW5kZW5jaWVzIGEgZGlyZWN0b3J5IGhhcyBvbiBvdGhlciBkaXJlY3RvcmllcyBpbiBhIGdyYXBoaWNhbCB3YXkuIFRoZQojIGRlcGVuZGVuY3kgcmVsYXRpb25zIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSAjaW5jbHVkZSByZWxhdGlvbnMgYmV0d2VlbiB0aGUKIyBmaWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IFlFUy4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KCkRJUkVDVE9SWV9HUkFQSCAgICAgICAgPSBZRVMKCiMgVGhlIERPVF9JTUFHRV9GT1JNQVQgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgaW1hZ2UgZm9ybWF0IG9mIHRoZSBpbWFnZXMKIyBnZW5lcmF0ZWQgYnkgZG90LgojIE5vdGU6IElmIHlvdSBjaG9vc2Ugc3ZnIHlvdSBuZWVkIHRvIHNldCBIVE1MX0ZJTEVfRVhURU5TSU9OIHRvIHhodG1sIGluIG9yZGVyCiMgdG8gbWFrZSB0aGUgU1ZHIGZpbGVzIHZpc2libGUgaW4gSUUgOSsgKG90aGVyIGJyb3dzZXJzIGRvIG5vdCBoYXZlIHRoaXMKIyByZXF1aXJlbWVudCkuCiMgUG9zc2libGUgdmFsdWVzIGFyZTogcG5nLCBqcGcsIGdpZiBhbmQgc3ZnLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBwbmcuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCgpET1RfSU1BR0VfRk9STUFUICAgICAgID0gc3ZnCgojIElmIERPVF9JTUFHRV9GT1JNQVQgaXMgc2V0IHRvIHN2ZywgdGhlbiB0aGlzIG9wdGlvbiBjYW4gYmUgc2V0IHRvIFlFUyB0bwojIGVuYWJsZSBnZW5lcmF0aW9uIG9mIGludGVyYWN0aXZlIFNWRyBpbWFnZXMgdGhhdCBhbGxvdyB6b29taW5nIGFuZCBwYW5uaW5nLgojCiMgTm90ZSB0aGF0IHRoaXMgcmVxdWlyZXMgYSBtb2Rlcm4gYnJvd3NlciBvdGhlciB0aGFuIEludGVybmV0IEV4cGxvcmVyLiBUZXN0ZWQKIyBhbmQgd29ya2luZyBhcmUgRmlyZWZveCwgQ2hyb21lLCBTYWZhcmksIGFuZCBPcGVyYS4KIyBOb3RlOiBGb3IgSUUgOSsgeW91IG5lZWQgdG8gc2V0IEhUTUxfRklMRV9FWFRFTlNJT04gdG8geGh0bWwgaW4gb3JkZXIgdG8gbWFrZQojIHRoZSBTVkcgZmlsZXMgdmlzaWJsZS4gT2xkZXIgdmVyc2lvbnMgb2YgSUUgZG8gbm90IGhhdmUgU1ZHIHN1cHBvcnQuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKSU5URVJBQ1RJVkVfU1ZHICAgICAgICA9IFlFUwoKIyBUaGUgRE9UX1BBVEggdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIHBhdGggd2hlcmUgdGhlIGRvdCB0b29sIGNhbiBiZQojIGZvdW5kLiBJZiBsZWZ0IGJsYW5rLCBpdCBpcyBhc3N1bWVkIHRoZSBkb3QgdG9vbCBjYW4gYmUgZm91bmQgaW4gdGhlIHBhdGguCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCgpET1RfUEFUSCAgICAgICAgICAgICAgID0KCiMgVGhlIERPVEZJTEVfRElSUyB0YWcgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBkaXJlY3RvcmllcyB0aGF0CiMgY29udGFpbiBkb3QgZmlsZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gKHNlZSB0aGUgXGRvdGZpbGUKIyBjb21tYW5kKS4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KCkRPVEZJTEVfRElSUyAgICAgICAgICAgPQoKIyBUaGUgTVNDRklMRV9ESVJTIHRhZyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IG9uZSBvciBtb3JlIGRpcmVjdG9yaWVzIHRoYXQKIyBjb250YWluIG1zYyBmaWxlcyB0aGF0IGFyZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiAoc2VlIHRoZSBcbXNjZmlsZQojIGNvbW1hbmQpLgoKTVNDRklMRV9ESVJTICAgICAgICAgICA9CgojIFRoZSBESUFGSUxFX0RJUlMgdGFnIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgdGhhdAojIGNvbnRhaW4gZGlhIGZpbGVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChzZWUgdGhlIFxkaWFmaWxlCiMgY29tbWFuZCkuCgpESUFGSUxFX0RJUlMgICAgICAgICAgID0KCiMgVGhlIERPVF9HUkFQSF9NQVhfTk9ERVMgdGFnIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygbm9kZXMKIyB0aGF0IHdpbGwgYmUgc2hvd24gaW4gdGhlIGdyYXBoLiBJZiB0aGUgbnVtYmVyIG9mIG5vZGVzIGluIGEgZ3JhcGggYmVjb21lcwojIGxhcmdlciB0aGFuIHRoaXMgdmFsdWUsIGRveHlnZW4gd2lsbCB0cnVuY2F0ZSB0aGUgZ3JhcGgsIHdoaWNoIGlzIHZpc3VhbGl6ZWQKIyBieSByZXByZXNlbnRpbmcgYSBub2RlIGFzIGEgcmVkIGJveC4gTm90ZSB0aGF0IGRveHlnZW4gaWYgdGhlIG51bWJlciBvZiBkaXJlY3QKIyBjaGlsZHJlbiBvZiB0aGUgcm9vdCBub2RlIGluIGEgZ3JhcGggaXMgYWxyZWFkeSBsYXJnZXIgdGhhbgojIERPVF9HUkFQSF9NQVhfTk9ERVMgdGhlbiB0aGUgZ3JhcGggd2lsbCBub3QgYmUgc2hvd24gYXQgYWxsLiBBbHNvIG5vdGUgdGhhdAojIHRoZSBzaXplIG9mIGEgZ3JhcGggY2FuIGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieSBNQVhfRE9UX0dSQVBIX0RFUFRILgojIE1pbmltdW0gdmFsdWU6IDAsIG1heGltdW0gdmFsdWU6IDEwMDAwLCBkZWZhdWx0IHZhbHVlOiA1MC4KIyBUaGlzIHRhZyByZXF1aXJlcyB0aGF0IHRoZSB0YWcgSEFWRV9ET1QgaXMgc2V0IHRvIFlFUy4KCkRPVF9HUkFQSF9NQVhfTk9ERVMgICAgPSA1MAoKIyBUaGUgTUFYX0RPVF9HUkFQSF9ERVBUSCB0YWcgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBtYXhpbXVtIGRlcHRoIG9mIHRoZSBncmFwaHMKIyBnZW5lcmF0ZWQgYnkgZG90LiBBIGRlcHRoIHZhbHVlIG9mIDMgbWVhbnMgdGhhdCBvbmx5IG5vZGVzIHJlYWNoYWJsZSBmcm9tIHRoZQojIHJvb3QgYnkgZm9sbG93aW5nIGEgcGF0aCB2aWEgYXQgbW9zdCAzIGVkZ2VzIHdpbGwgYmUgc2hvd24uIE5vZGVzIHRoYXQgbGF5CiMgZnVydGhlciBmcm9tIHRoZSByb290IG5vZGUgd2lsbCBiZSBvbWl0dGVkLiBOb3RlIHRoYXQgc2V0dGluZyB0aGlzIG9wdGlvbiB0byAxCiMgb3IgMiBtYXkgZ3JlYXRseSByZWR1Y2UgdGhlIGNvbXB1dGF0aW9uIHRpbWUgbmVlZGVkIGZvciBsYXJnZSBjb2RlIGJhc2VzLiBBbHNvCiMgbm90ZSB0aGF0IHRoZSBzaXplIG9mIGEgZ3JhcGggY2FuIGJlIGZ1cnRoZXIgcmVzdHJpY3RlZCBieQojIERPVF9HUkFQSF9NQVhfTk9ERVMuIFVzaW5nIGEgZGVwdGggb2YgMCBtZWFucyBubyBkZXB0aCByZXN0cmljdGlvbi4KIyBNaW5pbXVtIHZhbHVlOiAwLCBtYXhpbXVtIHZhbHVlOiAxMDAwLCBkZWZhdWx0IHZhbHVlOiAwLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKTUFYX0RPVF9HUkFQSF9ERVBUSCAgICA9IDAKCiMgU2V0IHRoZSBET1RfVFJBTlNQQVJFTlQgdGFnIHRvIFlFUyB0byBnZW5lcmF0ZSBpbWFnZXMgd2l0aCBhIHRyYW5zcGFyZW50CiMgYmFja2dyb3VuZC4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LCBiZWNhdXNlIGRvdCBvbiBXaW5kb3dzIGRvZXMgbm90IHNlZW0KIyB0byBzdXBwb3J0IHRoaXMgb3V0IG9mIHRoZSBib3guCiMKIyBXYXJuaW5nOiBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIHVzZWQsIGVuYWJsaW5nIHRoaXMgb3B0aW9uIG1heSBsZWFkIHRvCiMgYmFkbHkgYW50aS1hbGlhc2VkIGxhYmVscyBvbiB0aGUgZWRnZXMgb2YgYSBncmFwaCAoaS5lLiB0aGV5IGJlY29tZSBoYXJkIHRvCiMgcmVhZCkuCiMgVGhlIGRlZmF1bHQgdmFsdWUgaXM6IE5PLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKRE9UX1RSQU5TUEFSRU5UICAgICAgICA9IE5PCgojIFNldCB0aGUgRE9UX01VTFRJX1RBUkdFVFMgdGFnIHRvIFlFUyBhbGxvdyBkb3QgdG8gZ2VuZXJhdGUgbXVsdGlwbGUgb3V0cHV0CiMgZmlsZXMgaW4gb25lIHJ1biAoaS5lLiBtdWx0aXBsZSAtbyBhbmQgLVQgb3B0aW9ucyBvbiB0aGUgY29tbWFuZCBsaW5lKS4gVGhpcwojIG1ha2VzIGRvdCBydW4gZmFzdGVyLCBidXQgc2luY2Ugb25seSBuZXdlciB2ZXJzaW9ucyBvZiBkb3QgKD4xLjguMTApIHN1cHBvcnQKIyB0aGlzLCB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogTk8uCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCgpET1RfTVVMVElfVEFSR0VUUyAgICAgID0gTk8KCiMgSWYgdGhlIEdFTkVSQVRFX0xFR0VORCB0YWcgaXMgc2V0IHRvIFlFUyBkb3h5Z2VuIHdpbGwgZ2VuZXJhdGUgYSBsZWdlbmQgcGFnZQojIGV4cGxhaW5pbmcgdGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYm94ZXMgYW5kIGFycm93cyBpbiB0aGUgZG90IGdlbmVyYXRlZAojIGdyYXBocy4KIyBUaGUgZGVmYXVsdCB2YWx1ZSBpczogWUVTLgojIFRoaXMgdGFnIHJlcXVpcmVzIHRoYXQgdGhlIHRhZyBIQVZFX0RPVCBpcyBzZXQgdG8gWUVTLgoKR0VORVJBVEVfTEVHRU5EICAgICAgICA9IFlFUwoKIyBJZiB0aGUgRE9UX0NMRUFOVVAgdGFnIGlzIHNldCB0byBZRVMgZG94eWdlbiB3aWxsIHJlbW92ZSB0aGUgaW50ZXJtZWRpYXRlIGRvdAojIGZpbGVzIHRoYXQgYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHZhcmlvdXMgZ3JhcGhzLgojIFRoZSBkZWZhdWx0IHZhbHVlIGlzOiBZRVMuCiMgVGhpcyB0YWcgcmVxdWlyZXMgdGhhdCB0aGUgdGFnIEhBVkVfRE9UIGlzIHNldCB0byBZRVMuCgpET1RfQ0xFQU5VUCAgICAgICAgICAgID0gWUVTCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Comment/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Comment/Comment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFJlbmRlcmFibGU7CgpjbGFzcyBDb21tZW50IGltcGxlbWVudHMgUmVuZGVyYWJsZSB7Cglwcm90ZWN0ZWQgJGlMaW5lTm87Cglwcm90ZWN0ZWQgJHNDb21tZW50OwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc0NvbW1lbnQgPSAnJywgJGlMaW5lTm8gPSAwKSB7CgkJJHRoaXMtPnNDb21tZW50ID0gJHNDb21tZW50OwoJCSR0aGlzLT5pTGluZU5vID0gJGlMaW5lTm87Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q29tbWVudCgpIHsKCQlyZXR1cm4gJHRoaXMtPnNDb21tZW50OwoJfQoKCS8qKgoJICogQHJldHVybiBpbnQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldExpbmVObygpIHsKCQlyZXR1cm4gJHRoaXMtPmlMaW5lTm87Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0Q29tbWVudCgkc0NvbW1lbnQpIHsKCQkkdGhpcy0+c0NvbW1lbnQgPSAkc0NvbW1lbnQ7Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpIHsKCQlyZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCgpKTsKCX0KCgkvKioKCSAqIEByZXR1cm4gc3RyaW5nCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkgewoJCXJldHVybiAnLyonIC4gJHRoaXMtPnNDb21tZW50IC4gJyovJzsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Comment/Commentable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDb21tZW50OwoKaW50ZXJmYWNlIENvbW1lbnRhYmxlIHsKCgkvKioKCSAqIEBwYXJhbSBhcnJheSAkYUNvbW1lbnRzIEFycmF5IG9mIGNvbW1lbnRzLgoJICovCglwdWJsaWMgZnVuY3Rpb24gYWRkQ29tbWVudHMoYXJyYXkgJGFDb21tZW50cyk7CgoJLyoqCgkgKiBAcmV0dXJuIGFycmF5CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRDb21tZW50cygpOwoKCS8qKgoJICogQHBhcmFtIGFycmF5ICRhQ29tbWVudHMgQXJyYXkgY29udGFpbmluZyBDb21tZW50IG9iamVjdHMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKTsKCgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/AtRuleBlockList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZTsKCi8qKgogKiBBIEJsb2NrTGlzdCBjb25zdHJ1Y3RlZCBieSBhbiB1bmtub3duIEAtcnVsZS4gQG1lZGlhIHJ1bGVzIGFyZSByZW5kZXJlZCBpbnRvIEF0UnVsZUJsb2NrTGlzdCBvYmplY3RzLgogKi8KY2xhc3MgQXRSdWxlQmxvY2tMaXN0IGV4dGVuZHMgQ1NTQmxvY2tMaXN0IGltcGxlbWVudHMgQXRSdWxlIHsKCglwcml2YXRlICRzVHlwZTsKCXByaXZhdGUgJHNBcmdzOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc1R5cGUsICRzQXJncyA9ICcnLCAkaUxpbmVObyA9IDApIHsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCRpTGluZU5vKTsKCQkkdGhpcy0+c1R5cGUgPSAkc1R5cGU7CgkJJHRoaXMtPnNBcmdzID0gJHNBcmdzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVOYW1lKCkgewoJCXJldHVybiAkdGhpcy0+c1R5cGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGF0UnVsZUFyZ3MoKSB7CgkJcmV0dXJuICR0aGlzLT5zQXJnczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpIHsKCQlyZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCgpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQgJG9PdXRwdXRGb3JtYXQpIHsKCQkkc0FyZ3MgPSAkdGhpcy0+c0FyZ3M7CgkJaWYoJHNBcmdzKSB7CgkJCSRzQXJncyA9ICcgJyAuICRzQXJnczsKCQl9CgkJJHNSZXN1bHQgID0gJG9PdXRwdXRGb3JtYXQtPnNCZWZvcmVBdFJ1bGVCbG9jazsKCQkkc1Jlc3VsdCAuPSAiQHskdGhpcy0+c1R5cGV9JHNBcmdzeyRvT3V0cHV0Rm9ybWF0LT5zcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSgpfXsiOwoJCSRzUmVzdWx0IC49IHBhcmVudDo6cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KTsKCQkkc1Jlc3VsdCAuPSAnfSc7CgkJJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNBZnRlckF0UnVsZUJsb2NrOwoJCXJldHVybiAkc1Jlc3VsdDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNSb290TGlzdCgpIHsKCQlyZXR1cm4gZmFsc2U7Cgl9Cgp9]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSBlockList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jazsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcUnVsZVNldDsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yOwp1c2UgU2FiYmVyd29ybVxDU1NcUnVsZVxSdWxlOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcVmFsdWVMaXN0Owp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcQ1NTRnVuY3Rpb247CgovKioKICogQSBDU1NCbG9ja0xpc3QgaXMgYSBDU1NMaXN0IHdob3NlIERlY2xhcmF0aW9uQmxvY2tzIGFyZSBndWFyYW50ZWVkIHRvIGNvbnRhaW4gdmFsaWQgZGVjbGFyYXRpb24gYmxvY2tzIG9yIGF0LXJ1bGVzLgogKiBNb3N0IENTU0xpc3RzIGNvbmZvcm0gdG8gdGhpcyBjYXRlZ29yeSBidXQgc29tZSBhdC1ydWxlcyAoc3VjaCBhcyBAa2V5ZnJhbWVzKSBkbyBub3QuCiAqLwphYnN0cmFjdCBjbGFzcyBDU1NCbG9ja0xpc3QgZXh0ZW5kcyBDU1NMaXN0IHsKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaUxpbmVObyA9IDApIHsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCRpTGluZU5vKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsRGVjbGFyYXRpb25CbG9ja3MoJiRhUmVzdWx0KSB7CgkJZm9yZWFjaCAoJHRoaXMtPmFDb250ZW50cyBhcyAkbUNvbnRlbnQpIHsKCQkJaWYgKCRtQ29udGVudCBpbnN0YW5jZW9mIERlY2xhcmF0aW9uQmxvY2spIHsKCQkJCSRhUmVzdWx0W10gPSAkbUNvbnRlbnQ7CgkJCX0gZWxzZSBpZiAoJG1Db250ZW50IGluc3RhbmNlb2YgQ1NTQmxvY2tMaXN0KSB7CgkJCQkkbUNvbnRlbnQtPmFsbERlY2xhcmF0aW9uQmxvY2tzKCRhUmVzdWx0KTsKCQkJfQoJCX0KCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsUnVsZVNldHMoJiRhUmVzdWx0KSB7CgkJZm9yZWFjaCAoJHRoaXMtPmFDb250ZW50cyBhcyAkbUNvbnRlbnQpIHsKCQkJaWYgKCRtQ29udGVudCBpbnN0YW5jZW9mIFJ1bGVTZXQpIHsKCQkJCSRhUmVzdWx0W10gPSAkbUNvbnRlbnQ7CgkJCX0gZWxzZSBpZiAoJG1Db250ZW50IGluc3RhbmNlb2YgQ1NTQmxvY2tMaXN0KSB7CgkJCQkkbUNvbnRlbnQtPmFsbFJ1bGVTZXRzKCRhUmVzdWx0KTsKCQkJfQoJCX0KCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsVmFsdWVzKCRvRWxlbWVudCwgJiRhUmVzdWx0LCAkc1NlYXJjaFN0cmluZyA9IG51bGwsICRiU2VhcmNoSW5GdW5jdGlvbkFyZ3VtZW50cyA9IGZhbHNlKSB7CgkJaWYgKCRvRWxlbWVudCBpbnN0YW5jZW9mIENTU0Jsb2NrTGlzdCkgewoJCQlmb3JlYWNoICgkb0VsZW1lbnQtPmdldENvbnRlbnRzKCkgYXMgJG9Db250ZW50KSB7CgkJCQkkdGhpcy0+YWxsVmFsdWVzKCRvQ29udGVudCwgJGFSZXN1bHQsICRzU2VhcmNoU3RyaW5nLCAkYlNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHMpOwoJCQl9CgkJfSBlbHNlIGlmICgkb0VsZW1lbnQgaW5zdGFuY2VvZiBSdWxlU2V0KSB7CgkJCWZvcmVhY2ggKCRvRWxlbWVudC0+Z2V0UnVsZXMoJHNTZWFyY2hTdHJpbmcpIGFzICRvUnVsZSkgewoJCQkJJHRoaXMtPmFsbFZhbHVlcygkb1J1bGUsICRhUmVzdWx0LCAkc1NlYXJjaFN0cmluZywgJGJTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzKTsKCQkJfQoJCX0gZWxzZSBpZiAoJG9FbGVtZW50IGluc3RhbmNlb2YgUnVsZSkgewoJCQkkdGhpcy0+YWxsVmFsdWVzKCRvRWxlbWVudC0+Z2V0VmFsdWUoKSwgJGFSZXN1bHQsICRzU2VhcmNoU3RyaW5nLCAkYlNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHMpOwoJCX0gZWxzZSBpZiAoJG9FbGVtZW50IGluc3RhbmNlb2YgVmFsdWVMaXN0KSB7CgkJCWlmICgkYlNlYXJjaEluRnVuY3Rpb25Bcmd1bWVudHMgfHwgISgkb0VsZW1lbnQgaW5zdGFuY2VvZiBDU1NGdW5jdGlvbikpIHsKCQkJCWZvcmVhY2ggKCRvRWxlbWVudC0+Z2V0TGlzdENvbXBvbmVudHMoKSBhcyAkbUNvbXBvbmVudCkgewoJCQkJCSR0aGlzLT5hbGxWYWx1ZXMoJG1Db21wb25lbnQsICRhUmVzdWx0LCAkc1NlYXJjaFN0cmluZywgJGJTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzKTsKCQkJCX0KCQkJfQoJCX0gZWxzZSB7CgkJCS8vTm9uLUxpc3QgVmFsdWUgb3IgQ1NTU3RyaW5nIChDU1MgaWRlbnRpZmllcikKCQkJJGFSZXN1bHRbXSA9ICRvRWxlbWVudDsKCQl9Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIGFsbFNlbGVjdG9ycygmJGFSZXN1bHQsICRzU3BlY2lmaWNpdHlTZWFyY2ggPSBudWxsKSB7CgkJJGFEZWNsYXJhdGlvbkJsb2NrcyA9IGFycmF5KCk7CgkJJHRoaXMtPmFsbERlY2xhcmF0aW9uQmxvY2tzKCRhRGVjbGFyYXRpb25CbG9ja3MpOwoJCWZvcmVhY2ggKCRhRGVjbGFyYXRpb25CbG9ja3MgYXMgJG9CbG9jaykgewoJCQlmb3JlYWNoICgkb0Jsb2NrLT5nZXRTZWxlY3RvcnMoKSBhcyAkb1NlbGVjdG9yKSB7CgkJCQlpZiAoJHNTcGVjaWZpY2l0eVNlYXJjaCA9PT0gbnVsbCkgewoJCQkJCSRhUmVzdWx0W10gPSAkb1NlbGVjdG9yOwoJCQkJfSBlbHNlIHsKCQkJCQkkc0NvbXBhcmlzb24gPSAiXCRiUmVzID0geyRvU2VsZWN0b3ItPmdldFNwZWNpZmljaXR5KCl9ICRzU3BlY2lmaWNpdHlTZWFyY2g7IjsKCQkJCQlldmFsKCRzQ29tcGFyaXNvbik7CgkJCQkJaWYgKCRiUmVzKSB7CgkJCQkJCSRhUmVzdWx0W10gPSAkb1NlbGVjdG9yOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/CSSList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudGFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xTb3VyY2VFeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XENoYXJzZXQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxDU1NOYW1lc3BhY2U7CnVzZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxJbXBvcnQ7CnVzZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3RvcjsKdXNlIFNhYmJlcndvcm1cQ1NTXFJlbmRlcmFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XEF0UnVsZVNldDsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jazsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcUnVsZVNldDsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENTU1N0cmluZzsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFVSTDsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFZhbHVlOwoKLyoqCiAqIEEgQ1NTTGlzdCBpcyB0aGUgbW9zdCBnZW5lcmljIGNvbnRhaW5lciBhdmFpbGFibGUuIEl0cyBjb250ZW50cyBpbmNsdWRlIFJ1bGVTZXQgYXMgd2VsbCBhcyBvdGhlciBDU1NMaXN0IG9iamVjdHMuCiAqIEFsc28sIGl0IG1heSBjb250YWluIEltcG9ydCBhbmQgQ2hhcnNldCBvYmplY3RzIHN0ZW1taW5nIGZyb20gQC1ydWxlcy4KICovCmFic3RyYWN0IGNsYXNzIENTU0xpc3QgaW1wbGVtZW50cyBSZW5kZXJhYmxlLCBDb21tZW50YWJsZSB7CgoJcHJvdGVjdGVkICRhQ29tbWVudHM7Cglwcm90ZWN0ZWQgJGFDb250ZW50czsKCXByb3RlY3RlZCAkaUxpbmVObzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlMaW5lTm8gPSAwKSB7CgkJJHRoaXMtPmFDb21tZW50cyA9IGFycmF5KCk7CgkJJHRoaXMtPmFDb250ZW50cyA9IGFycmF5KCk7CgkJJHRoaXMtPmlMaW5lTm8gPSAkaUxpbmVObzsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlTGlzdChQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlLCBDU1NMaXN0ICRvTGlzdCkgewoJCSRiSXNSb290ID0gJG9MaXN0IGluc3RhbmNlb2YgRG9jdW1lbnQ7CgkJaWYoaXNfc3RyaW5nKCRvUGFyc2VyU3RhdGUpKSB7CgkJCSRvUGFyc2VyU3RhdGUgPSBuZXcgUGFyc2VyU3RhdGUoJG9QYXJzZXJTdGF0ZSk7CgkJfQoJCSRiTGVuaWVudFBhcnNpbmcgPSAkb1BhcnNlclN0YXRlLT5nZXRTZXR0aW5ncygpLT5iTGVuaWVudFBhcnNpbmc7CgkJd2hpbGUoISRvUGFyc2VyU3RhdGUtPmlzRW5kKCkpIHsKCQkJJGNvbW1lbnRzID0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCQkJJG9MaXN0SXRlbSA9IG51bGw7CgkJCWlmKCRiTGVuaWVudFBhcnNpbmcpIHsKCQkJCXRyeSB7CgkJCQkJJG9MaXN0SXRlbSA9IHNlbGY6OnBhcnNlTGlzdEl0ZW0oJG9QYXJzZXJTdGF0ZSwgJG9MaXN0KTsKCQkJCX0gY2F0Y2ggKFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbiAkZSkgewoJCQkJCSRvTGlzdEl0ZW0gPSBmYWxzZTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCSRvTGlzdEl0ZW0gPSBzZWxmOjpwYXJzZUxpc3RJdGVtKCRvUGFyc2VyU3RhdGUsICRvTGlzdCk7CgkJCX0KCQkJaWYoJG9MaXN0SXRlbSA9PT0gbnVsbCkgewoJCQkJLy8gTGlzdCBwYXJzaW5nIGZpbmlzaGVkCgkJCQlyZXR1cm47CgkJCX0KCQkJaWYoJG9MaXN0SXRlbSkgewoJCQkJJG9MaXN0SXRlbS0+c2V0Q29tbWVudHMoJGNvbW1lbnRzKTsKCQkJCSRvTGlzdC0+YXBwZW5kKCRvTGlzdEl0ZW0pOwoJCQl9CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJfQoJCWlmKCEkYklzUm9vdCAmJiAhJGJMZW5pZW50UGFyc2luZykgewoJCQl0aHJvdyBuZXcgU291cmNlRXhjZXB0aW9uKCJVbmV4cGVjdGVkIGVuZCBvZiBkb2N1bWVudCIsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwoJCX0KCX0KCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwYXJzZUxpc3RJdGVtKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUsIENTU0xpc3QgJG9MaXN0KSB7CgkJJGJJc1Jvb3QgPSAkb0xpc3QgaW5zdGFuY2VvZiBEb2N1bWVudDsKCQlpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJ0AnKSkgewoJCQkkb0F0UnVsZSA9IHNlbGY6OnBhcnNlQXRSdWxlKCRvUGFyc2VyU3RhdGUpOwoJCQlpZigkb0F0UnVsZSBpbnN0YW5jZW9mIENoYXJzZXQpIHsKCQkJCWlmKCEkYklzUm9vdCkgewoJCQkJCXRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oJ0BjaGFyc2V0IG1heSBvbmx5IG9jY3VyIGluIHJvb3QgZG9jdW1lbnQnLCAnJywgJ2N1c3RvbScsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwoJCQkJfQoJCQkJaWYoY291bnQoJG9MaXN0LT5nZXRDb250ZW50cygpKSA+IDApIHsKCQkJCQl0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKCdAY2hhcnNldCBtdXN0IGJlIHRoZSBmaXJzdCBwYXJzZWFibGUgdG9rZW4gaW4gYSBkb2N1bWVudCcsICcnLCAnY3VzdG9tJywgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CgkJCQl9CgkJCQkkb1BhcnNlclN0YXRlLT5zZXRDaGFyc2V0KCRvQXRSdWxlLT5nZXRDaGFyc2V0KCktPmdldFN0cmluZygpKTsKCQkJfQoJCQlyZXR1cm4gJG9BdFJ1bGU7CgkJfSBlbHNlIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygnfScpKSB7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJ30nKTsKCQkJaWYgKCRiSXNSb290KSB7CgkJCQlpZiAoJG9QYXJzZXJTdGF0ZS0+Z2V0U2V0dGluZ3MoKS0+YkxlbmllbnRQYXJzaW5nKSB7CgkJCQkJd2hpbGUgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCd9JykpICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJ30nKTsKCQkJCQlyZXR1cm4gRGVjbGFyYXRpb25CbG9jazo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CgkJCQl9IGVsc2UgewoJCQkJCXRocm93IG5ldyBTb3VyY2VFeGNlcHRpb24oIlVub3BlbmVkIHsiLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCXJldHVybiBudWxsOwoJCQl9CgkJfSBlbHNlIHsKCQkJcmV0dXJuIERlY2xhcmF0aW9uQmxvY2s6OnBhcnNlKCRvUGFyc2VyU3RhdGUpOwoJCX0KCX0KCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwYXJzZUF0UnVsZShQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlKSB7CgkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnQCcpOwoJCSRzSWRlbnRpZmllciA9ICRvUGFyc2VyU3RhdGUtPnBhcnNlSWRlbnRpZmllcigpOwoJCSRpSWRlbnRpZmllckxpbmVOdW0gPSAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpOwoJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJaWYgKCRzSWRlbnRpZmllciA9PT0gJ2ltcG9ydCcpIHsKCQkJJG9Mb2NhdGlvbiA9IFVSTDo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJCSRzTWVkaWFRdWVyeSA9IG51bGw7CgkJCWlmICghJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJzsnKSkgewoJCQkJJHNNZWRpYVF1ZXJ5ID0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVVudGlsKCc7Jyk7CgkJCX0KCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnOycpOwoJCQlyZXR1cm4gbmV3IEltcG9ydCgkb0xvY2F0aW9uLCAkc01lZGlhUXVlcnksICRpSWRlbnRpZmllckxpbmVOdW0pOwoJCX0gZWxzZSBpZiAoJHNJZGVudGlmaWVyID09PSAnY2hhcnNldCcpIHsKCQkJJHNDaGFyc2V0ID0gQ1NTU3RyaW5nOjpwYXJzZSgkb1BhcnNlclN0YXRlKTsKCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnOycpOwoJCQlyZXR1cm4gbmV3IENoYXJzZXQoJHNDaGFyc2V0LCAkaUlkZW50aWZpZXJMaW5lTnVtKTsKCQl9IGVsc2UgaWYgKHNlbGY6OmlkZW50aWZpZXJJcygkc0lkZW50aWZpZXIsICdrZXlmcmFtZXMnKSkgewoJCQkkb1Jlc3VsdCA9IG5ldyBLZXlGcmFtZSgkaUlkZW50aWZpZXJMaW5lTnVtKTsKCQkJJG9SZXN1bHQtPnNldFZlbmRvcktleUZyYW1lKCRzSWRlbnRpZmllcik7CgkJCSRvUmVzdWx0LT5zZXRBbmltYXRpb25OYW1lKHRyaW0oJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVVudGlsKCd7JywgZmFsc2UsIHRydWUpKSk7CgkJCUNTU0xpc3Q6OnBhcnNlTGlzdCgkb1BhcnNlclN0YXRlLCAkb1Jlc3VsdCk7CgkJCXJldHVybiAkb1Jlc3VsdDsKCQl9IGVsc2UgaWYgKCRzSWRlbnRpZmllciA9PT0gJ25hbWVzcGFjZScpIHsKCQkJJHNQcmVmaXggPSBudWxsOwoJCQkkbVVybCA9IFZhbHVlOjpwYXJzZVByaW1pdGl2ZVZhbHVlKCRvUGFyc2VyU3RhdGUpOwoJCQlpZiAoISRvUGFyc2VyU3RhdGUtPmNvbWVzKCc7JykpIHsKCQkJCSRzUHJlZml4ID0gJG1Vcmw7CgkJCQkkbVVybCA9IFZhbHVlOjpwYXJzZVByaW1pdGl2ZVZhbHVlKCRvUGFyc2VyU3RhdGUpOwoJCQl9CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJzsnKTsKCQkJaWYgKCRzUHJlZml4ICE9PSBudWxsICYmICFpc19zdHJpbmcoJHNQcmVmaXgpKSB7CgkJCQl0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKCdXcm9uZyBuYW1lc3BhY2UgcHJlZml4JywgJHNQcmVmaXgsICdjdXN0b20nLCAkaUlkZW50aWZpZXJMaW5lTnVtKTsKCQkJfQoJCQlpZiAoISgkbVVybCBpbnN0YW5jZW9mIENTU1N0cmluZyB8fCAkbVVybCBpbnN0YW5jZW9mIFVSTCkpIHsKCQkJCXRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oJ1dyb25nIG5hbWVzcGFjZSB1cmwgb2YgaW52YWxpZCB0eXBlJywgJG1VcmwsICdjdXN0b20nLCAkaUlkZW50aWZpZXJMaW5lTnVtKTsKCQkJfQoJCQlyZXR1cm4gbmV3IENTU05hbWVzcGFjZSgkbVVybCwgJHNQcmVmaXgsICRpSWRlbnRpZmllckxpbmVOdW0pOwoJCX0gZWxzZSB7CgkJCS8vVW5rbm93biBvdGhlciBhdCBydWxlIChmb250LWZhY2Ugb3Igc3VjaCkKCQkJJHNBcmdzID0gdHJpbSgkb1BhcnNlclN0YXRlLT5jb25zdW1lVW50aWwoJ3snLCBmYWxzZSwgdHJ1ZSkpOwoJCQlpZiAoc3Vic3RyX2NvdW50KCRzQXJncywgIigiKSAhPSBzdWJzdHJfY291bnQoJHNBcmdzLCAiKSIpKSB7CgkJCQlpZigkb1BhcnNlclN0YXRlLT5nZXRTZXR0aW5ncygpLT5iTGVuaWVudFBhcnNpbmcpIHsKCQkJCQlyZXR1cm4gTlVMTDsKCQkJCX0gZWxzZSB7CgkJCQkJdGhyb3cgbmV3IFNvdXJjZUV4Y2VwdGlvbigiVW5tYXRjaGVkIGJyYWNlIGNvdW50IGluIG1lZGlhIHF1ZXJ5IiwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CgkJCQl9CgkJCX0KCQkJJGJVc2VSdWxlU2V0ID0gdHJ1ZTsKCQkJZm9yZWFjaChleHBsb2RlKCcvJywgQXRSdWxlOjpCTE9DS19SVUxFUykgYXMgJHNCbG9ja1J1bGVOYW1lKSB7CgkJCQlpZihzZWxmOjppZGVudGlmaWVySXMoJHNJZGVudGlmaWVyLCAkc0Jsb2NrUnVsZU5hbWUpKSB7CgkJCQkJJGJVc2VSdWxlU2V0ID0gZmFsc2U7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQkJaWYoJGJVc2VSdWxlU2V0KSB7CgkJCQkkb0F0UnVsZSA9IG5ldyBBdFJ1bGVTZXQoJHNJZGVudGlmaWVyLCAkc0FyZ3MsICRpSWRlbnRpZmllckxpbmVOdW0pOwoJCQkJUnVsZVNldDo6cGFyc2VSdWxlU2V0KCRvUGFyc2VyU3RhdGUsICRvQXRSdWxlKTsKCQkJfSBlbHNlIHsKCQkJCSRvQXRSdWxlID0gbmV3IEF0UnVsZUJsb2NrTGlzdCgkc0lkZW50aWZpZXIsICRzQXJncywgJGlJZGVudGlmaWVyTGluZU51bSk7CgkJCQlDU1NMaXN0OjpwYXJzZUxpc3QoJG9QYXJzZXJTdGF0ZSwgJG9BdFJ1bGUpOwoJCQl9CgkJCXJldHVybiAkb0F0UnVsZTsKCQl9Cgl9CgoJCS8qKgoJICogVGVzdHMgYW4gaWRlbnRpZmllciBmb3IgYSBnaXZlbiB2YWx1ZS4gU2luY2UgaWRlbnRpZmllcnMgYXJlIGFsbCBrZXl3b3JkcywgdGhleSBjYW4gYmUgdmVuZG9yLXByZWZpeGVkLiBXZSBuZWVkIHRvIGNoZWNrIGZvciB0aGVzZSB2ZXJzaW9ucyB0b28uCgkgKi8KCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlkZW50aWZpZXJJcygkc0lkZW50aWZpZXIsICRzTWF0Y2gpIHsKCQlyZXR1cm4gKHN0cmNhc2VjbXAoJHNJZGVudGlmaWVyLCAkc01hdGNoKSA9PT0gMCkKCQkJPzogcHJlZ19tYXRjaCgiL14oLVxcdystKT8kc01hdGNoJC9pIiwgJHNJZGVudGlmaWVyKSA9PT0gMTsKCX0KCgoJLyoqCgkgKiBAcmV0dXJuIGludAoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZU5vKCkgewoJCXJldHVybiAkdGhpcy0+aUxpbmVObzsKCX0KCgkvKioKCSAqIFByZXBlbmQgaXRlbSB0byBsaXN0IG9mIGNvbnRlbnRzLgoJICoKCSAqIEBwYXJhbSBvYmplY3QgJG9JdGVtIEl0ZW0uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBwcmVwZW5kKCRvSXRlbSkgewoJCWFycmF5X3Vuc2hpZnQoJHRoaXMtPmFDb250ZW50cywgJG9JdGVtKTsKCX0KCgkvKioKCSAqIEFwcGVuZCBpdGVtIHRvIGxpc3Qgb2YgY29udGVudHMuCgkgKgoJICogQHBhcmFtIG9iamVjdCAkb0l0ZW0gSXRlbS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGFwcGVuZCgkb0l0ZW0pIHsKCQkkdGhpcy0+YUNvbnRlbnRzW10gPSAkb0l0ZW07Cgl9CgoJLyoqCgkgKiBTcGxpY2UgdGhlIGxpc3Qgb2YgY29udGVudHMuCgkgKgoJICogQHBhcmFtIGludCAgICAgICAkaU9mZnNldCAgICAgIE9mZnNldC4KCSAqIEBwYXJhbSBpbnQgICAgICAgJGlMZW5ndGggICAgICBMZW5ndGguIE9wdGlvbmFsLgoJICogQHBhcmFtIFJ1bGVTZXRbXSAkbVJlcGxhY2VtZW50IFJlcGxhY2VtZW50LiBPcHRpb25hbC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNwbGljZSgkaU9mZnNldCwgJGlMZW5ndGggPSBudWxsLCAkbVJlcGxhY2VtZW50ID0gbnVsbCkgewoJCWFycmF5X3NwbGljZSgkdGhpcy0+YUNvbnRlbnRzLCAkaU9mZnNldCwgJGlMZW5ndGgsICRtUmVwbGFjZW1lbnQpOwoJfQoKCS8qKgoJICogUmVtb3ZlcyBhbiBpdGVtIGZyb20gdGhlIENTUyBsaXN0LgoJICogQHBhcmFtIFJ1bGVTZXR8SW1wb3J0fENoYXJzZXR8Q1NTTGlzdCAkb0l0ZW1Ub1JlbW92ZSBNYXkgYmUgYSBSdWxlU2V0IChtb3N0IGxpa2VseSBhIERlY2xhcmF0aW9uQmxvY2spLCBhIEltcG9ydCwgYSBDaGFyc2V0IG9yIGFub3RoZXIgQ1NTTGlzdCAobW9zdCBsaWtlbHkgYSBNZWRpYVF1ZXJ5KQoJICogQHJldHVybiBib29sIFdoZXRoZXIgdGhlIGl0ZW0gd2FzIHJlbW92ZWQuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiByZW1vdmUoJG9JdGVtVG9SZW1vdmUpIHsKCQkkaUtleSA9IGFycmF5X3NlYXJjaCgkb0l0ZW1Ub1JlbW92ZSwgJHRoaXMtPmFDb250ZW50cywgdHJ1ZSk7CgkJaWYgKCRpS2V5ICE9PSBmYWxzZSkgewoJCQl1bnNldCgkdGhpcy0+YUNvbnRlbnRzWyRpS2V5XSk7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBSZXBsYWNlcyBhbiBpdGVtIGZyb20gdGhlIENTUyBsaXN0LgoJICogQHBhcmFtIFJ1bGVTZXR8SW1wb3J0fENoYXJzZXR8Q1NTTGlzdCAkb0l0ZW1Ub1JlbW92ZSBNYXkgYmUgYSBSdWxlU2V0IChtb3N0IGxpa2VseSBhIERlY2xhcmF0aW9uQmxvY2spLCBhIEltcG9ydCwgYSBDaGFyc2V0IG9yIGFub3RoZXIgQ1NTTGlzdCAobW9zdCBsaWtlbHkgYSBNZWRpYVF1ZXJ5KQoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVwbGFjZSgkb09sZEl0ZW0sICRvTmV3SXRlbSkgewoJCSRpS2V5ID0gYXJyYXlfc2VhcmNoKCRvT2xkSXRlbSwgJHRoaXMtPmFDb250ZW50cywgdHJ1ZSk7CgkJaWYgKCRpS2V5ICE9PSBmYWxzZSkgewoJCQlhcnJheV9zcGxpY2UoJHRoaXMtPmFDb250ZW50cywgJGlLZXksIDEsICRvTmV3SXRlbSk7CgkJCXJldHVybiB0cnVlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBTZXQgdGhlIGNvbnRlbnRzLgoJICogQHBhcmFtIGFycmF5ICRhQ29udGVudHMgT2JqZWN0cyB0byBzZXQgYXMgY29udGVudC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldENvbnRlbnRzKGFycmF5ICRhQ29udGVudHMpIHsKCQkkdGhpcy0+YUNvbnRlbnRzID0gYXJyYXkoKTsKCQlmb3JlYWNoICgkYUNvbnRlbnRzIGFzICRjb250ZW50KSB7CgkJCSR0aGlzLT5hcHBlbmQoJGNvbnRlbnQpOwoJCX0KCX0KCgkvKioKCSAqIFJlbW92ZXMgYSBkZWNsYXJhdGlvbiBibG9jayBmcm9tIHRoZSBDU1MgbGlzdCBpZiBpdCBtYXRjaGVzIGFsbCBnaXZlbiBzZWxlY3RvcnMuCgkgKiBAcGFyYW0gYXJyYXl8c3RyaW5nICRtU2VsZWN0b3IgVGhlIHNlbGVjdG9ycyB0byBtYXRjaC4KCSAqIEBwYXJhbSBib29sZWFuICRiUmVtb3ZlQWxsIFdoZXRoZXIgdG8gc3RvcCBhdCB0aGUgZmlyc3QgZGVjbGFyYXRpb24gYmxvY2sgZm91bmQgb3IgcmVtb3ZlIGFsbCBibG9ja3MKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHJlbW92ZURlY2xhcmF0aW9uQmxvY2tCeVNlbGVjdG9yKCRtU2VsZWN0b3IsICRiUmVtb3ZlQWxsID0gZmFsc2UpIHsKCQlpZiAoJG1TZWxlY3RvciBpbnN0YW5jZW9mIERlY2xhcmF0aW9uQmxvY2spIHsKCQkJJG1TZWxlY3RvciA9ICRtU2VsZWN0b3ItPmdldFNlbGVjdG9ycygpOwoJCX0KCQlpZiAoIWlzX2FycmF5KCRtU2VsZWN0b3IpKSB7CgkJCSRtU2VsZWN0b3IgPSBleHBsb2RlKCcsJywgJG1TZWxlY3Rvcik7CgkJfQoJCWZvcmVhY2ggKCRtU2VsZWN0b3IgYXMgJGlLZXkgPT4gJiRtU2VsKSB7CgkJCWlmICghKCRtU2VsIGluc3RhbmNlb2YgU2VsZWN0b3IpKSB7CgkJCQkkbVNlbCA9IG5ldyBTZWxlY3RvcigkbVNlbCk7CgkJCX0KCQl9CgkJZm9yZWFjaCAoJHRoaXMtPmFDb250ZW50cyBhcyAkaUtleSA9PiAkbUl0ZW0pIHsKCQkJaWYgKCEoJG1JdGVtIGluc3RhbmNlb2YgRGVjbGFyYXRpb25CbG9jaykpIHsKCQkJCWNvbnRpbnVlOwoJCQl9CgkJCWlmICgkbUl0ZW0tPmdldFNlbGVjdG9ycygpID09ICRtU2VsZWN0b3IpIHsKCQkJCXVuc2V0KCR0aGlzLT5hQ29udGVudHNbJGlLZXldKTsKCQkJCWlmICghJGJSZW1vdmVBbGwpIHsKCQkJCQlyZXR1cm47CgkJCQl9CgkJCX0KCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQoKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcihcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0ICRvT3V0cHV0Rm9ybWF0KSB7CgkJJHNSZXN1bHQgPSAnJzsKCQkkYklzRmlyc3QgPSB0cnVlOwoJCSRvTmV4dExldmVsID0gJG9PdXRwdXRGb3JtYXQ7CgkJaWYoISR0aGlzLT5pc1Jvb3RMaXN0KCkpIHsKCQkJJG9OZXh0TGV2ZWwgPSAkb091dHB1dEZvcm1hdC0+bmV4dExldmVsKCk7CgkJfQoJCWZvcmVhY2ggKCR0aGlzLT5hQ29udGVudHMgYXMgJG9Db250ZW50KSB7CgkJCSRzUmVuZGVyZWQgPSAkb091dHB1dEZvcm1hdC0+c2FmZWx5KGZ1bmN0aW9uKCkgdXNlICgkb05leHRMZXZlbCwgJG9Db250ZW50KSB7CgkJCQlyZXR1cm4gJG9Db250ZW50LT5yZW5kZXIoJG9OZXh0TGV2ZWwpOwoJCQl9KTsKCQkJaWYoJHNSZW5kZXJlZCA9PT0gbnVsbCkgewoJCQkJY29udGludWU7CgkJCX0KCQkJaWYoJGJJc0ZpcnN0KSB7CgkJCQkkYklzRmlyc3QgPSBmYWxzZTsKCQkJCSRzUmVzdWx0IC49ICRvTmV4dExldmVsLT5zcGFjZUJlZm9yZUJsb2NrcygpOwoJCQl9IGVsc2UgewoJCQkJJHNSZXN1bHQgLj0gJG9OZXh0TGV2ZWwtPnNwYWNlQmV0d2VlbkJsb2NrcygpOwoJCQl9CgkJCSRzUmVzdWx0IC49ICRzUmVuZGVyZWQ7CgkJfQoKCQlpZighJGJJc0ZpcnN0KSB7CgkJCS8vIEhhZCBzb21lIG91dHB1dAoJCQkkc1Jlc3VsdCAuPSAkb091dHB1dEZvcm1hdC0+c3BhY2VBZnRlckJsb2NrcygpOwoJCX0KCgkJcmV0dXJuICRzUmVzdWx0OwoJfQoJCgkvKioKCSogUmV0dXJuIHRydWUgaWYgdGhlIGxpc3QgY2FuIG5vdCBiZSBmdXJ0aGVyIG91dGRlbnRlZC4gT25seSBpbXBvcnRhbnQgd2hlbiByZW5kZXJpbmcuCgkqLwoJcHVibGljIGFic3RyYWN0IGZ1bmN0aW9uIGlzUm9vdExpc3QoKTsKCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudHMoKSB7CgkJcmV0dXJuICR0aGlzLT5hQ29udGVudHM7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gYXJyYXkgJGFDb21tZW50cyBBcnJheSBvZiBjb21tZW50cy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGFkZENvbW1lbnRzKGFycmF5ICRhQ29tbWVudHMpIHsKCQkkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmFDb21tZW50cywgJGFDb21tZW50cyk7Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIGFycmF5CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRDb21tZW50cygpIHsKCQlyZXR1cm4gJHRoaXMtPmFDb21tZW50czsKCX0KCgkvKioKCSAqIEBwYXJhbSBhcnJheSAkYUNvbW1lbnRzIEFycmF5IGNvbnRhaW5pbmcgQ29tbWVudCBvYmplY3RzLgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0Q29tbWVudHMoYXJyYXkgJGFDb21tZW50cykgewoJCSR0aGlzLT5hQ29tbWVudHMgPSAkYUNvbW1lbnRzOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/Document.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcUGFyc2VyU3RhdGU7CgovKioKICogVGhlIHJvb3QgQ1NTTGlzdCBvZiBhIHBhcnNlZCBmaWxlLiBDb250YWlucyBhbGwgdG9wLWxldmVsIGNzcyBjb250ZW50cywgbW9zdGx5IGRlY2xhcmF0aW9uIGJsb2NrcywgYnV0IGFsc28gYW55IEAtcnVsZXMgZW5jb3VudGVyZWQuCiAqLwpjbGFzcyBEb2N1bWVudCBleHRlbmRzIENTU0Jsb2NrTGlzdCB7CgkvKioKCSAqIERvY3VtZW50IGNvbnN0cnVjdG9yLgoJICogQHBhcmFtIGludCAkaUxpbmVObwoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlMaW5lTm8gPSAwKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlKSB7CgkJJG9Eb2N1bWVudCA9IG5ldyBEb2N1bWVudCgkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCQlDU1NMaXN0OjpwYXJzZUxpc3QoJG9QYXJzZXJTdGF0ZSwgJG9Eb2N1bWVudCk7CgkJcmV0dXJuICRvRG9jdW1lbnQ7Cgl9CgoJLyoqCgkgKiBHZXRzIGFsbCBEZWNsYXJhdGlvbkJsb2NrIG9iamVjdHMgcmVjdXJzaXZlbHkuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRBbGxEZWNsYXJhdGlvbkJsb2NrcygpIHsKCQkkYVJlc3VsdCA9IGFycmF5KCk7CgkJJHRoaXMtPmFsbERlY2xhcmF0aW9uQmxvY2tzKCRhUmVzdWx0KTsKCQlyZXR1cm4gJGFSZXN1bHQ7Cgl9CgoJLyoqCgkgKiBAZGVwcmVjYXRlZCB1c2UgZ2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKQoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsU2VsZWN0b3JzKCkgewoJCXJldHVybiAkdGhpcy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKTsKCX0KCgkvKioKCSAqIFJldHVybnMgYWxsIFJ1bGVTZXQgb2JqZWN0cyBmb3VuZCByZWN1cnNpdmVseSBpbiB0aGUgdHJlZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldEFsbFJ1bGVTZXRzKCkgewoJCSRhUmVzdWx0ID0gYXJyYXkoKTsKCQkkdGhpcy0+YWxsUnVsZVNldHMoJGFSZXN1bHQpOwoJCXJldHVybiAkYVJlc3VsdDsKCX0KCgkvKioKCSAqIFJldHVybnMgYWxsIFZhbHVlIG9iamVjdHMgZm91bmQgcmVjdXJzaXZlbHkgaW4gdGhlIHRyZWUuCgkgKiBAcGFyYW0gKG9iamVjdHxzdHJpbmcpICRtRWxlbWVudCB0aGUgQ1NTTGlzdCBvciBSdWxlU2V0IHRvIHN0YXJ0IHRoZSBzZWFyY2ggZnJvbSAoZGVmYXVsdHMgdG8gdGhlIHdob2xlIGRvY3VtZW50KS4gSWYgYSBzdHJpbmcgaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgYXMgcnVsZSBuYW1lIGZpbHRlciAoQHNlZXtSdWxlU2V0LT5nZXRSdWxlcygpfSkuCgkgKiBAcGFyYW0gKGJvb2wpICRiU2VhcmNoSW5GdW5jdGlvbkFyZ3VtZW50cyB3aGV0aGVyIHRvIGFsc28gcmV0dXJuIFZhbHVlIG9iamVjdHMgdXNlZCBhcyBGdW5jdGlvbiBhcmd1bWVudHMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRBbGxWYWx1ZXMoJG1FbGVtZW50ID0gbnVsbCwgJGJTZWFyY2hJbkZ1bmN0aW9uQXJndW1lbnRzID0gZmFsc2UpIHsKCQkkc1NlYXJjaFN0cmluZyA9IG51bGw7CgkJaWYgKCRtRWxlbWVudCA9PT0gbnVsbCkgewoJCQkkbUVsZW1lbnQgPSAkdGhpczsKCQl9IGVsc2UgaWYgKGlzX3N0cmluZygkbUVsZW1lbnQpKSB7CgkJCSRzU2VhcmNoU3RyaW5nID0gJG1FbGVtZW50OwoJCQkkbUVsZW1lbnQgPSAkdGhpczsKCQl9CgkJJGFSZXN1bHQgPSBhcnJheSgpOwoJCSR0aGlzLT5hbGxWYWx1ZXMoJG1FbGVtZW50LCAkYVJlc3VsdCwgJHNTZWFyY2hTdHJpbmcsICRiU2VhcmNoSW5GdW5jdGlvbkFyZ3VtZW50cyk7CgkJcmV0dXJuICRhUmVzdWx0OwoJfQoKCS8qKgoJICogUmV0dXJucyBhbGwgU2VsZWN0b3Igb2JqZWN0cyBmb3VuZCByZWN1cnNpdmVseSBpbiB0aGUgdHJlZS4KCSAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHlpZWxkIHRoZSBmdWxsIERlY2xhcmF0aW9uQmxvY2sgdGhhdCB0aGUgc2VsZWN0b3IgYmVsb25ncyB0byAoYW5kLCBjdXJyZW50bHksIHRoZXJlIGlzIG5vIHdheSB0byBnZXQgdG8gdGhhdCkuCgkgKiBAcGFyYW0gJHNTcGVjaWZpY2l0eVNlYXJjaCBBbiBvcHRpb25hbCBmaWx0ZXIgYnkgc3BlY2lmaWNpdHkuIE1heSBjb250YWluIGEgY29tcGFyaXNvbiBvcGVyYXRvciBhbmQgYSBudW1iZXIgb3IganVzdCBhIG51bWJlciAoZGVmYXVsdHMgdG8gIj09IikuCgkgKiBAZXhhbXBsZSBnZXRTZWxlY3RvcnNCeVNwZWNpZmljaXR5KCc+PSAxMDAnKQoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0U2VsZWN0b3JzQnlTcGVjaWZpY2l0eSgkc1NwZWNpZmljaXR5U2VhcmNoID0gbnVsbCkgewoJCWlmIChpc19udW1lcmljKCRzU3BlY2lmaWNpdHlTZWFyY2gpIHx8IGlzX251bWVyaWMoJHNTcGVjaWZpY2l0eVNlYXJjaFswXSkpIHsKCQkJJHNTcGVjaWZpY2l0eVNlYXJjaCA9ICI9PSAkc1NwZWNpZmljaXR5U2VhcmNoIjsKCQl9CgkJJGFSZXN1bHQgPSBhcnJheSgpOwoJCSR0aGlzLT5hbGxTZWxlY3RvcnMoJGFSZXN1bHQsICRzU3BlY2lmaWNpdHlTZWFyY2gpOwoJCXJldHVybiAkYVJlc3VsdDsKCX0KCgkvKioKCSAqIEV4cGFuZHMgYWxsIHNob3J0aGFuZCBwcm9wZXJ0aWVzIHRvIHRoZWlyIGxvbmcgdmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGV4cGFuZFNob3J0aGFuZHMoKSB7CgkJZm9yZWFjaCAoJHRoaXMtPmdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCkgYXMgJG9EZWNsYXJhdGlvbikgewoJCQkkb0RlY2xhcmF0aW9uLT5leHBhbmRTaG9ydGhhbmRzKCk7CgkJfQoJfQoKCS8qKgoJICogQ3JlYXRlIHNob3J0aGFuZHMgcHJvcGVydGllcyB3aGVuZXZlciBwb3NzaWJsZQoJICovCglwdWJsaWMgZnVuY3Rpb24gY3JlYXRlU2hvcnRoYW5kcygpIHsKCQlmb3JlYWNoICgkdGhpcy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKSBhcyAkb0RlY2xhcmF0aW9uKSB7CgkJCSRvRGVjbGFyYXRpb24tPmNyZWF0ZVNob3J0aGFuZHMoKTsKCQl9Cgl9CgoJLy8gT3ZlcnJpZGUgcmVuZGVyKCkgdG8gbWFrZSBmb3JtYXQgYXJndW1lbnQgb3B0aW9uYWwKCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCA9IG51bGwpIHsKCQlpZigkb091dHB1dEZvcm1hdCA9PT0gbnVsbCkgewoJCQkkb091dHB1dEZvcm1hdCA9IG5ldyBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0KCk7CgkJfQoJCXJldHVybiBwYXJlbnQ6OnJlbmRlcigkb091dHB1dEZvcm1hdCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzUm9vdExpc3QoKSB7CgkJcmV0dXJuIHRydWU7Cgl9Cgp9]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/CSSList/KeyFrame.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZTsKCmNsYXNzIEtleUZyYW1lIGV4dGVuZHMgQ1NTTGlzdCBpbXBsZW1lbnRzIEF0UnVsZSB7CgoJcHJpdmF0ZSAkdmVuZG9yS2V5RnJhbWU7Cglwcml2YXRlICRhbmltYXRpb25OYW1lOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaUxpbmVObyA9IDApIHsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCRpTGluZU5vKTsKCQkkdGhpcy0+dmVuZG9yS2V5RnJhbWUgPSBudWxsOwoJCSR0aGlzLT5hbmltYXRpb25OYW1lICA9IG51bGw7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldFZlbmRvcktleUZyYW1lKCR2ZW5kb3JLZXlGcmFtZSkgewoJCSR0aGlzLT52ZW5kb3JLZXlGcmFtZSA9ICR2ZW5kb3JLZXlGcmFtZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0VmVuZG9yS2V5RnJhbWUoKSB7CgkJcmV0dXJuICR0aGlzLT52ZW5kb3JLZXlGcmFtZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0QW5pbWF0aW9uTmFtZSgkYW5pbWF0aW9uTmFtZSkgewoJCSR0aGlzLT5hbmltYXRpb25OYW1lID0gJGFuaW1hdGlvbk5hbWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldEFuaW1hdGlvbk5hbWUoKSB7CgkJcmV0dXJuICR0aGlzLT5hbmltYXRpb25OYW1lOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkgewoJCSRzUmVzdWx0ID0gIkB7JHRoaXMtPnZlbmRvcktleUZyYW1lfSB7JHRoaXMtPmFuaW1hdGlvbk5hbWV9eyRvT3V0cHV0Rm9ybWF0LT5zcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSgpfXsiOwoJCSRzUmVzdWx0IC49IHBhcmVudDo6cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KTsKCQkkc1Jlc3VsdCAuPSAnfSc7CgkJcmV0dXJuICRzUmVzdWx0OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc1Jvb3RMaXN0KCkgewoJCXJldHVybiBmYWxzZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYXRSdWxlTmFtZSgpIHsKCQlyZXR1cm4gJHRoaXMtPnZlbmRvcktleUZyYW1lOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVBcmdzKCkgewoJCXJldHVybiAkdGhpcy0+YW5pbWF0aW9uTmFtZTsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/OutputFormat.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXE91dHB1dEV4Y2VwdGlvbjsKCi8qKgogKiBDbGFzcyBPdXRwdXRGb3JtYXQKICoKICogQG1ldGhvZCBPdXRwdXRGb3JtYXQgc2V0U2VtaWNvbG9uQWZ0ZXJMYXN0UnVsZSggYm9vbCAkYlNlbWljb2xvbkFmdGVyTGFzdFJ1bGUgKSBTZXQgd2hldGhlciBzZW1pY29sb25zIGFyZSBhZGRlZCBhZnRlciBsYXN0IHJ1bGUuCiAqLwpjbGFzcyBPdXRwdXRGb3JtYXQgewoJLyoqCgkqIFZhbHVlIGZvcm1hdAoJKi8KCS8vICIgbWVhbnMgZG91YmxlLXF1b3RlLCAnIG1lYW5zIHNpbmdsZS1xdW90ZQoJcHVibGljICRzU3RyaW5nUXVvdGluZ1R5cGUgPSAnIic7CgkvLyBPdXRwdXQgUkdCIGNvbG9ycyBpbiBoYXNoIG5vdGF0aW9uIGlmIHBvc3NpYmxlCglwdWJsaWMgJGJSR0JIYXNoTm90YXRpb24gPSB0cnVlOwoJCgkvKioKCSogRGVjbGFyYXRpb24gZm9ybWF0CgkqLwoJLy8gU2VtaWNvbG9uIGFmdGVyIHRoZSBsYXN0IHJ1bGUgb2YgYSBkZWNsYXJhdGlvbiBibG9jayBjYW4gYmUgb21pdHRlZC4gVG8gZG8gdGhhdCwgc2V0IHRoaXMgZmFsc2UuCglwdWJsaWMgJGJTZW1pY29sb25BZnRlckxhc3RSdWxlID0gdHJ1ZTsKCQoJLyoqCgkqIFNwYWNpbmcKCSogTm90ZSB0aGF0IHRoZXNlIHN0cmluZ3MgYXJlIG5vdCBzYW5pdHktY2hlY2tlZDogdGhlIHZhbHVlIHNob3VsZCBvbmx5IGNvbnNpc3Qgb2Ygd2hpdGVzcGFjZQoJKiBBbnkgbmV3bGluZSBjaGFyYWN0ZXIgd2lsbCBiZSBpbmRlbnRlZCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbGV2ZWwuCgkqIFRoZSB0cmlwbGVzIChBZnRlciwgQmVmb3JlLCBCZXR3ZWVuKSBjYW4gYmUgc2V0IHVzaW5nIGEgd2lsZGNhcmQgKGUuZy4gYCRvRm9ybWF0LT5zZXQoJ1NwYWNlKlJ1bGVzJywgIlxuIik7YCkKCSovCglwdWJsaWMgJHNTcGFjZUFmdGVyUnVsZU5hbWUgPSAnICc7CgoJcHVibGljICRzU3BhY2VCZWZvcmVSdWxlcyA9ICcnOwoJcHVibGljICRzU3BhY2VBZnRlclJ1bGVzID0gJyc7CglwdWJsaWMgJHNTcGFjZUJldHdlZW5SdWxlcyA9ICcnOwoKCXB1YmxpYyAkc1NwYWNlQmVmb3JlQmxvY2tzID0gJyc7CglwdWJsaWMgJHNTcGFjZUFmdGVyQmxvY2tzID0gJyc7CglwdWJsaWMgJHNTcGFjZUJldHdlZW5CbG9ja3MgPSAiXG4iOwoKCS8vIENvbnRlbnQgaW5qZWN0ZWQgaW4gYW5kIGFyb3VuZCBALXJ1bGUgYmxvY2tzLgoJcHVibGljICRzQmVmb3JlQXRSdWxlQmxvY2sgPSAnJzsKCXB1YmxpYyAkc0FmdGVyQXRSdWxlQmxvY2sgPSAnJzsKCgkvLyBUaGlzIGlzIHdoYXTigJlzIHByaW50ZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUgY29tbWEgaWYgYSBkZWNsYXJhdGlvbiBibG9jayBjb250YWlucyBtdWx0aXBsZSBzZWxlY3RvcnMuCglwdWJsaWMgJHNTcGFjZUJlZm9yZVNlbGVjdG9yU2VwYXJhdG9yID0gJyc7CglwdWJsaWMgJHNTcGFjZUFmdGVyU2VsZWN0b3JTZXBhcmF0b3IgPSAnICc7CgkvLyBUaGlzIGlzIHdoYXTigJlzIHByaW50ZWQgYWZ0ZXIgdGhlIGNvbW1hIG9mIHZhbHVlIGxpc3RzCglwdWJsaWMgJHNTcGFjZUJlZm9yZUxpc3RBcmd1bWVudFNlcGFyYXRvciA9ICcnOwoJcHVibGljICRzU3BhY2VBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvciA9ICcnOwoJCglwdWJsaWMgJHNTcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSA9ICcgJzsKCgkvLyBDb250ZW50IGluamVjdGVkIGluIGFuZCBhcm91bmQgZGVjbGFyYXRpb24gYmxvY2tzLgoJcHVibGljICRzQmVmb3JlRGVjbGFyYXRpb25CbG9jayA9ICcnOwoJcHVibGljICRzQWZ0ZXJEZWNsYXJhdGlvbkJsb2NrU2VsZWN0b3JzID0gJyc7CglwdWJsaWMgJHNBZnRlckRlY2xhcmF0aW9uQmxvY2sgPSAnJzsKCgkvKioKCSogSW5kZW50YXRpb24KCSovCgkvLyBJbmRlbnRhdGlvbiBjaGFyYWN0ZXIocykgcGVyIGxldmVsLiBPbmx5IGFwcGxpY2FibGUgaWYgbmV3bGluZXMgYXJlIHVzZWQgaW4gYW55IG9mIHRoZSBzcGFjaW5nIHNldHRpbmdzLgoJcHVibGljICRzSW5kZW50YXRpb24gPSAiXHQiOwoJCgkvKioKCSogT3V0cHV0IGV4Y2VwdGlvbnMuCgkqLwoJcHVibGljICRiSWdub3JlRXhjZXB0aW9ucyA9IGZhbHNlOwoJCgkKCXByaXZhdGUgJG9Gb3JtYXR0ZXIgPSBudWxsOwoJcHJpdmF0ZSAkb05leHRMZXZlbEZvcm1hdCA9IG51bGw7Cglwcml2YXRlICRpSW5kZW50YXRpb25MZXZlbCA9IDA7CgkKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldCgkc05hbWUpIHsKCQkkYVZhclByZWZpeGVzID0gYXJyYXkoJ2EnLCAncycsICdtJywgJ2InLCAnZicsICdvJywgJ2MnLCAnaScpOwoJCWZvcmVhY2goJGFWYXJQcmVmaXhlcyBhcyAkc1ByZWZpeCkgewoJCQkkc0ZpZWxkTmFtZSA9ICRzUHJlZml4LnVjZmlyc3QoJHNOYW1lKTsKCQkJaWYoaXNzZXQoJHRoaXMtPiRzRmllbGROYW1lKSkgewoJCQkJcmV0dXJuICR0aGlzLT4kc0ZpZWxkTmFtZTsKCQkJfQoJCX0KCQlyZXR1cm4gbnVsbDsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHNldCgkYU5hbWVzLCAkbVZhbHVlKSB7CgkJJGFWYXJQcmVmaXhlcyA9IGFycmF5KCdhJywgJ3MnLCAnbScsICdiJywgJ2YnLCAnbycsICdjJywgJ2knKTsKCQlpZihpc19zdHJpbmcoJGFOYW1lcykgJiYgc3RycG9zKCRhTmFtZXMsICcqJykgIT09IGZhbHNlKSB7CgkJCSRhTmFtZXMgPSBhcnJheShzdHJfcmVwbGFjZSgnKicsICdCZWZvcmUnLCAkYU5hbWVzKSwgc3RyX3JlcGxhY2UoJyonLCAnQmV0d2VlbicsICRhTmFtZXMpLCBzdHJfcmVwbGFjZSgnKicsICdBZnRlcicsICRhTmFtZXMpKTsKCQl9IGVsc2UgaWYoIWlzX2FycmF5KCRhTmFtZXMpKSB7CgkJCSRhTmFtZXMgPSBhcnJheSgkYU5hbWVzKTsKCQl9CgkJZm9yZWFjaCgkYVZhclByZWZpeGVzIGFzICRzUHJlZml4KSB7CgkJCSRiRGlkUmVwbGFjZSA9IGZhbHNlOwoJCQlmb3JlYWNoKCRhTmFtZXMgYXMgJHNOYW1lKSB7CgkJCQkkc0ZpZWxkTmFtZSA9ICRzUHJlZml4LnVjZmlyc3QoJHNOYW1lKTsKCQkJCWlmKGlzc2V0KCR0aGlzLT4kc0ZpZWxkTmFtZSkpIHsKCQkJCQkkdGhpcy0+JHNGaWVsZE5hbWUgPSAkbVZhbHVlOwoJCQkJCSRiRGlkUmVwbGFjZSA9IHRydWU7CgkJCQl9CgkJCX0KCQkJaWYoJGJEaWRSZXBsYWNlKSB7CgkJCQlyZXR1cm4gJHRoaXM7CgkJCX0KCQl9CgkJLy8gQnJlYWsgdGhlIGNoYWluIHNvIHRoZSB1c2VyIGtub3dzIHRoaXMgb3B0aW9uIGlzIGludmFsaWQKCQlyZXR1cm4gZmFsc2U7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoJHNNZXRob2ROYW1lLCAkYUFyZ3VtZW50cykgewoJCWlmKHN0cnBvcygkc01ldGhvZE5hbWUsICdzZXQnKSA9PT0gMCkgewoJCQlyZXR1cm4gJHRoaXMtPnNldChzdWJzdHIoJHNNZXRob2ROYW1lLCAzKSwgJGFBcmd1bWVudHNbMF0pOwoJCX0gZWxzZSBpZihzdHJwb3MoJHNNZXRob2ROYW1lLCAnZ2V0JykgPT09IDApIHsKCQkJcmV0dXJuICR0aGlzLT5nZXQoc3Vic3RyKCRzTWV0aG9kTmFtZSwgMykpOwoJCX0gZWxzZSBpZihtZXRob2RfZXhpc3RzKCdcXFNhYmJlcndvcm1cXENTU1xcT3V0cHV0Rm9ybWF0dGVyJywgJHNNZXRob2ROYW1lKSkgewoJCQlyZXR1cm4gY2FsbF91c2VyX2Z1bmNfYXJyYXkoYXJyYXkoJHRoaXMtPmdldEZvcm1hdHRlcigpLCAkc01ldGhvZE5hbWUpLCAkYUFyZ3VtZW50cyk7CgkJfSBlbHNlIHsKCQkJdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1Vua25vd24gT3V0cHV0Rm9ybWF0IG1ldGhvZCBjYWxsZWQ6ICcuJHNNZXRob2ROYW1lKTsKCQl9Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBpbmRlbnRXaXRoVGFicygkaU51bWJlciA9IDEpIHsKCQlyZXR1cm4gJHRoaXMtPnNldEluZGVudGF0aW9uKHN0cl9yZXBlYXQoIlx0IiwgJGlOdW1iZXIpKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGluZGVudFdpdGhTcGFjZXMoJGlOdW1iZXIgPSAyKSB7CgkJcmV0dXJuICR0aGlzLT5zZXRJbmRlbnRhdGlvbihzdHJfcmVwZWF0KCIgIiwgJGlOdW1iZXIpKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIG5leHRMZXZlbCgpIHsKCQlpZigkdGhpcy0+b05leHRMZXZlbEZvcm1hdCA9PT0gbnVsbCkgewoJCQkkdGhpcy0+b05leHRMZXZlbEZvcm1hdCA9IGNsb25lICR0aGlzOwoJCQkkdGhpcy0+b05leHRMZXZlbEZvcm1hdC0+aUluZGVudGF0aW9uTGV2ZWwrKzsKCQkJJHRoaXMtPm9OZXh0TGV2ZWxGb3JtYXQtPm9Gb3JtYXR0ZXIgPSBudWxsOwoJCX0KCQlyZXR1cm4gJHRoaXMtPm9OZXh0TGV2ZWxGb3JtYXQ7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBiZUxlbmllbnQoKSB7CgkJJHRoaXMtPmJJZ25vcmVFeGNlcHRpb25zID0gdHJ1ZTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldEZvcm1hdHRlcigpIHsKCQlpZigkdGhpcy0+b0Zvcm1hdHRlciA9PT0gbnVsbCkgewoJCQkkdGhpcy0+b0Zvcm1hdHRlciA9IG5ldyBPdXRwdXRGb3JtYXR0ZXIoJHRoaXMpOwoJCX0KCQlyZXR1cm4gJHRoaXMtPm9Gb3JtYXR0ZXI7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBsZXZlbCgpIHsKCQlyZXR1cm4gJHRoaXMtPmlJbmRlbnRhdGlvbkxldmVsOwoJfQoKCS8qKgoJICogQ3JlYXRlIGZvcm1hdC4KCSAqCgkgKiBAcmV0dXJuIE91dHB1dEZvcm1hdCBGb3JtYXQuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKCkgewoJCXJldHVybiBuZXcgT3V0cHV0Rm9ybWF0KCk7Cgl9CgoJLyoqCgkgKiBDcmVhdGUgY29tcGFjdCBmb3JtYXQuCgkgKgoJICogQHJldHVybiBPdXRwdXRGb3JtYXQgRm9ybWF0LgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUNvbXBhY3QoKSB7CgkJJGZvcm1hdCA9IHNlbGY6OmNyZWF0ZSgpOwoJCSRmb3JtYXQtPnNldCgnU3BhY2UqUnVsZXMnLCAiIiktPnNldCgnU3BhY2UqQmxvY2tzJywgIiIpLT5zZXRTcGFjZUFmdGVyUnVsZU5hbWUoJycpLT5zZXRTcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSgnJyktPnNldFNwYWNlQWZ0ZXJTZWxlY3RvclNlcGFyYXRvcignJyk7CgkJcmV0dXJuICRmb3JtYXQ7Cgl9CgoJLyoqCgkgKiBDcmVhdGUgcHJldHR5IGZvcm1hdC4KCSAqCgkgKiBAcmV0dXJuIE91dHB1dEZvcm1hdCBGb3JtYXQuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUHJldHR5KCkgewoJCSRmb3JtYXQgPSBzZWxmOjpjcmVhdGUoKTsKCQkkZm9ybWF0LT5zZXQoJ1NwYWNlKlJ1bGVzJywgIlxuIiktPnNldCgnU3BhY2UqQmxvY2tzJywgIlxuIiktPnNldFNwYWNlQmV0d2VlbkJsb2NrcygiXG5cbiIpLT5zZXQoJ1NwYWNlQWZ0ZXJMaXN0QXJndW1lbnRTZXBhcmF0b3InLCBhcnJheSgnZGVmYXVsdCcgPT4gJycsICcsJyA9PiAnICcpKTsKCQlyZXR1cm4gJGZvcm1hdDsKCX0KfQoKY2xhc3MgT3V0cHV0Rm9ybWF0dGVyIHsKCXByaXZhdGUgJG9Gb3JtYXQ7CgkKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChPdXRwdXRGb3JtYXQgJG9Gb3JtYXQpIHsKCQkkdGhpcy0+b0Zvcm1hdCA9ICRvRm9ybWF0OwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc3BhY2UoJHNOYW1lLCAkc1R5cGUgPSBudWxsKSB7CgkJJHNTcGFjZVN0cmluZyA9ICR0aGlzLT5vRm9ybWF0LT5nZXQoIlNwYWNlJHNOYW1lIik7CgkJLy8gSWYgJHNTcGFjZVN0cmluZyBpcyBhbiBhcnJheSwgd2UgaGF2ZSBtdWx0cGxlIHZhbHVlcyBjb25maWd1cmVkIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBvYmplY3QgdGhlIHNwYWNlIGFwcGxpZXMgdG8KCQlpZihpc19hcnJheSgkc1NwYWNlU3RyaW5nKSkgewoJCQlpZigkc1R5cGUgIT09IG51bGwgJiYgaXNzZXQoJHNTcGFjZVN0cmluZ1skc1R5cGVdKSkgewoJCQkJJHNTcGFjZVN0cmluZyA9ICRzU3BhY2VTdHJpbmdbJHNUeXBlXTsKCQkJfSBlbHNlIHsKCQkJCSRzU3BhY2VTdHJpbmcgPSByZXNldCgkc1NwYWNlU3RyaW5nKTsKCQkJfQoJCX0KCQlyZXR1cm4gJHRoaXMtPnByZXBhcmVTcGFjZSgkc1NwYWNlU3RyaW5nKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHNwYWNlQWZ0ZXJSdWxlTmFtZSgpIHsKCQlyZXR1cm4gJHRoaXMtPnNwYWNlKCdBZnRlclJ1bGVOYW1lJyk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBzcGFjZUJlZm9yZVJ1bGVzKCkgewoJCXJldHVybiAkdGhpcy0+c3BhY2UoJ0JlZm9yZVJ1bGVzJyk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBzcGFjZUFmdGVyUnVsZXMoKSB7CgkJcmV0dXJuICR0aGlzLT5zcGFjZSgnQWZ0ZXJSdWxlcycpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc3BhY2VCZXR3ZWVuUnVsZXMoKSB7CgkJcmV0dXJuICR0aGlzLT5zcGFjZSgnQmV0d2VlblJ1bGVzJyk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBzcGFjZUJlZm9yZUJsb2NrcygpIHsKCQlyZXR1cm4gJHRoaXMtPnNwYWNlKCdCZWZvcmVCbG9ja3MnKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHNwYWNlQWZ0ZXJCbG9ja3MoKSB7CgkJcmV0dXJuICR0aGlzLT5zcGFjZSgnQWZ0ZXJCbG9ja3MnKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHNwYWNlQmV0d2VlbkJsb2NrcygpIHsKCQlyZXR1cm4gJHRoaXMtPnNwYWNlKCdCZXR3ZWVuQmxvY2tzJyk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBzcGFjZUJlZm9yZVNlbGVjdG9yU2VwYXJhdG9yKCkgewoJCXJldHVybiAkdGhpcy0+c3BhY2UoJ0JlZm9yZVNlbGVjdG9yU2VwYXJhdG9yJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNwYWNlQWZ0ZXJTZWxlY3RvclNlcGFyYXRvcigpIHsKCQlyZXR1cm4gJHRoaXMtPnNwYWNlKCdBZnRlclNlbGVjdG9yU2VwYXJhdG9yJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNwYWNlQmVmb3JlTGlzdEFyZ3VtZW50U2VwYXJhdG9yKCRzU2VwYXJhdG9yKSB7CgkJcmV0dXJuICR0aGlzLT5zcGFjZSgnQmVmb3JlTGlzdEFyZ3VtZW50U2VwYXJhdG9yJywgJHNTZXBhcmF0b3IpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzcGFjZUFmdGVyTGlzdEFyZ3VtZW50U2VwYXJhdG9yKCRzU2VwYXJhdG9yKSB7CgkJcmV0dXJuICR0aGlzLT5zcGFjZSgnQWZ0ZXJMaXN0QXJndW1lbnRTZXBhcmF0b3InLCAkc1NlcGFyYXRvcik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNwYWNlQmVmb3JlT3BlbmluZ0JyYWNlKCkgewoJCXJldHVybiAkdGhpcy0+c3BhY2UoJ0JlZm9yZU9wZW5pbmdCcmFjZScpOwoJfQoKCS8qKgoJKiBSdW5zIHRoZSBnaXZlbiBjb2RlLCBlaXRoZXIgc3dhbGxvd2luZyBvciBwYXNzaW5nIGV4Y2VwdGlvbnMsIGRlcGVuZGluZyBvbiB0aGUgYklnbm9yZUV4Y2VwdGlvbnMgc2V0dGluZy4KCSovCglwdWJsaWMgZnVuY3Rpb24gc2FmZWx5KCRjQ29kZSkgewoJCWlmKCR0aGlzLT5vRm9ybWF0LT5nZXQoJ0lnbm9yZUV4Y2VwdGlvbnMnKSkgewoJCQkvLyBJZiBvdXRwdXQgZXhjZXB0aW9ucyBhcmUgaWdub3JlZCwgcnVuIHRoZSBjb2RlIHdpdGggZXhjZXB0aW9uIGd1YXJkcwoJCQl0cnkgewoJCQkJcmV0dXJuICRjQ29kZSgpOwoJCQl9IGNhdGNoIChPdXRwdXRFeGNlcHRpb24gJGUpIHsKCQkJCXJldHVybiBudWxsOwoJCQl9IC8vRG8gbm90aGluZwoJCX0gZWxzZSB7CgkJCS8vIFJ1biB0aGUgY29kZSBhcy1pcwoJCQlyZXR1cm4gJGNDb2RlKCk7CgkJfQoJfQoKCS8qKgoJKiBDbG9uZSBvZiB0aGUgaW1wbG9kZSBmdW5jdGlvbiBidXQgY2FsbHMgLT5yZW5kZXIgd2l0aCB0aGUgY3VycmVudCBvdXRwdXQgZm9ybWF0IGluc3RlYWQgb2YgX190b1N0cmluZygpCgkqLwoJcHVibGljIGZ1bmN0aW9uIGltcGxvZGUoJHNTZXBhcmF0b3IsICRhVmFsdWVzLCAkYkluY3JlYXNlTGV2ZWwgPSBmYWxzZSkgewoJCSRzUmVzdWx0ID0gJyc7CgkJJG9Gb3JtYXQgPSAkdGhpcy0+b0Zvcm1hdDsKCQlpZigkYkluY3JlYXNlTGV2ZWwpIHsKCQkJJG9Gb3JtYXQgPSAkb0Zvcm1hdC0+bmV4dExldmVsKCk7CgkJfQoJCSRiSXNGaXJzdCA9IHRydWU7CgkJZm9yZWFjaCgkYVZhbHVlcyBhcyAkbVZhbHVlKSB7CgkJCWlmKCRiSXNGaXJzdCkgewoJCQkJJGJJc0ZpcnN0ID0gZmFsc2U7CgkJCX0gZWxzZSB7CgkJCQkkc1Jlc3VsdCAuPSAkc1NlcGFyYXRvcjsKCQkJfQoJCQlpZigkbVZhbHVlIGluc3RhbmNlb2YgXFNhYmJlcndvcm1cQ1NTXFJlbmRlcmFibGUpIHsKCQkJCSRzUmVzdWx0IC49ICRtVmFsdWUtPnJlbmRlcigkb0Zvcm1hdCk7CgkJCX0gZWxzZSB7CgkJCQkkc1Jlc3VsdCAuPSAkbVZhbHVlOwoJCQl9CgkJfQoJCXJldHVybiAkc1Jlc3VsdDsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHJlbW92ZUxhc3RTZW1pY29sb24oJHNTdHJpbmcpIHsKCQlpZigkdGhpcy0+b0Zvcm1hdC0+Z2V0KCdTZW1pY29sb25BZnRlckxhc3RSdWxlJykpIHsKCQkJcmV0dXJuICRzU3RyaW5nOwoJCX0KCQkkc1N0cmluZyA9IGV4cGxvZGUoJzsnLCAkc1N0cmluZyk7CgkJaWYoY291bnQoJHNTdHJpbmcpIDwgMikgewoJCQlyZXR1cm4gJHNTdHJpbmdbMF07CgkJfQoJCSRzTGFzdCA9IGFycmF5X3BvcCgkc1N0cmluZyk7CgkJJHNOZXh0VG9MYXN0ID0gYXJyYXlfcG9wKCRzU3RyaW5nKTsKCQlhcnJheV9wdXNoKCRzU3RyaW5nLCAkc05leHRUb0xhc3QuJHNMYXN0KTsKCQlyZXR1cm4gaW1wbG9kZSgnOycsICRzU3RyaW5nKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHByZXBhcmVTcGFjZSgkc1NwYWNlU3RyaW5nKSB7CgkJcmV0dXJuIHN0cl9yZXBsYWNlKCJcbiIsICJcbiIuJHRoaXMtPmluZGVudCgpLCAkc1NwYWNlU3RyaW5nKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGluZGVudCgpIHsKCQlyZXR1cm4gc3RyX3JlcGVhdCgkdGhpcy0+b0Zvcm1hdC0+c0luZGVudGF0aW9uLCAkdGhpcy0+b0Zvcm1hdC0+bGV2ZWwoKSk7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XERvY3VtZW50Owp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xQYXJzZXJTdGF0ZTsKCi8qKgogKiBQYXJzZXIgY2xhc3MgcGFyc2VzIENTUyBmcm9tIHRleHQgaW50byBhIGRhdGEgc3RydWN0dXJlLgogKi8KY2xhc3MgUGFyc2VyIHsKCXByaXZhdGUgJG9QYXJzZXJTdGF0ZTsKCgkvKioKCSAqIFBhcnNlciBjb25zdHJ1Y3Rvci4KCSAqIE5vdGUgdGhhdCB0aGF0IGlMaW5lTm8gc3RhcnRzIGZyb20gMSBhbmQgbm90IDAKCSAqCgkgKiBAcGFyYW0gJHNUZXh0CgkgKiBAcGFyYW0gU2V0dGluZ3N8bnVsbCAkb1BhcnNlclNldHRpbmdzCgkgKiBAcGFyYW0gaW50ICRpTGluZU5vCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc1RleHQsIFNldHRpbmdzICRvUGFyc2VyU2V0dGluZ3MgPSBudWxsLCAkaUxpbmVObyA9IDEpIHsKCQlpZiAoJG9QYXJzZXJTZXR0aW5ncyA9PT0gbnVsbCkgewoJCQkkb1BhcnNlclNldHRpbmdzID0gU2V0dGluZ3M6OmNyZWF0ZSgpOwoJCX0KCQkkdGhpcy0+b1BhcnNlclN0YXRlID0gbmV3IFBhcnNlclN0YXRlKCRzVGV4dCwgJG9QYXJzZXJTZXR0aW5ncywgJGlMaW5lTm8pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRDaGFyc2V0KCRzQ2hhcnNldCkgewoJCSR0aGlzLT5vUGFyc2VyU3RhdGUtPnNldENoYXJzZXQoJHNDaGFyc2V0KTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q2hhcnNldCgpIHsKCQkkdGhpcy0+b1BhcnNlclN0YXRlLT5nZXRDaGFyc2V0KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHBhcnNlKCkgewoJCXJldHVybiBEb2N1bWVudDo6cGFyc2UoJHRoaXMtPm9QYXJzZXJTdGF0ZSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parsing/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parsing/OutputException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKLyoqCiogVGhyb3duIGlmIHRoZSBDU1MgcGFyc2VycyBhdHRlbXB0cyB0byBwcmludCBzb21ldGhpbmcgaW52YWxpZAoqLwpjbGFzcyBPdXRwdXRFeGNlcHRpb24gZXh0ZW5kcyBTb3VyY2VFeGNlcHRpb24gewoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzTWVzc2FnZSwgJGlMaW5lTm8gPSAwKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkc01lc3NhZ2UsICRpTGluZU5vKTsKCX0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parsing/ParserState.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmc7Cgp1c2UgU2FiYmVyd29ybVxDU1NcQ29tbWVudFxDb21tZW50Owp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xTZXR0aW5nczsKCmNsYXNzIFBhcnNlclN0YXRlIHsKCXByaXZhdGUgJG9QYXJzZXJTZXR0aW5nczsKCglwcml2YXRlICRzVGV4dDsKCglwcml2YXRlICRhVGV4dDsKCXByaXZhdGUgJGlDdXJyZW50UG9zaXRpb247Cglwcml2YXRlICRzQ2hhcnNldDsKCXByaXZhdGUgJGlMZW5ndGg7Cglwcml2YXRlICRpTGluZU5vOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc1RleHQsIFNldHRpbmdzICRvUGFyc2VyU2V0dGluZ3MsICRpTGluZU5vID0gMSkgewoJCSR0aGlzLT5vUGFyc2VyU2V0dGluZ3MgPSAkb1BhcnNlclNldHRpbmdzOwoJCSR0aGlzLT5zVGV4dCA9ICRzVGV4dDsKCQkkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiA9IDA7CgkJJHRoaXMtPmlMaW5lTm8gPSAkaUxpbmVObzsKCQkkdGhpcy0+c2V0Q2hhcnNldCgkdGhpcy0+b1BhcnNlclNldHRpbmdzLT5zRGVmYXVsdENoYXJzZXQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRDaGFyc2V0KCRzQ2hhcnNldCkgewoJCSR0aGlzLT5zQ2hhcnNldCA9ICRzQ2hhcnNldDsKCQkkdGhpcy0+YVRleHQgPSAkdGhpcy0+c3Ryc3BsaXQoJHRoaXMtPnNUZXh0KTsKCQkkdGhpcy0+aUxlbmd0aCA9IGNvdW50KCR0aGlzLT5hVGV4dCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldENoYXJzZXQoKSB7CgkJJHRoaXMtPm9QYXJzZXJIZWxwZXItPmdldENoYXJzZXQoKTsKCQlyZXR1cm4gJHRoaXMtPnNDaGFyc2V0OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjdXJyZW50TGluZSgpIHsKCQlyZXR1cm4gJHRoaXMtPmlMaW5lTm87Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFNldHRpbmdzKCkgewoJCXJldHVybiAkdGhpcy0+b1BhcnNlclNldHRpbmdzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwYXJzZUlkZW50aWZpZXIoJGJJZ25vcmVDYXNlID0gdHJ1ZSkgewoJCSRzUmVzdWx0ID0gJHRoaXMtPnBhcnNlQ2hhcmFjdGVyKHRydWUpOwoJCWlmICgkc1Jlc3VsdCA9PT0gbnVsbCkgewoJCQl0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKCRzUmVzdWx0LCAkdGhpcy0+cGVlayg1KSwgJ2lkZW50aWZpZXInLCAkdGhpcy0+aUxpbmVObyk7CgkJfQoJCSRzQ2hhcmFjdGVyID0gbnVsbDsKCQl3aGlsZSAoKCRzQ2hhcmFjdGVyID0gJHRoaXMtPnBhcnNlQ2hhcmFjdGVyKHRydWUpKSAhPT0gbnVsbCkgewoJCQkkc1Jlc3VsdCAuPSAkc0NoYXJhY3RlcjsKCQl9CgkJaWYgKCRiSWdub3JlQ2FzZSkgewoJCQkkc1Jlc3VsdCA9ICR0aGlzLT5zdHJ0b2xvd2VyKCRzUmVzdWx0KTsKCQl9CgkJcmV0dXJuICRzUmVzdWx0OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwYXJzZUNoYXJhY3RlcigkYklzRm9ySWRlbnRpZmllcikgewoJCWlmICgkdGhpcy0+cGVlaygpID09PSAnXFwnKSB7CgkJCWlmICgkYklzRm9ySWRlbnRpZmllciAmJiAkdGhpcy0+b1BhcnNlclNldHRpbmdzLT5iTGVuaWVudFBhcnNpbmcgJiYgKCR0aGlzLT5jb21lcygnXDAnKSB8fCAkdGhpcy0+Y29tZXMoJ1w5JykpKSB7CgkJCQkvLyBOb24tc3RyaW5ncyBjYW4gY29udGFpbiBcMCBvciBcOSB3aGljaCBpcyBhbiBJRSBoYWNrIHN1cHBvcnRlZCBpbiBsZW5pZW50IHBhcnNpbmcuCgkJCQlyZXR1cm4gbnVsbDsKCQkJfQoJCQkkdGhpcy0+Y29uc3VtZSgnXFwnKTsKCQkJaWYgKCR0aGlzLT5jb21lcygnXG4nKSB8fCAkdGhpcy0+Y29tZXMoJ1xyJykpIHsKCQkJCXJldHVybiAnJzsKCQkJfQoJCQlpZiAocHJlZ19tYXRjaCgnL1swLTlhLWZBLUZdL1N1JywgJHRoaXMtPnBlZWsoKSkgPT09IDApIHsKCQkJCXJldHVybiAkdGhpcy0+Y29uc3VtZSgxKTsKCQkJfQoJCQkkc1VuaWNvZGUgPSAkdGhpcy0+Y29uc3VtZUV4cHJlc3Npb24oJy9eWzAtOWEtZkEtRl17MSw2fS91JywgNik7CgkJCWlmICgkdGhpcy0+c3RybGVuKCRzVW5pY29kZSkgPCA2KSB7CgkJCQkvL0NvbnN1bWUgd2hpdGVzcGFjZSBhZnRlciBpbmNvbXBsZXRlIHVuaWNvZGUgZXNjYXBlCgkJCQlpZiAocHJlZ19tYXRjaCgnL1xccy9pc1N1JywgJHRoaXMtPnBlZWsoKSkpIHsKCQkJCQlpZiAoJHRoaXMtPmNvbWVzKCdcclxuJykpIHsKCQkJCQkJJHRoaXMtPmNvbnN1bWUoMik7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJHRoaXMtPmNvbnN1bWUoMSk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCSRpVW5pY29kZSA9IGludHZhbCgkc1VuaWNvZGUsIDE2KTsKCQkJJHNVdGYzMiA9ICIiOwoJCQlmb3IgKCRpID0gMDsgJGkgPCA0OyArKyRpKSB7CgkJCQkkc1V0ZjMyIC49IGNocigkaVVuaWNvZGUgJiAweGZmKTsKCQkJCSRpVW5pY29kZSA9ICRpVW5pY29kZSA+PiA4OwoJCQl9CgkJCXJldHVybiBpY29udigndXRmLTMybGUnLCAkdGhpcy0+c0NoYXJzZXQsICRzVXRmMzIpOwoJCX0KCQlpZiAoJGJJc0ZvcklkZW50aWZpZXIpIHsKCQkJJHBlZWsgPSBvcmQoJHRoaXMtPnBlZWsoKSk7CgkJCS8vIFJhbmdlczogYS16IEEtWiAwLTkgLSBfCgkJCWlmICgoJHBlZWsgPj0gOTcgJiYgJHBlZWsgPD0gMTIyKSB8fAoJCQkJKCRwZWVrID49IDY1ICYmICRwZWVrIDw9IDkwKSB8fAoJCQkJKCRwZWVrID49IDQ4ICYmICRwZWVrIDw9IDU3KSB8fAoJCQkJKCRwZWVrID09PSA0NSkgfHwKCQkJCSgkcGVlayA9PT0gOTUpIHx8CgkJCQkoJHBlZWsgPiAweGExKSkgewoJCQkJcmV0dXJuICR0aGlzLT5jb25zdW1lKDEpOwoJCQl9CgkJfSBlbHNlIHsKCQkJcmV0dXJuICR0aGlzLT5jb25zdW1lKDEpOwoJCX0KCQlyZXR1cm4gbnVsbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29uc3VtZVdoaXRlU3BhY2UoKSB7CgkJJGNvbW1lbnRzID0gYXJyYXkoKTsKCQlkbyB7CgkJCXdoaWxlIChwcmVnX21hdGNoKCcvXFxzL2lzU3UnLCAkdGhpcy0+cGVlaygpKSA9PT0gMSkgewoJCQkJJHRoaXMtPmNvbnN1bWUoMSk7CgkJCX0KCQkJaWYoJHRoaXMtPm9QYXJzZXJTZXR0aW5ncy0+YkxlbmllbnRQYXJzaW5nKSB7CgkJCQl0cnkgewoJCQkJCSRvQ29tbWVudCA9ICR0aGlzLT5jb25zdW1lQ29tbWVudCgpOwoJCQkJfSBjYXRjaChVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24gJGUpIHsKCQkJCQkvLyBXaGVuIHdlIGNhbuKAmXQgZmluZCB0aGUgZW5kIG9mIGEgY29tbWVudCwgd2UgYXNzdW1lIHRoZSBkb2N1bWVudCBpcyBmaW5pc2hlZC4KCQkJCQkkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiA9ICR0aGlzLT5pTGVuZ3RoOwoJCQkJCXJldHVybjsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCSRvQ29tbWVudCA9ICR0aGlzLT5jb25zdW1lQ29tbWVudCgpOwoJCQl9CgkJCWlmICgkb0NvbW1lbnQgIT09IGZhbHNlKSB7CgkJCQkkY29tbWVudHNbXSA9ICRvQ29tbWVudDsKCQkJfQoJCX0gd2hpbGUoJG9Db21tZW50ICE9PSBmYWxzZSk7CgkJcmV0dXJuICRjb21tZW50czsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tZXMoJHNTdHJpbmcsICRiQ2FzZUluc2Vuc2l0aXZlID0gZmFsc2UpIHsKCQkkc1BlZWsgPSAkdGhpcy0+cGVlayhzdHJsZW4oJHNTdHJpbmcpKTsKCQlyZXR1cm4gKCRzUGVlayA9PSAnJykKCQkJPyBmYWxzZQoJCQk6ICR0aGlzLT5zdHJlcWwoJHNQZWVrLCAkc1N0cmluZywgJGJDYXNlSW5zZW5zaXRpdmUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwZWVrKCRpTGVuZ3RoID0gMSwgJGlPZmZzZXQgPSAwKSB7CgkJJGlPZmZzZXQgKz0gJHRoaXMtPmlDdXJyZW50UG9zaXRpb247CgkJaWYgKCRpT2Zmc2V0ID49ICR0aGlzLT5pTGVuZ3RoKSB7CgkJCXJldHVybiAnJzsKCQl9CgkJcmV0dXJuICR0aGlzLT5zdWJzdHIoJGlPZmZzZXQsICRpTGVuZ3RoKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29uc3VtZSgkbVZhbHVlID0gMSkgewoJCWlmIChpc19zdHJpbmcoJG1WYWx1ZSkpIHsKCQkJJGlMaW5lQ291bnQgPSBzdWJzdHJfY291bnQoJG1WYWx1ZSwgIlxuIik7CgkJCSRpTGVuZ3RoID0gJHRoaXMtPnN0cmxlbigkbVZhbHVlKTsKCQkJaWYgKCEkdGhpcy0+c3RyZXFsKCR0aGlzLT5zdWJzdHIoJHRoaXMtPmlDdXJyZW50UG9zaXRpb24sICRpTGVuZ3RoKSwgJG1WYWx1ZSkpIHsKCQkJCXRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oJG1WYWx1ZSwgJHRoaXMtPnBlZWsobWF4KCRpTGVuZ3RoLCA1KSksICR0aGlzLT5pTGluZU5vKTsKCQkJfQoJCQkkdGhpcy0+aUxpbmVObyArPSAkaUxpbmVDb3VudDsKCQkJJHRoaXMtPmlDdXJyZW50UG9zaXRpb24gKz0gJHRoaXMtPnN0cmxlbigkbVZhbHVlKTsKCQkJcmV0dXJuICRtVmFsdWU7CgkJfSBlbHNlIHsKCQkJaWYgKCR0aGlzLT5pQ3VycmVudFBvc2l0aW9uICsgJG1WYWx1ZSA+ICR0aGlzLT5pTGVuZ3RoKSB7CgkJCQl0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKCRtVmFsdWUsICR0aGlzLT5wZWVrKDUpLCAnY291bnQnLCAkdGhpcy0+aUxpbmVObyk7CgkJCX0KCQkJJHNSZXN1bHQgPSAkdGhpcy0+c3Vic3RyKCR0aGlzLT5pQ3VycmVudFBvc2l0aW9uLCAkbVZhbHVlKTsKCQkJJGlMaW5lQ291bnQgPSBzdWJzdHJfY291bnQoJHNSZXN1bHQsICJcbiIpOwoJCQkkdGhpcy0+aUxpbmVObyArPSAkaUxpbmVDb3VudDsKCQkJJHRoaXMtPmlDdXJyZW50UG9zaXRpb24gKz0gJG1WYWx1ZTsKCQkJcmV0dXJuICRzUmVzdWx0OwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gY29uc3VtZUV4cHJlc3Npb24oJG1FeHByZXNzaW9uLCAkaU1heExlbmd0aCA9IG51bGwpIHsKCQkkYU1hdGNoZXMgPSBudWxsOwoJCSRzSW5wdXQgPSAkaU1heExlbmd0aCAhPT0gbnVsbCA/ICR0aGlzLT5wZWVrKCRpTWF4TGVuZ3RoKSA6ICR0aGlzLT5pbnB1dExlZnQoKTsKCQlpZiAocHJlZ19tYXRjaCgkbUV4cHJlc3Npb24sICRzSW5wdXQsICRhTWF0Y2hlcywgUFJFR19PRkZTRVRfQ0FQVFVSRSkgPT09IDEpIHsKCQkJcmV0dXJuICR0aGlzLT5jb25zdW1lKCRhTWF0Y2hlc1swXVswXSk7CgkJfQoJCXRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oJG1FeHByZXNzaW9uLCAkdGhpcy0+cGVlayg1KSwgJ2V4cHJlc3Npb24nLCAkdGhpcy0+aUxpbmVObyk7Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIGZhbHNlfENvbW1lbnQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNvbnN1bWVDb21tZW50KCkgewoJCSRtQ29tbWVudCA9IGZhbHNlOwoJCWlmICgkdGhpcy0+Y29tZXMoJy8qJykpIHsKCQkJJGlMaW5lTm8gPSAkdGhpcy0+aUxpbmVObzsKCQkJJHRoaXMtPmNvbnN1bWUoMSk7CgkJCSRtQ29tbWVudCA9ICcnOwoJCQl3aGlsZSAoKCRjaGFyID0gJHRoaXMtPmNvbnN1bWUoMSkpICE9PSAnJykgewoJCQkJJG1Db21tZW50IC49ICRjaGFyOwoJCQkJaWYgKCR0aGlzLT5jb21lcygnKi8nKSkgewoJCQkJCSR0aGlzLT5jb25zdW1lKDIpOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgkJfQoKCQlpZiAoJG1Db21tZW50ICE9PSBmYWxzZSkgewoJCQkvLyBXZSBza2lwIHRoZSAqIHdoaWNoIHdhcyBpbmNsdWRlZCBpbiB0aGUgY29tbWVudC4KCQkJcmV0dXJuIG5ldyBDb21tZW50KHN1YnN0cigkbUNvbW1lbnQsIDEpLCAkaUxpbmVObyk7CgkJfQoKCQlyZXR1cm4gJG1Db21tZW50OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc0VuZCgpIHsKCQlyZXR1cm4gJHRoaXMtPmlDdXJyZW50UG9zaXRpb24gPj0gJHRoaXMtPmlMZW5ndGg7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbnN1bWVVbnRpbCgkYUVuZCwgJGJJbmNsdWRlRW5kID0gZmFsc2UsICRjb25zdW1lRW5kID0gZmFsc2UsIGFycmF5ICYkY29tbWVudHMgPSBhcnJheSgpKSB7CgkJJGFFbmQgPSBpc19hcnJheSgkYUVuZCkgPyAkYUVuZCA6IGFycmF5KCRhRW5kKTsKCQkkb3V0ID0gJyc7CgkJJHN0YXJ0ID0gJHRoaXMtPmlDdXJyZW50UG9zaXRpb247CgoJCXdoaWxlICgoJGNoYXIgPSAkdGhpcy0+Y29uc3VtZSgxKSkgIT09ICcnKSB7CgkJCWlmIChpbl9hcnJheSgkY2hhciwgJGFFbmQpKSB7CgkJCQlpZiAoJGJJbmNsdWRlRW5kKSB7CgkJCQkJJG91dCAuPSAkY2hhcjsKCQkJCX0gZWxzZWlmICghJGNvbnN1bWVFbmQpIHsKCQkJCQkkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiAtPSAkdGhpcy0+c3RybGVuKCRjaGFyKTsKCQkJCX0KCQkJCXJldHVybiAkb3V0OwoJCQl9CgkJCSRvdXQgLj0gJGNoYXI7CgkJCWlmICgkY29tbWVudCA9ICR0aGlzLT5jb25zdW1lQ29tbWVudCgpKSB7CgkJCQkkY29tbWVudHNbXSA9ICRjb21tZW50OwoJCQl9CgkJfQoKCQkkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiA9ICRzdGFydDsKCQl0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKCdPbmUgb2YgKCInLmltcGxvZGUoJyIsIicsICRhRW5kKS4nIiknLCAkdGhpcy0+cGVlayg1KSwgJ3NlYXJjaCcsICR0aGlzLT5pTGluZU5vKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGlucHV0TGVmdCgpIHsKCQlyZXR1cm4gJHRoaXMtPnN1YnN0cigkdGhpcy0+aUN1cnJlbnRQb3NpdGlvbiwgLTEpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzdHJlcWwoJHNTdHJpbmcxLCAkc1N0cmluZzIsICRiQ2FzZUluc2Vuc2l0aXZlID0gdHJ1ZSkgewoJCWlmKCRiQ2FzZUluc2Vuc2l0aXZlKSB7CgkJCXJldHVybiAkdGhpcy0+c3RydG9sb3dlcigkc1N0cmluZzEpID09PSAkdGhpcy0+c3RydG9sb3dlcigkc1N0cmluZzIpOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkc1N0cmluZzEgPT09ICRzU3RyaW5nMjsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGJhY2t0cmFjaygkaUFtb3VudCkgewoJCSR0aGlzLT5pQ3VycmVudFBvc2l0aW9uIC09ICRpQW1vdW50OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzdHJsZW4oJHNTdHJpbmcpIHsKCQlpZiAoJHRoaXMtPm9QYXJzZXJTZXR0aW5ncy0+Yk11bHRpYnl0ZVN1cHBvcnQpIHsKCQkJcmV0dXJuIG1iX3N0cmxlbigkc1N0cmluZywgJHRoaXMtPnNDaGFyc2V0KTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gc3RybGVuKCRzU3RyaW5nKTsKCQl9CQoJfQkKCglwcml2YXRlIGZ1bmN0aW9uIHN1YnN0cigkaVN0YXJ0LCAkaUxlbmd0aCkgewoJCWlmICgkaUxlbmd0aCA8IDApIHsKCQkJJGlMZW5ndGggPSAkdGhpcy0+aUxlbmd0aCAtICRpU3RhcnQgKyAkaUxlbmd0aDsKCQl9CQoJCWlmICgkaVN0YXJ0ICsgJGlMZW5ndGggPiAkdGhpcy0+aUxlbmd0aCkgewoJCQkkaUxlbmd0aCA9ICR0aGlzLT5pTGVuZ3RoIC0gJGlTdGFydDsKCQl9CQoJCSRzUmVzdWx0ID0gJyc7CgkJd2hpbGUgKCRpTGVuZ3RoID4gMCkgewoJCQkkc1Jlc3VsdCAuPSAkdGhpcy0+YVRleHRbJGlTdGFydF07CgkJCSRpU3RhcnQrKzsKCQkJJGlMZW5ndGgtLTsKCQl9CQoJCXJldHVybiAkc1Jlc3VsdDsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHN0cnRvbG93ZXIoJHNTdHJpbmcpIHsKCQlpZiAoJHRoaXMtPm9QYXJzZXJTZXR0aW5ncy0+Yk11bHRpYnl0ZVN1cHBvcnQpIHsKCQkJcmV0dXJuIG1iX3N0cnRvbG93ZXIoJHNTdHJpbmcsICR0aGlzLT5zQ2hhcnNldCk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIHN0cnRvbG93ZXIoJHNTdHJpbmcpOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHN0cnNwbGl0KCRzU3RyaW5nKSB7CgkJaWYgKCR0aGlzLT5vUGFyc2VyU2V0dGluZ3MtPmJNdWx0aWJ5dGVTdXBwb3J0KSB7CgkJCWlmICgkdGhpcy0+c3RyZXFsKCR0aGlzLT5zQ2hhcnNldCwgJ3V0Zi04JykpIHsKCQkJCXJldHVybiBwcmVnX3NwbGl0KCcvL3UnLCAkc1N0cmluZywgbnVsbCwgUFJFR19TUExJVF9OT19FTVBUWSk7CgkJCX0gZWxzZSB7CgkJCQkkaUxlbmd0aCA9IG1iX3N0cmxlbigkc1N0cmluZywgJHRoaXMtPnNDaGFyc2V0KTsKCQkJCSRhUmVzdWx0ID0gYXJyYXkoKTsKCQkJCWZvciAoJGkgPSAwOyAkaSA8ICRpTGVuZ3RoOyArKyRpKSB7CgkJCQkJJGFSZXN1bHRbXSA9IG1iX3N1YnN0cigkc1N0cmluZywgJGksIDEsICR0aGlzLT5zQ2hhcnNldCk7CgkJCQl9CgkJCQlyZXR1cm4gJGFSZXN1bHQ7CgkJCX0KCQl9IGVsc2UgewoJCQlpZigkc1N0cmluZyA9PT0gJycpIHsKCQkJCXJldHVybiBhcnJheSgpOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIHN0cl9zcGxpdCgkc1N0cmluZyk7CgkJCX0KCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBzdHJwb3MoJHNTdHJpbmcsICRzTmVlZGxlLCAkaU9mZnNldCkgewoJCWlmICgkdGhpcy0+b1BhcnNlclNldHRpbmdzLT5iTXVsdGlieXRlU3VwcG9ydCkgewoJCQlyZXR1cm4gbWJfc3RycG9zKCRzU3RyaW5nLCAkc05lZWRsZSwgJGlPZmZzZXQsICR0aGlzLT5zQ2hhcnNldCk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIHN0cnBvcygkc1N0cmluZywgJHNOZWVkbGUsICRpT2Zmc2V0KTsKCQl9Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parsing/SourceException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKY2xhc3MgU291cmNlRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbiB7Cglwcml2YXRlICRpTGluZU5vOwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzTWVzc2FnZSwgJGlMaW5lTm8gPSAwKSB7CgkJJHRoaXMtPmlMaW5lTm8gPSAkaUxpbmVObzsKCQlpZiAoIWVtcHR5KCRpTGluZU5vKSkgewoJCQkkc01lc3NhZ2UgLj0gIiBbbGluZSBubzogJGlMaW5lTm9dIjsKCQl9CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkc01lc3NhZ2UpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRMaW5lTm8oKSB7CgkJcmV0dXJuICR0aGlzLT5pTGluZU5vOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Parsing/UnexpectedTokenException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nOwoKLyoqCiogVGhyb3duIGlmIHRoZSBDU1MgcGFyc2VycyBlbmNvdW50ZXJzIGEgdG9rZW4gaXQgZGlkIG5vdCBleHBlY3QKKi8KY2xhc3MgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uIGV4dGVuZHMgU291cmNlRXhjZXB0aW9uIHsKCXByaXZhdGUgJHNFeHBlY3RlZDsKCXByaXZhdGUgJHNGb3VuZDsKCS8vIFBvc3NpYmxlIHZhbHVlczogbGl0ZXJhbCwgaWRlbnRpZmllciwgY291bnQsIGV4cHJlc3Npb24sIHNlYXJjaAoJcHJpdmF0ZSAkc01hdGNoVHlwZTsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNFeHBlY3RlZCwgJHNGb3VuZCwgJHNNYXRjaFR5cGUgPSAnbGl0ZXJhbCcsICRpTGluZU5vID0gMCkgewoJCSR0aGlzLT5zRXhwZWN0ZWQgPSAkc0V4cGVjdGVkOwoJCSR0aGlzLT5zRm91bmQgPSAkc0ZvdW5kOwoJCSR0aGlzLT5zTWF0Y2hUeXBlID0gJHNNYXRjaFR5cGU7CgkJJHNNZXNzYWdlID0gIlRva2VuIOKAnHskc0V4cGVjdGVkfeKAnSAoeyRzTWF0Y2hUeXBlfSkgbm90IGZvdW5kLiBHb3Qg4oCceyRzRm91bmR94oCdLiI7CgkJaWYoJHRoaXMtPnNNYXRjaFR5cGUgPT09ICdzZWFyY2gnKSB7CgkJCSRzTWVzc2FnZSA9ICJTZWFyY2ggZm9yIOKAnHskc0V4cGVjdGVkfeKAnSByZXR1cm5lZCBubyByZXN1bHRzLiBDb250ZXh0OiDigJx7JHNGb3VuZH3igJ0uIjsKCQl9IGVsc2UgaWYoJHRoaXMtPnNNYXRjaFR5cGUgPT09ICdjb3VudCcpIHsKCQkJJHNNZXNzYWdlID0gIk5leHQgdG9rZW4gd2FzIGV4cGVjdGVkIHRvIGhhdmUgeyRzRXhwZWN0ZWR9IGNoYXJzLiBDb250ZXh0OiDigJx7JHNGb3VuZH3igJ0uIjsKCQl9IGVsc2UgaWYoJHRoaXMtPnNNYXRjaFR5cGUgPT09ICdpZGVudGlmaWVyJykgewoJCQkkc01lc3NhZ2UgPSAiSWRlbnRpZmllciBleHBlY3RlZC4gR290IOKAnHskc0ZvdW5kfeKAnSI7CgkJfSBlbHNlIGlmKCR0aGlzLT5zTWF0Y2hUeXBlID09PSAnY3VzdG9tJykgewoJCQkkc01lc3NhZ2UgPSB0cmltKCIkc0V4cGVjdGVkICRzRm91bmQiKTsKCQl9CgoJCXBhcmVudDo6X19jb25zdHJ1Y3QoJHNNZXNzYWdlLCAkaUxpbmVObyk7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Property/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Property/AtRule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xSZW5kZXJhYmxlOwp1c2UgU2FiYmVyd29ybVxDU1NcQ29tbWVudFxDb21tZW50YWJsZTsKCmludGVyZmFjZSBBdFJ1bGUgZXh0ZW5kcyBSZW5kZXJhYmxlLCBDb21tZW50YWJsZSB7CgkvLyBTaW5jZSB0aGVyZSBhcmUgbW9yZSBzZXQgcnVsZXMgdGhhbiBibG9jayBydWxlcywgd2XigJlyZSB3aGl0ZWxpc3RpbmcgdGhlIGJsb2NrIHJ1bGVzIGFuZCBoYXZlIGFueXRoaW5nIGVsc2UgYmUgdHJlYXRlZCBhcyBhIHNldCBydWxlLgoJY29uc3QgQkxPQ0tfUlVMRVMgPSAnbWVkaWEvZG9jdW1lbnQvc3VwcG9ydHMvcmVnaW9uLXN0eWxlL2ZvbnQtZmVhdHVyZS12YWx1ZXMnOwoJLy8g4oCmYW5kIG1vcmUgZm9udC1zcGVjaWZpYyBvbmVzICh0byBiZSB1c2VkIGluc2lkZSBmb250LWZlYXR1cmUtdmFsdWVzKQoJY29uc3QgU0VUX1JVTEVTID0gJ2ZvbnQtZmFjZS9jb3VudGVyLXN0eWxlL3BhZ2Uvc3dhc2gvc3R5bGVzZXQvYW5ub3RhdGlvbic7CgkKCXB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVOYW1lKCk7CglwdWJsaWMgZnVuY3Rpb24gYXRSdWxlQXJncygpOwp9]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Property/Charset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCi8qKgogKiBDbGFzcyByZXByZXNlbnRpbmcgYW4gQGNoYXJzZXQgcnVsZS4KICogVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgYXBwbHk6CiAqIOKAoiBNYXkgbm90IGJlIGZvdW5kIGluIGFueSBDU1NMaXN0IG90aGVyIHRoYW4gdGhlIERvY3VtZW50LgogKiDigKIgTWF5IG9ubHkgYXBwZWFyIGF0IHRoZSB2ZXJ5IHRvcCBvZiBhIERvY3VtZW504oCZcyBjb250ZW50cy4KICog4oCiIE11c3Qgbm90IGFwcGVhciBtb3JlIHRoYW4gb25jZS4KICovCmNsYXNzIENoYXJzZXQgaW1wbGVtZW50cyBBdFJ1bGUgewoKCXByaXZhdGUgJHNDaGFyc2V0OwoJcHJvdGVjdGVkICRpTGluZU5vOwoJcHJvdGVjdGVkICRhQ29tbWVudDsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNDaGFyc2V0LCAkaUxpbmVObyA9IDApIHsKCQkkdGhpcy0+c0NoYXJzZXQgPSAkc0NoYXJzZXQ7CgkJJHRoaXMtPmlMaW5lTm8gPSAkaUxpbmVObzsKCQkkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXkoKTsKCX0KCgkvKioKCSAqIEByZXR1cm4gaW50CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRMaW5lTm8oKSB7CgkJcmV0dXJuICR0aGlzLT5pTGluZU5vOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRDaGFyc2V0KCRzQ2hhcnNldCkgewoJCSR0aGlzLT5zQ2hhcnNldCA9ICRzQ2hhcnNldDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q2hhcnNldCgpIHsKCQlyZXR1cm4gJHRoaXMtPnNDaGFyc2V0OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkgewoJCXJldHVybiAiQGNoYXJzZXQgeyR0aGlzLT5zQ2hhcnNldC0+cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KX07IjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYXRSdWxlTmFtZSgpIHsKCQlyZXR1cm4gJ2NoYXJzZXQnOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVBcmdzKCkgewoJCXJldHVybiAkdGhpcy0+c0NoYXJzZXQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFkZENvbW1lbnRzKGFycmF5ICRhQ29tbWVudHMpIHsKCQkkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmFDb21tZW50cywgJGFDb21tZW50cyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnRzKCkgewoJCXJldHVybiAkdGhpcy0+YUNvbW1lbnRzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKSB7CgkJJHRoaXMtPmFDb21tZW50cyA9ICRhQ29tbWVudHM7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Property/CSSNamespace.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCi8qKgoqIENTU05hbWVzcGFjZSByZXByZXNlbnRzIGFuIEBuYW1lc3BhY2UgcnVsZS4KKi8KY2xhc3MgQ1NTTmFtZXNwYWNlIGltcGxlbWVudHMgQXRSdWxlIHsKCXByaXZhdGUgJG1Vcmw7Cglwcml2YXRlICRzUHJlZml4OwoJcHJpdmF0ZSAkaUxpbmVObzsKCXByb3RlY3RlZCAkYUNvbW1lbnRzOwoJCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1VcmwsICRzUHJlZml4ID0gbnVsbCwgJGlMaW5lTm8gPSAwKSB7CgkJJHRoaXMtPm1VcmwgPSAkbVVybDsKCQkkdGhpcy0+c1ByZWZpeCA9ICRzUHJlZml4OwoJCSR0aGlzLT5pTGluZU5vID0gJGlMaW5lTm87CgkJJHRoaXMtPmFDb21tZW50cyA9IGFycmF5KCk7Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIGludAoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZU5vKCkgewoJCXJldHVybiAkdGhpcy0+aUxpbmVObzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpIHsKCQlyZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCgpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQgJG9PdXRwdXRGb3JtYXQpIHsKCQlyZXR1cm4gJ0BuYW1lc3BhY2UgJy4oJHRoaXMtPnNQcmVmaXggPT09IG51bGwgPyAnJyA6ICR0aGlzLT5zUHJlZml4LicgJykuJHRoaXMtPm1VcmwtPnJlbmRlcigkb091dHB1dEZvcm1hdCkuJzsnOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gZ2V0VXJsKCkgewoJCXJldHVybiAkdGhpcy0+bVVybDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlZml4KCkgewoJCXJldHVybiAkdGhpcy0+c1ByZWZpeDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0VXJsKCRtVXJsKSB7CgkJJHRoaXMtPm1VcmwgPSAkbVVybDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0UHJlZml4KCRzUHJlZml4KSB7CgkJJHRoaXMtPnNQcmVmaXggPSAkc1ByZWZpeDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYXRSdWxlTmFtZSgpIHsKCQlyZXR1cm4gJ25hbWVzcGFjZSc7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGF0UnVsZUFyZ3MoKSB7CgkJJGFSZXN1bHQgPSBhcnJheSgkdGhpcy0+bVVybCk7CgkJaWYoJHRoaXMtPnNQcmVmaXgpIHsKCQkJYXJyYXlfdW5zaGlmdCgkYVJlc3VsdCwgJHRoaXMtPnNQcmVmaXgpOwoJCX0KCQlyZXR1cm4gJGFSZXN1bHQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFkZENvbW1lbnRzKGFycmF5ICRhQ29tbWVudHMpIHsKCQkkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmFDb21tZW50cywgJGFDb21tZW50cyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnRzKCkgewoJCXJldHVybiAkdGhpcy0+YUNvbW1lbnRzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKSB7CgkJJHRoaXMtPmFDb21tZW50cyA9ICRhQ29tbWVudHM7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Property/Import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxVUkw7CgovKioKKiBDbGFzcyByZXByZXNlbnRpbmcgYW4gQGltcG9ydCBydWxlLgoqLwpjbGFzcyBJbXBvcnQgaW1wbGVtZW50cyBBdFJ1bGUgewoJcHJpdmF0ZSAkb0xvY2F0aW9uOwoJcHJpdmF0ZSAkc01lZGlhUXVlcnk7Cglwcm90ZWN0ZWQgJGlMaW5lTm87Cglwcm90ZWN0ZWQgJGFDb21tZW50czsKCQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFVSTCAkb0xvY2F0aW9uLCAkc01lZGlhUXVlcnksICRpTGluZU5vID0gMCkgewoJCSR0aGlzLT5vTG9jYXRpb24gPSAkb0xvY2F0aW9uOwoJCSR0aGlzLT5zTWVkaWFRdWVyeSA9ICRzTWVkaWFRdWVyeTsKCQkkdGhpcy0+aUxpbmVObyA9ICRpTGluZU5vOwoJCSR0aGlzLT5hQ29tbWVudHMgPSBhcnJheSgpOwoJfQoKCS8qKgoJICogQHJldHVybiBpbnQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldExpbmVObygpIHsKCQlyZXR1cm4gJHRoaXMtPmlMaW5lTm87Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldExvY2F0aW9uKCRvTG9jYXRpb24pIHsKCQkJJHRoaXMtPm9Mb2NhdGlvbiA9ICRvTG9jYXRpb247Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldExvY2F0aW9uKCkgewoJCQlyZXR1cm4gJHRoaXMtPm9Mb2NhdGlvbjsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQoKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcihcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0ICRvT3V0cHV0Rm9ybWF0KSB7CgkJcmV0dXJuICJAaW1wb3J0ICIuJHRoaXMtPm9Mb2NhdGlvbi0+cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KS4oJHRoaXMtPnNNZWRpYVF1ZXJ5ID09PSBudWxsID8gJycgOiAnICcuJHRoaXMtPnNNZWRpYVF1ZXJ5KS4nOyc7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGF0UnVsZU5hbWUoKSB7CgkJcmV0dXJuICdpbXBvcnQnOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVBcmdzKCkgewoJCSRhUmVzdWx0ID0gYXJyYXkoJHRoaXMtPm9Mb2NhdGlvbik7CgkJaWYoJHRoaXMtPnNNZWRpYVF1ZXJ5KSB7CgkJCWFycmF5X3B1c2goJGFSZXN1bHQsICR0aGlzLT5zTWVkaWFRdWVyeSk7CgkJfQoJCXJldHVybiAkYVJlc3VsdDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWRkQ29tbWVudHMoYXJyYXkgJGFDb21tZW50cykgewoJCSR0aGlzLT5hQ29tbWVudHMgPSBhcnJheV9tZXJnZSgkdGhpcy0+YUNvbW1lbnRzLCAkYUNvbW1lbnRzKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q29tbWVudHMoKSB7CgkJcmV0dXJuICR0aGlzLT5hQ29tbWVudHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldENvbW1lbnRzKGFycmF5ICRhQ29tbWVudHMpIHsKCQkkdGhpcy0+YUNvbW1lbnRzID0gJGFDb21tZW50czsKCX0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Property/Selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eTsKCi8qKgogKiBDbGFzcyByZXByZXNlbnRpbmcgYSBzaW5nbGUgQ1NTIHNlbGVjdG9yLiBTZWxlY3RvcnMgaGF2ZSB0byBiZSBzcGxpdCBieSB0aGUgY29tbWEgcHJpb3IgdG8gYmVpbmcgcGFzc2VkIGludG8gdGhpcyBjbGFzcy4KICovCmNsYXNzIFNlbGVjdG9yIHsKCgkvL1JlZ2V4ZXMgZm9yIHNwZWNpZmljaXR5IGNhbGN1bGF0aW9ucwoJY29uc3QgTk9OX0lEX0FUVFJJQlVURVNfQU5EX1BTRVVET19DTEFTU0VTX1JYID0gJy8KCShcLltcd10rKSAgICAgICAgICAgICAgICAgICAjIGNsYXNzZXMKCXwKCVxbKFx3KykgICAgICAgICAgICAgICAgICAgICAjIGF0dHJpYnV0ZXMKCXwKCShcOiggICAgICAgICAgICAgICAgICAgICAgICAjIHBzZXVkbyBjbGFzc2VzCgkJbGlua3x2aXNpdGVkfGFjdGl2ZQoJCXxob3Zlcnxmb2N1cwoJCXxsYW5nCgkJfHRhcmdldAoJCXxlbmFibGVkfGRpc2FibGVkfGNoZWNrZWR8aW5kZXRlcm1pbmF0ZQoJCXxyb290CgkJfG50aC1jaGlsZHxudGgtbGFzdC1jaGlsZHxudGgtb2YtdHlwZXxudGgtbGFzdC1vZi10eXBlCgkJfGZpcnN0LWNoaWxkfGxhc3QtY2hpbGR8Zmlyc3Qtb2YtdHlwZXxsYXN0LW9mLXR5cGUKCQl8b25seS1jaGlsZHxvbmx5LW9mLXR5cGUKCQl8ZW1wdHl8Y29udGFpbnMKCSkpCgkvaXgnOwoKCWNvbnN0IEVMRU1FTlRTX0FORF9QU0VVRE9fRUxFTUVOVFNfUlggPSAnLwoJKChefFtcc1wrXD5cfl0rKVtcd10rICAgIyBlbGVtZW50cwoJfAoJXDp7MSwyfSggICAgICAgICAgICAgICAgIyBwc2V1ZG8tZWxlbWVudHMKCQlhZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8c2VsZWN0aW9uCgkpKQoJL2l4JzsKCglwcml2YXRlICRzU2VsZWN0b3I7Cglwcml2YXRlICRpU3BlY2lmaWNpdHk7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzU2VsZWN0b3IsICRiQ2FsY3VsYXRlU3BlY2lmaWNpdHkgPSBmYWxzZSkgewoJCSR0aGlzLT5zZXRTZWxlY3Rvcigkc1NlbGVjdG9yKTsKCQlpZiAoJGJDYWxjdWxhdGVTcGVjaWZpY2l0eSkgewoJCQkkdGhpcy0+Z2V0U3BlY2lmaWNpdHkoKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFNlbGVjdG9yKCkgewoJCXJldHVybiAkdGhpcy0+c1NlbGVjdG9yOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRTZWxlY3Rvcigkc1NlbGVjdG9yKSB7CgkJJHRoaXMtPnNTZWxlY3RvciA9IHRyaW0oJHNTZWxlY3Rvcik7CgkJJHRoaXMtPmlTcGVjaWZpY2l0eSA9IG51bGw7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT5nZXRTZWxlY3RvcigpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRTcGVjaWZpY2l0eSgpIHsKCQlpZiAoJHRoaXMtPmlTcGVjaWZpY2l0eSA9PT0gbnVsbCkgewoJCQkkYSA9IDA7CgkJCS8vLyBAdG9kbyBzaG91bGQgZXhjbHVkZSBcIyBhcyB3ZWxsIGFzICIjIgoJCQkkYU1hdGNoZXMgPSBudWxsOwoJCQkkYiA9IHN1YnN0cl9jb3VudCgkdGhpcy0+c1NlbGVjdG9yLCAnIycpOwoJCQkkYyA9IHByZWdfbWF0Y2hfYWxsKHNlbGY6Ok5PTl9JRF9BVFRSSUJVVEVTX0FORF9QU0VVRE9fQ0xBU1NFU19SWCwgJHRoaXMtPnNTZWxlY3RvciwgJGFNYXRjaGVzKTsKCQkJJGQgPSBwcmVnX21hdGNoX2FsbChzZWxmOjpFTEVNRU5UU19BTkRfUFNFVURPX0VMRU1FTlRTX1JYLCAkdGhpcy0+c1NlbGVjdG9yLCAkYU1hdGNoZXMpOwoJCQkkdGhpcy0+aVNwZWNpZmljaXR5ID0gKCRhICogMTAwMCkgKyAoJGIgKiAxMDApICsgKCRjICogMTApICsgJGQ7CgkJfQoJCXJldHVybiAkdGhpcy0+aVNwZWNpZmljaXR5OwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Renderable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCmludGVyZmFjZSBSZW5kZXJhYmxlIHsKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk7CglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQgJG9PdXRwdXRGb3JtYXQpOwoJcHVibGljIGZ1bmN0aW9uIGdldExpbmVObygpOwp9]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Rule/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Rule/Rule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlOwoKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudGFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUmVuZGVyYWJsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFJ1bGVWYWx1ZUxpc3Q7CnVzZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxWYWx1ZTsKCi8qKgogKiBSdWxlU2V0cyBjb250YWlucyBSdWxlIG9iamVjdHMgd2hpY2ggYWx3YXlzIGhhdmUgYSBrZXkgYW5kIGEgdmFsdWUuCiAqIEluIENTUywgUnVsZXMgYXJlIGV4cHJlc3NlZCBhcyBmb2xsb3dzOiDigJxrZXk6IHZhbHVlWzBdWzBdIHZhbHVlWzBdWzFdLCB2YWx1ZVsxXVswXSB2YWx1ZVsxXVsxXTvigJ0KICovCmNsYXNzIFJ1bGUgaW1wbGVtZW50cyBSZW5kZXJhYmxlLCBDb21tZW50YWJsZSB7CgoJcHJpdmF0ZSAkc1J1bGU7Cglwcml2YXRlICRtVmFsdWU7Cglwcml2YXRlICRiSXNJbXBvcnRhbnQ7Cglwcml2YXRlICRhSWVIYWNrOwoJcHJvdGVjdGVkICRpTGluZU5vOwoJcHJvdGVjdGVkICRhQ29tbWVudHM7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzUnVsZSwgJGlMaW5lTm8gPSAwKSB7CgkJJHRoaXMtPnNSdWxlID0gJHNSdWxlOwoJCSR0aGlzLT5tVmFsdWUgPSBudWxsOwoJCSR0aGlzLT5iSXNJbXBvcnRhbnQgPSBmYWxzZTsKCQkkdGhpcy0+YUllSGFjayA9IGFycmF5KCk7CgkJJHRoaXMtPmlMaW5lTm8gPSAkaUxpbmVObzsKCQkkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXkoKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUpIHsKCQkkYUNvbW1lbnRzID0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCQkkb1J1bGUgPSBuZXcgUnVsZSgkb1BhcnNlclN0YXRlLT5wYXJzZUlkZW50aWZpZXIoKSwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CgkJJG9SdWxlLT5zZXRDb21tZW50cygkYUNvbW1lbnRzKTsKCQkkb1J1bGUtPmFkZENvbW1lbnRzKCRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCkpOwoJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJzonKTsKCQkkb1ZhbHVlID0gVmFsdWU6OnBhcnNlVmFsdWUoJG9QYXJzZXJTdGF0ZSwgc2VsZjo6bGlzdERlbGltaXRlckZvclJ1bGUoJG9SdWxlLT5nZXRSdWxlKCkpKTsKCQkkb1J1bGUtPnNldFZhbHVlKCRvVmFsdWUpOwoJCWlmICgkb1BhcnNlclN0YXRlLT5nZXRTZXR0aW5ncygpLT5iTGVuaWVudFBhcnNpbmcpIHsKCQkJd2hpbGUgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCdcXCcpKSB7CgkJCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lKCdcXCcpOwoJCQkJJG9SdWxlLT5hZGRJZUhhY2soJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgpKTsKCQkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJCX0KCQl9CgkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCQlpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJyEnKSkgewoJCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lKCchJyk7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJ2ltcG9ydGFudCcpOwoJCQkkb1J1bGUtPnNldElzSW1wb3J0YW50KHRydWUpOwoJCX0KCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwoJCXdoaWxlICgkb1BhcnNlclN0YXRlLT5jb21lcygnOycpKSB7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJzsnKTsKCQl9CgkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCgkJcmV0dXJuICRvUnVsZTsKCX0KCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsaXN0RGVsaW1pdGVyRm9yUnVsZSgkc1J1bGUpIHsKCQlpZiAocHJlZ19tYXRjaCgnL15mb250KCR8LSkvJywgJHNSdWxlKSkgewoJCQlyZXR1cm4gYXJyYXkoJywnLCAnLycsICcgJyk7CgkJfQoJCXJldHVybiBhcnJheSgnLCcsICcgJywgJy8nKTsKCX0KCgkvKioKCSAqIEByZXR1cm4gaW50CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRMaW5lTm8oKSB7CgkJcmV0dXJuICR0aGlzLT5pTGluZU5vOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRSdWxlKCRzUnVsZSkgewoJCSR0aGlzLT5zUnVsZSA9ICRzUnVsZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0UnVsZSgpIHsKCQlyZXR1cm4gJHRoaXMtPnNSdWxlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpIHsKCQlyZXR1cm4gJHRoaXMtPm1WYWx1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWUoJG1WYWx1ZSkgewoJCSR0aGlzLT5tVmFsdWUgPSAkbVZhbHVlOwoJfQoKCS8qKgoJICoJQGRlcHJlY2F0ZWQgT2xkLVN0eWxlIDItZGltZW5zaW9uYWwgYXJyYXkgZ2l2ZW4uIFJldGFpbmVkIGZvciAoc29tZSkgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkuIFVzZSBzZXRWYWx1ZSgpIGluc3RlYWQgYW5kIHdyYXBwIHRoZSB2YWx1ZSBpbnNpZGUgYSBSdWxlVmFsdWVMaXN0IGlmIG5lY2Vzc2FyeS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldFZhbHVlcygkYVNwYWNlU2VwYXJhdGVkVmFsdWVzKSB7CgkJJG9TcGFjZVNlcGFyYXRlZExpc3QgPSBudWxsOwoJCWlmIChjb3VudCgkYVNwYWNlU2VwYXJhdGVkVmFsdWVzKSA+IDEpIHsKCQkJJG9TcGFjZVNlcGFyYXRlZExpc3QgPSBuZXcgUnVsZVZhbHVlTGlzdCgnICcsICR0aGlzLT5pTGluZU5vKTsKCQl9CgkJZm9yZWFjaCAoJGFTcGFjZVNlcGFyYXRlZFZhbHVlcyBhcyAkYUNvbW1hU2VwYXJhdGVkVmFsdWVzKSB7CgkJCSRvQ29tbWFTZXBhcmF0ZWRMaXN0ID0gbnVsbDsKCQkJaWYgKGNvdW50KCRhQ29tbWFTZXBhcmF0ZWRWYWx1ZXMpID4gMSkgewoJCQkJJG9Db21tYVNlcGFyYXRlZExpc3QgPSBuZXcgUnVsZVZhbHVlTGlzdCgnLCcsICR0aGlzLT5pTGluZU5vKTsKCQkJfQoJCQlmb3JlYWNoICgkYUNvbW1hU2VwYXJhdGVkVmFsdWVzIGFzICRtVmFsdWUpIHsKCQkJCWlmICghJG9TcGFjZVNlcGFyYXRlZExpc3QgJiYgISRvQ29tbWFTZXBhcmF0ZWRMaXN0KSB7CgkJCQkJJHRoaXMtPm1WYWx1ZSA9ICRtVmFsdWU7CgkJCQkJcmV0dXJuICRtVmFsdWU7CgkJCQl9CgkJCQlpZiAoJG9Db21tYVNlcGFyYXRlZExpc3QpIHsKCQkJCQkkb0NvbW1hU2VwYXJhdGVkTGlzdC0+YWRkTGlzdENvbXBvbmVudCgkbVZhbHVlKTsKCQkJCX0gZWxzZSB7CgkJCQkJJG9TcGFjZVNlcGFyYXRlZExpc3QtPmFkZExpc3RDb21wb25lbnQoJG1WYWx1ZSk7CgkJCQl9CgkJCX0KCQkJaWYgKCEkb1NwYWNlU2VwYXJhdGVkTGlzdCkgewoJCQkJJHRoaXMtPm1WYWx1ZSA9ICRvQ29tbWFTZXBhcmF0ZWRMaXN0OwoJCQkJcmV0dXJuICRvQ29tbWFTZXBhcmF0ZWRMaXN0OwoJCQl9IGVsc2UgewoJCQkJJG9TcGFjZVNlcGFyYXRlZExpc3QtPmFkZExpc3RDb21wb25lbnQoJG9Db21tYVNlcGFyYXRlZExpc3QpOwoJCQl9CgkJfQoJCSR0aGlzLT5tVmFsdWUgPSAkb1NwYWNlU2VwYXJhdGVkTGlzdDsKCQlyZXR1cm4gJG9TcGFjZVNlcGFyYXRlZExpc3Q7Cgl9CgoJLyoqCgkgKglAZGVwcmVjYXRlZCBPbGQtU3R5bGUgMi1kaW1lbnNpb25hbCBhcnJheSByZXR1cm5lZC4gUmV0YWluZWQgZm9yIChzb21lKSBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS4gVXNlIGdldFZhbHVlKCkgaW5zdGVhZCBhbmQgY2hlY2sgZm9yIHRoZSBleGlzdGFuY2Ugb2YgYSAobmVzdGVkIHNldCBvZikgVmFsdWVMaXN0IG9iamVjdChzKS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlcygpIHsKCQlpZiAoISR0aGlzLT5tVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CgkJCXJldHVybiBhcnJheShhcnJheSgkdGhpcy0+bVZhbHVlKSk7CgkJfQoJCWlmICgkdGhpcy0+bVZhbHVlLT5nZXRMaXN0U2VwYXJhdG9yKCkgPT09ICcsJykgewoJCQlyZXR1cm4gYXJyYXkoJHRoaXMtPm1WYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKSk7CgkJfQoJCSRhUmVzdWx0ID0gYXJyYXkoKTsKCQlmb3JlYWNoICgkdGhpcy0+bVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpIGFzICRtVmFsdWUpIHsKCQkJaWYgKCEkbVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCB8fCAkbVZhbHVlLT5nZXRMaXN0U2VwYXJhdG9yKCkgIT09ICcsJykgewoJCQkJJGFSZXN1bHRbXSA9IGFycmF5KCRtVmFsdWUpOwoJCQkJY29udGludWU7CgkJCX0KCQkJaWYgKCR0aGlzLT5tVmFsdWUtPmdldExpc3RTZXBhcmF0b3IoKSA9PT0gJyAnIHx8IGNvdW50KCRhUmVzdWx0KSA9PT0gMCkgewoJCQkJJGFSZXN1bHRbXSA9IGFycmF5KCk7CgkJCX0KCQkJZm9yZWFjaCAoJG1WYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKSBhcyAkbVZhbHVlKSB7CgkJCQkkYVJlc3VsdFtjb3VudCgkYVJlc3VsdCkgLSAxXVtdID0gJG1WYWx1ZTsKCQkJfQoJCX0KCQlyZXR1cm4gJGFSZXN1bHQ7Cgl9CgoJLyoqCgkgKiBBZGRzIGEgdmFsdWUgdG8gdGhlIGV4aXN0aW5nIHZhbHVlLiBWYWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGlmIGEgUnVsZVZhbHVlTGlzdCBleGlzdHMgb2YgdGhlIGdpdmVuIHR5cGUuIE90aGVyd2lzZSwgdGhlIGV4aXN0aW5nIHZhbHVlIHdpbGwgYmUgd3JhcHBlZCBieSBvbmUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBhZGRWYWx1ZSgkbVZhbHVlLCAkc1R5cGUgPSAnICcpIHsKCQlpZiAoIWlzX2FycmF5KCRtVmFsdWUpKSB7CgkJCSRtVmFsdWUgPSBhcnJheSgkbVZhbHVlKTsKCQl9CgkJaWYgKCEkdGhpcy0+bVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCB8fCAkdGhpcy0+bVZhbHVlLT5nZXRMaXN0U2VwYXJhdG9yKCkgIT09ICRzVHlwZSkgewoJCQkkbUN1cnJlbnRWYWx1ZSA9ICR0aGlzLT5tVmFsdWU7CgkJCSR0aGlzLT5tVmFsdWUgPSBuZXcgUnVsZVZhbHVlTGlzdCgkc1R5cGUsICR0aGlzLT5pTGluZU5vKTsKCQkJaWYgKCRtQ3VycmVudFZhbHVlKSB7CgkJCQkkdGhpcy0+bVZhbHVlLT5hZGRMaXN0Q29tcG9uZW50KCRtQ3VycmVudFZhbHVlKTsKCQkJfQoJCX0KCQlmb3JlYWNoICgkbVZhbHVlIGFzICRtVmFsdWVJdGVtKSB7CgkJCSR0aGlzLT5tVmFsdWUtPmFkZExpc3RDb21wb25lbnQoJG1WYWx1ZUl0ZW0pOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gYWRkSWVIYWNrKCRpTW9kaWZpZXIpIHsKCQkkdGhpcy0+YUllSGFja1tdID0gJGlNb2RpZmllcjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0SWVIYWNrKGFycmF5ICRhTW9kaWZpZXJzKSB7CgkJJHRoaXMtPmFJZUhhY2sgPSAkYU1vZGlmaWVyczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0SWVIYWNrKCkgewoJCXJldHVybiAkdGhpcy0+YUllSGFjazsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0SXNJbXBvcnRhbnQoJGJJc0ltcG9ydGFudCkgewoJCSR0aGlzLT5iSXNJbXBvcnRhbnQgPSAkYklzSW1wb3J0YW50OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRJc0ltcG9ydGFudCgpIHsKCQlyZXR1cm4gJHRoaXMtPmJJc0ltcG9ydGFudDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpIHsKCQlyZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCgpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQgJG9PdXRwdXRGb3JtYXQpIHsKCQkkc1Jlc3VsdCA9ICJ7JHRoaXMtPnNSdWxlfTp7JG9PdXRwdXRGb3JtYXQtPnNwYWNlQWZ0ZXJSdWxlTmFtZSgpfSI7CgkJaWYgKCR0aGlzLT5tVmFsdWUgaW5zdGFuY2VvZiBWYWx1ZSkgeyAvL0NhbiBhbHNvIGJlIGEgVmFsdWVMaXN0CgkJCSRzUmVzdWx0IC49ICR0aGlzLT5tVmFsdWUtPnJlbmRlcigkb091dHB1dEZvcm1hdCk7CgkJfSBlbHNlIHsKCQkJJHNSZXN1bHQgLj0gJHRoaXMtPm1WYWx1ZTsKCQl9CgkJaWYgKCFlbXB0eSgkdGhpcy0+YUllSGFjaykpIHsKCQkJJHNSZXN1bHQgLj0gJyBcXCcgLiBpbXBsb2RlKCdcXCcsICR0aGlzLT5hSWVIYWNrKTsKCQl9CgkJaWYgKCR0aGlzLT5iSXNJbXBvcnRhbnQpIHsKCQkJJHNSZXN1bHQgLj0gJyAhaW1wb3J0YW50JzsKCQl9CgkJJHNSZXN1bHQgLj0gJzsnOwoJCXJldHVybiAkc1Jlc3VsdDsKCX0KCgkvKioKCSAqIEBwYXJhbSBhcnJheSAkYUNvbW1lbnRzIEFycmF5IG9mIGNvbW1lbnRzLgoJICovCglwdWJsaWMgZnVuY3Rpb24gYWRkQ29tbWVudHMoYXJyYXkgJGFDb21tZW50cykgewoJCSR0aGlzLT5hQ29tbWVudHMgPSBhcnJheV9tZXJnZSgkdGhpcy0+YUNvbW1lbnRzLCAkYUNvbW1lbnRzKTsKCX0KCgkvKioKCSAqIEByZXR1cm4gYXJyYXkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnRzKCkgewoJCXJldHVybiAkdGhpcy0+YUNvbW1lbnRzOwoJfQoKCS8qKgoJICogQHBhcmFtIGFycmF5ICRhQ29tbWVudHMgQXJyYXkgY29udGFpbmluZyBDb21tZW50IG9iamVjdHMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKSB7CgkJJHRoaXMtPmFDb21tZW50cyA9ICRhQ29tbWVudHM7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/RuleSet/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/RuleSet/AtRuleSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEF0UnVsZTsKCi8qKgogKiBBIFJ1bGVTZXQgY29uc3RydWN0ZWQgYnkgYW4gdW5rbm93biBALXJ1bGUuIEBmb250LWZhY2UgcnVsZXMgYXJlIHJlbmRlcmVkIGludG8gQXRSdWxlU2V0IG9iamVjdHMuCiAqLwpjbGFzcyBBdFJ1bGVTZXQgZXh0ZW5kcyBSdWxlU2V0IGltcGxlbWVudHMgQXRSdWxlIHsKCglwcml2YXRlICRzVHlwZTsKCXByaXZhdGUgJHNBcmdzOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc1R5cGUsICRzQXJncyA9ICcnLCAkaUxpbmVObyA9IDApIHsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCRpTGluZU5vKTsKCQkkdGhpcy0+c1R5cGUgPSAkc1R5cGU7CgkJJHRoaXMtPnNBcmdzID0gJHNBcmdzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhdFJ1bGVOYW1lKCkgewoJCXJldHVybiAkdGhpcy0+c1R5cGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGF0UnVsZUFyZ3MoKSB7CgkJcmV0dXJuICR0aGlzLT5zQXJnczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpIHsKCQlyZXR1cm4gJHRoaXMtPnJlbmRlcihuZXcgXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCgpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQgJG9PdXRwdXRGb3JtYXQpIHsKCQkkc0FyZ3MgPSAkdGhpcy0+c0FyZ3M7CgkJaWYoJHNBcmdzKSB7CgkJCSRzQXJncyA9ICcgJyAuICRzQXJnczsKCQl9CgkJJHNSZXN1bHQgPSAiQHskdGhpcy0+c1R5cGV9JHNBcmdzeyRvT3V0cHV0Rm9ybWF0LT5zcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSgpfXsiOwoJCSRzUmVzdWx0IC49IHBhcmVudDo6cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KTsKCQkkc1Jlc3VsdCAuPSAnfSc7CgkJcmV0dXJuICRzUmVzdWx0OwoJfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/RuleSet/DeclarationBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcUGFyc2VyU3RhdGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXE91dHB1dEV4Y2VwdGlvbjsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yOwp1c2UgU2FiYmVyd29ybVxDU1NcUnVsZVxSdWxlOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcUnVsZVZhbHVlTGlzdDsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFZhbHVlOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcU2l6ZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENvbG9yOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcVVJMOwoKLyoqCiAqIERlY2xhcmF0aW9uIGJsb2NrcyBhcmUgdGhlIHBhcnRzIG9mIGEgY3NzIGZpbGUgd2hpY2ggZGVub3RlIHRoZSBydWxlcyBiZWxvbmdpbmcgdG8gYSBzZWxlY3Rvci4KICogRGVjbGFyYXRpb24gYmxvY2tzIHVzdWFsbHkgYXBwZWFyIGRpcmVjdGx5IGluc2lkZSBhIERvY3VtZW50IG9yIGFub3RoZXIgQ1NTTGlzdCAobW9zdGx5IGEgTWVkaWFRdWVyeSkuCiAqLwpjbGFzcyBEZWNsYXJhdGlvbkJsb2NrIGV4dGVuZHMgUnVsZVNldCB7CgoJcHJpdmF0ZSAkYVNlbGVjdG9yczsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlMaW5lTm8gPSAwKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CgkJJHRoaXMtPmFTZWxlY3RvcnMgPSBhcnJheSgpOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSkgewoJCSRhQ29tbWVudHMgPSBhcnJheSgpOwoJCSRvUmVzdWx0ID0gbmV3IERlY2xhcmF0aW9uQmxvY2soJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CgkJJG9SZXN1bHQtPnNldFNlbGVjdG9yKCRvUGFyc2VyU3RhdGUtPmNvbnN1bWVVbnRpbCgneycsIGZhbHNlLCB0cnVlLCAkYUNvbW1lbnRzKSk7CgkJJG9SZXN1bHQtPnNldENvbW1lbnRzKCRhQ29tbWVudHMpOwoJCVJ1bGVTZXQ6OnBhcnNlUnVsZVNldCgkb1BhcnNlclN0YXRlLCAkb1Jlc3VsdCk7CgkJcmV0dXJuICRvUmVzdWx0OwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gc2V0U2VsZWN0b3JzKCRtU2VsZWN0b3IpIHsKCQlpZiAoaXNfYXJyYXkoJG1TZWxlY3RvcikpIHsKCQkJJHRoaXMtPmFTZWxlY3RvcnMgPSAkbVNlbGVjdG9yOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5hU2VsZWN0b3JzID0gZXhwbG9kZSgnLCcsICRtU2VsZWN0b3IpOwoJCX0KCQlmb3JlYWNoICgkdGhpcy0+YVNlbGVjdG9ycyBhcyAkaUtleSA9PiAkbVNlbGVjdG9yKSB7CgkJCWlmICghKCRtU2VsZWN0b3IgaW5zdGFuY2VvZiBTZWxlY3RvcikpIHsKCQkJCSR0aGlzLT5hU2VsZWN0b3JzWyRpS2V5XSA9IG5ldyBTZWxlY3RvcigkbVNlbGVjdG9yKTsKCQkJfQoJCX0KCX0KCgkvLyByZW1vdmUgb25lIG9mIHRoZSBzZWxlY3RvciBvZiB0aGUgYmxvY2sKCXB1YmxpYyBmdW5jdGlvbiByZW1vdmVTZWxlY3RvcigkbVNlbGVjdG9yKSB7CgkJaWYoJG1TZWxlY3RvciBpbnN0YW5jZW9mIFNlbGVjdG9yKSB7CgkJCSRtU2VsZWN0b3IgPSAkbVNlbGVjdG9yLT5nZXRTZWxlY3RvcigpOwoJCX0KCQlmb3JlYWNoKCR0aGlzLT5hU2VsZWN0b3JzIGFzICRpS2V5ID0+ICRvU2VsZWN0b3IpIHsKCQkJaWYoJG9TZWxlY3Rvci0+Z2V0U2VsZWN0b3IoKSA9PT0gJG1TZWxlY3RvcikgewoJCQkJdW5zZXQoJHRoaXMtPmFTZWxlY3RvcnNbJGlLZXldKTsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIEBkZXByZWNhdGVkIHVzZSBnZXRTZWxlY3RvcnMoKQoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0U2VsZWN0b3IoKSB7CgkJcmV0dXJuICR0aGlzLT5nZXRTZWxlY3RvcnMoKTsKCX0KCgkvKioKCSAqIEBkZXByZWNhdGVkIHVzZSBzZXRTZWxlY3RvcnMoKQoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0U2VsZWN0b3IoJG1TZWxlY3RvcikgewoJCSR0aGlzLT5zZXRTZWxlY3RvcnMoJG1TZWxlY3Rvcik7Cgl9CgoJLyoqCgkgKiBHZXQgc2VsZWN0b3JzLgoJICoKCSAqIEByZXR1cm4gU2VsZWN0b3JbXSBTZWxlY3RvcnMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRTZWxlY3RvcnMoKSB7CgkJcmV0dXJuICR0aGlzLT5hU2VsZWN0b3JzOwoJfQoKCS8qKgoJICogU3BsaXQgc2hvcnRoYW5kIGRlY2xhcmF0aW9ucyAoZS5nLiArbWFyZ2luKyBvciArZm9udCspIGludG8gdGhlaXIgY29uc3RpdHVlbnQgcGFydHMuCgkgKiAqLwoJcHVibGljIGZ1bmN0aW9uIGV4cGFuZFNob3J0aGFuZHMoKSB7CgkJLy8gYm9yZGVyIG11c3QgYmUgZXhwYW5kZWQgYmVmb3JlIGRpbWVuc2lvbnMKCQkkdGhpcy0+ZXhwYW5kQm9yZGVyU2hvcnRoYW5kKCk7CgkJJHRoaXMtPmV4cGFuZERpbWVuc2lvbnNTaG9ydGhhbmQoKTsKCQkkdGhpcy0+ZXhwYW5kRm9udFNob3J0aGFuZCgpOwoJCSR0aGlzLT5leHBhbmRCYWNrZ3JvdW5kU2hvcnRoYW5kKCk7CgkJJHRoaXMtPmV4cGFuZExpc3RTdHlsZVNob3J0aGFuZCgpOwoJfQoKCS8qKgoJICogQ3JlYXRlIHNob3J0aGFuZCBkZWNsYXJhdGlvbnMgKGUuZy4gK21hcmdpbisgb3IgK2ZvbnQrKSB3aGVuZXZlciBwb3NzaWJsZS4KCSAqICovCglwdWJsaWMgZnVuY3Rpb24gY3JlYXRlU2hvcnRoYW5kcygpIHsKCQkkdGhpcy0+Y3JlYXRlQmFja2dyb3VuZFNob3J0aGFuZCgpOwoJCSR0aGlzLT5jcmVhdGVEaW1lbnNpb25zU2hvcnRoYW5kKCk7CgkJLy8gYm9yZGVyIG11c3QgYmUgc2hvcnRlbmVkIGFmdGVyIGRpbWVuc2lvbnMgCgkJJHRoaXMtPmNyZWF0ZUJvcmRlclNob3J0aGFuZCgpOwoJCSR0aGlzLT5jcmVhdGVGb250U2hvcnRoYW5kKCk7CgkJJHRoaXMtPmNyZWF0ZUxpc3RTdHlsZVNob3J0aGFuZCgpOwoJfQoKCS8qKgoJICogU3BsaXQgc2hvcnRoYW5kIGJvcmRlciBkZWNsYXJhdGlvbnMgKGUuZy4gPHR0PmJvcmRlcjogMXB4IHJlZDs8L3R0PikKCSAqIEFkZGl0aW9uYWwgc3BsaXR0aW5nIGhhcHBlbnMgaW4gZXhwYW5kRGltZW5zaW9uc1Nob3J0aGFuZAoJICogTXVsdGlwbGUgYm9yZGVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYXMgb2YgMwoJICogKi8KCXB1YmxpYyBmdW5jdGlvbiBleHBhbmRCb3JkZXJTaG9ydGhhbmQoKSB7CgkJJGFCb3JkZXJSdWxlcyA9IGFycmF5KAoJCQknYm9yZGVyJywgJ2JvcmRlci1sZWZ0JywgJ2JvcmRlci1yaWdodCcsICdib3JkZXItdG9wJywgJ2JvcmRlci1ib3R0b20nCgkJKTsKCQkkYUJvcmRlclNpemVzID0gYXJyYXkoCgkJCSd0aGluJywgJ21lZGl1bScsICd0aGljaycKCQkpOwoJCSRhUnVsZXMgPSAkdGhpcy0+Z2V0UnVsZXNBc3NvYygpOwoJCWZvcmVhY2ggKCRhQm9yZGVyUnVsZXMgYXMgJHNCb3JkZXJSdWxlKSB7CgkJCWlmICghaXNzZXQoJGFSdWxlc1skc0JvcmRlclJ1bGVdKSkKCQkJCWNvbnRpbnVlOwoJCQkkb1J1bGUgPSAkYVJ1bGVzWyRzQm9yZGVyUnVsZV07CgkJCSRtUnVsZVZhbHVlID0gJG9SdWxlLT5nZXRWYWx1ZSgpOwoJCQkkYVZhbHVlcyA9IGFycmF5KCk7CgkJCWlmICghJG1SdWxlVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CgkJCQkkYVZhbHVlc1tdID0gJG1SdWxlVmFsdWU7CgkJCX0gZWxzZSB7CgkJCQkkYVZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwoJCQl9CgkJCWZvcmVhY2ggKCRhVmFsdWVzIGFzICRtVmFsdWUpIHsKCQkJCWlmICgkbVZhbHVlIGluc3RhbmNlb2YgVmFsdWUpIHsKCQkJCQkkbU5ld1ZhbHVlID0gY2xvbmUgJG1WYWx1ZTsKCQkJCX0gZWxzZSB7CgkJCQkJJG1OZXdWYWx1ZSA9ICRtVmFsdWU7CgkJCQl9CgkJCQlpZiAoJG1WYWx1ZSBpbnN0YW5jZW9mIFNpemUpIHsKCQkJCQkkc05ld1J1bGVOYW1lID0gJHNCb3JkZXJSdWxlIC4gIi13aWR0aCI7CgkJCQl9IGVsc2UgaWYgKCRtVmFsdWUgaW5zdGFuY2VvZiBDb2xvcikgewoJCQkJCSRzTmV3UnVsZU5hbWUgPSAkc0JvcmRlclJ1bGUgLiAiLWNvbG9yIjsKCQkJCX0gZWxzZSB7CgkJCQkJaWYgKGluX2FycmF5KCRtVmFsdWUsICRhQm9yZGVyU2l6ZXMpKSB7CgkJCQkJCSRzTmV3UnVsZU5hbWUgPSAkc0JvcmRlclJ1bGUgLiAiLXdpZHRoIjsKCQkJCQl9IGVsc2UvKiBpZihpbl9hcnJheSgkbVZhbHVlLCAkYUJvcmRlclN0eWxlcykpICovIHsKCQkJCQkJJHNOZXdSdWxlTmFtZSA9ICRzQm9yZGVyUnVsZSAuICItc3R5bGUiOwoJCQkJCX0KCQkJCX0KCQkJCSRvTmV3UnVsZSA9IG5ldyBSdWxlKCRzTmV3UnVsZU5hbWUsICR0aGlzLT5pTGluZU5vKTsKCQkJCSRvTmV3UnVsZS0+c2V0SXNJbXBvcnRhbnQoJG9SdWxlLT5nZXRJc0ltcG9ydGFudCgpKTsKCQkJCSRvTmV3UnVsZS0+YWRkVmFsdWUoYXJyYXkoJG1OZXdWYWx1ZSkpOwoJCQkJJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKCQkJfQoJCQkkdGhpcy0+cmVtb3ZlUnVsZSgkc0JvcmRlclJ1bGUpOwoJCX0KCX0KCgkvKioKCSAqIFNwbGl0IHNob3J0aGFuZCBkaW1lbnNpb25hbCBkZWNsYXJhdGlvbnMgKGUuZy4gPHR0Pm1hcmdpbjogMHB4IGF1dG87PC90dD4pCgkgKiBpbnRvIHRoZWlyIGNvbnN0aXR1ZW50IHBhcnRzLgoJICogSGFuZGxlcyBtYXJnaW4sIHBhZGRpbmcsIGJvcmRlci1jb2xvciwgYm9yZGVyLXN0eWxlIGFuZCBib3JkZXItd2lkdGguCgkgKiAqLwoJcHVibGljIGZ1bmN0aW9uIGV4cGFuZERpbWVuc2lvbnNTaG9ydGhhbmQoKSB7CgkJJGFFeHBhbnNpb25zID0gYXJyYXkoCgkJCSdtYXJnaW4nID0+ICdtYXJnaW4tJXMnLAoJCQkncGFkZGluZycgPT4gJ3BhZGRpbmctJXMnLAoJCQknYm9yZGVyLWNvbG9yJyA9PiAnYm9yZGVyLSVzLWNvbG9yJywKCQkJJ2JvcmRlci1zdHlsZScgPT4gJ2JvcmRlci0lcy1zdHlsZScsCgkJCSdib3JkZXItd2lkdGgnID0+ICdib3JkZXItJXMtd2lkdGgnCgkJKTsKCQkkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKCQlmb3JlYWNoICgkYUV4cGFuc2lvbnMgYXMgJHNQcm9wZXJ0eSA9PiAkc0V4cGFuZGVkKSB7CgkJCWlmICghaXNzZXQoJGFSdWxlc1skc1Byb3BlcnR5XSkpCgkJCQljb250aW51ZTsKCQkJJG9SdWxlID0gJGFSdWxlc1skc1Byb3BlcnR5XTsKCQkJJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CgkJCSRhVmFsdWVzID0gYXJyYXkoKTsKCQkJaWYgKCEkbVJ1bGVWYWx1ZSBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QpIHsKCQkJCSRhVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKCQkJfSBlbHNlIHsKCQkJCSRhVmFsdWVzID0gJG1SdWxlVmFsdWUtPmdldExpc3RDb21wb25lbnRzKCk7CgkJCX0KCQkJJHRvcCA9ICRyaWdodCA9ICRib3R0b20gPSAkbGVmdCA9IG51bGw7CgkJCXN3aXRjaCAoY291bnQoJGFWYWx1ZXMpKSB7CgkJCQljYXNlIDE6CgkJCQkJJHRvcCA9ICRyaWdodCA9ICRib3R0b20gPSAkbGVmdCA9ICRhVmFsdWVzWzBdOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAyOgoJCQkJCSR0b3AgPSAkYm90dG9tID0gJGFWYWx1ZXNbMF07CgkJCQkJJGxlZnQgPSAkcmlnaHQgPSAkYVZhbHVlc1sxXTsKCQkJCQlicmVhazsKCQkJCWNhc2UgMzoKCQkJCQkkdG9wID0gJGFWYWx1ZXNbMF07CgkJCQkJJGxlZnQgPSAkcmlnaHQgPSAkYVZhbHVlc1sxXTsKCQkJCQkkYm90dG9tID0gJGFWYWx1ZXNbMl07CgkJCQkJYnJlYWs7CgkJCQljYXNlIDQ6CgkJCQkJJHRvcCA9ICRhVmFsdWVzWzBdOwoJCQkJCSRyaWdodCA9ICRhVmFsdWVzWzFdOwoJCQkJCSRib3R0b20gPSAkYVZhbHVlc1syXTsKCQkJCQkkbGVmdCA9ICRhVmFsdWVzWzNdOwoJCQkJCWJyZWFrOwoJCQl9CgkJCWZvcmVhY2ggKGFycmF5KCd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnKSBhcyAkc1Bvc2l0aW9uKSB7CgkJCQkkb05ld1J1bGUgPSBuZXcgUnVsZShzcHJpbnRmKCRzRXhwYW5kZWQsICRzUG9zaXRpb24pLCAkdGhpcy0+aUxpbmVObyk7CgkJCQkkb05ld1J1bGUtPnNldElzSW1wb3J0YW50KCRvUnVsZS0+Z2V0SXNJbXBvcnRhbnQoKSk7CgkJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCR7JHNQb3NpdGlvbn0pOwoJCQkJJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKCQkJfQoJCQkkdGhpcy0+cmVtb3ZlUnVsZSgkc1Byb3BlcnR5KTsKCQl9Cgl9CgoJLyoqCgkgKiBDb252ZXJ0IHNob3J0aGFuZCBmb250IGRlY2xhcmF0aW9ucwoJICogKGUuZy4gPHR0PmZvbnQ6IDMwMCBpdGFsaWMgMTFweC8xNHB4IHZlcmRhbmEsIGhlbHZldGljYSwgc2Fucy1zZXJpZjs8L3R0PikKCSAqIGludG8gdGhlaXIgY29uc3RpdHVlbnQgcGFydHMuCgkgKiAqLwoJcHVibGljIGZ1bmN0aW9uIGV4cGFuZEZvbnRTaG9ydGhhbmQoKSB7CgkJJGFSdWxlcyA9ICR0aGlzLT5nZXRSdWxlc0Fzc29jKCk7CgkJaWYgKCFpc3NldCgkYVJ1bGVzWydmb250J10pKQoJCQlyZXR1cm47CgkJJG9SdWxlID0gJGFSdWxlc1snZm9udCddOwoJCS8vIHJlc2V0IHByb3BlcnRpZXMgdG8gJ25vcm1hbCcgcGVyIGh0dHA6Ly93d3cudzMub3JnL1RSLzIxL2ZvbnRzLmh0bWwjZm9udC1zaG9ydGhhbmQKCQkkYUZvbnRQcm9wZXJ0aWVzID0gYXJyYXkoCgkJCSdmb250LXN0eWxlJyA9PiAnbm9ybWFsJywKCQkJJ2ZvbnQtdmFyaWFudCcgPT4gJ25vcm1hbCcsCgkJCSdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsCgkJCSdmb250LXNpemUnID0+ICdub3JtYWwnLAoJCQknbGluZS1oZWlnaHQnID0+ICdub3JtYWwnCgkJKTsKCQkkbVJ1bGVWYWx1ZSA9ICRvUnVsZS0+Z2V0VmFsdWUoKTsKCQkkYVZhbHVlcyA9IGFycmF5KCk7CgkJaWYgKCEkbVJ1bGVWYWx1ZSBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QpIHsKCQkJJGFWYWx1ZXNbXSA9ICRtUnVsZVZhbHVlOwoJCX0gZWxzZSB7CgkJCSRhVmFsdWVzID0gJG1SdWxlVmFsdWUtPmdldExpc3RDb21wb25lbnRzKCk7CgkJfQoJCWZvcmVhY2ggKCRhVmFsdWVzIGFzICRtVmFsdWUpIHsKCQkJaWYgKCEkbVZhbHVlIGluc3RhbmNlb2YgVmFsdWUpIHsKCQkJCSRtVmFsdWUgPSBtYl9zdHJ0b2xvd2VyKCRtVmFsdWUpOwoJCQl9CgkJCWlmIChpbl9hcnJheSgkbVZhbHVlLCBhcnJheSgnbm9ybWFsJywgJ2luaGVyaXQnKSkpIHsKCQkJCWZvcmVhY2ggKGFycmF5KCdmb250LXN0eWxlJywgJ2ZvbnQtd2VpZ2h0JywgJ2ZvbnQtdmFyaWFudCcpIGFzICRzUHJvcGVydHkpIHsKCQkJCQlpZiAoIWlzc2V0KCRhRm9udFByb3BlcnRpZXNbJHNQcm9wZXJ0eV0pKSB7CgkJCQkJCSRhRm9udFByb3BlcnRpZXNbJHNQcm9wZXJ0eV0gPSAkbVZhbHVlOwoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlIGlmIChpbl9hcnJheSgkbVZhbHVlLCBhcnJheSgnaXRhbGljJywgJ29ibGlxdWUnKSkpIHsKCQkJCSRhRm9udFByb3BlcnRpZXNbJ2ZvbnQtc3R5bGUnXSA9ICRtVmFsdWU7CgkJCX0gZWxzZSBpZiAoJG1WYWx1ZSA9PSAnc21hbGwtY2FwcycpIHsKCQkJCSRhRm9udFByb3BlcnRpZXNbJ2ZvbnQtdmFyaWFudCddID0gJG1WYWx1ZTsKCQkJfSBlbHNlIGlmICgKCQkJCQlpbl9hcnJheSgkbVZhbHVlLCBhcnJheSgnYm9sZCcsICdib2xkZXInLCAnbGlnaHRlcicpKQoJCQkJCXx8ICgkbVZhbHVlIGluc3RhbmNlb2YgU2l6ZQoJCQkJCSYmIGluX2FycmF5KCRtVmFsdWUtPmdldFNpemUoKSwgcmFuZ2UoMTAwLCA5MDAsIDEwMCkpKQoJCQkpIHsKCQkJCSRhRm9udFByb3BlcnRpZXNbJ2ZvbnQtd2VpZ2h0J10gPSAkbVZhbHVlOwoJCQl9IGVsc2UgaWYgKCRtVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0ICYmICRtVmFsdWUtPmdldExpc3RTZXBhcmF0b3IoKSA9PSAnLycpIHsKCQkJCWxpc3QoJG9TaXplLCAkb0hlaWdodCkgPSAkbVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwoJCQkJJGFGb250UHJvcGVydGllc1snZm9udC1zaXplJ10gPSAkb1NpemU7CgkJCQkkYUZvbnRQcm9wZXJ0aWVzWydsaW5lLWhlaWdodCddID0gJG9IZWlnaHQ7CgkJCX0gZWxzZSBpZiAoJG1WYWx1ZSBpbnN0YW5jZW9mIFNpemUgJiYgJG1WYWx1ZS0+Z2V0VW5pdCgpICE9PSBudWxsKSB7CgkJCQkkYUZvbnRQcm9wZXJ0aWVzWydmb250LXNpemUnXSA9ICRtVmFsdWU7CgkJCX0gZWxzZSB7CgkJCQkkYUZvbnRQcm9wZXJ0aWVzWydmb250LWZhbWlseSddID0gJG1WYWx1ZTsKCQkJfQoJCX0KCQlmb3JlYWNoICgkYUZvbnRQcm9wZXJ0aWVzIGFzICRzUHJvcGVydHkgPT4gJG1WYWx1ZSkgewoJCQkkb05ld1J1bGUgPSBuZXcgUnVsZSgkc1Byb3BlcnR5LCAkdGhpcy0+aUxpbmVObyk7CgkJCSRvTmV3UnVsZS0+YWRkVmFsdWUoJG1WYWx1ZSk7CgkJCSRvTmV3UnVsZS0+c2V0SXNJbXBvcnRhbnQoJG9SdWxlLT5nZXRJc0ltcG9ydGFudCgpKTsKCQkJJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKCQl9CgkJJHRoaXMtPnJlbW92ZVJ1bGUoJ2ZvbnQnKTsKCX0KCgkvKgoJICogQ29udmVydCBzaG9ydGhhbmQgYmFja2dyb3VuZCBkZWNsYXJhdGlvbnMKCSAqIChlLmcuIDx0dD5iYWNrZ3JvdW5kOiB1cmwoImNoZXNzLnBuZyIpIGdyYXkgNTAlIHJlcGVhdCBmaXhlZDs8L3R0PikKCSAqIGludG8gdGhlaXIgY29uc3RpdHVlbnQgcGFydHMuCgkgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIxL2NvbG9ycy5odG1sI3Byb3BkZWYtYmFja2dyb3VuZAoJICogKi8KCglwdWJsaWMgZnVuY3Rpb24gZXhwYW5kQmFja2dyb3VuZFNob3J0aGFuZCgpIHsKCQkkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKCQlpZiAoIWlzc2V0KCRhUnVsZXNbJ2JhY2tncm91bmQnXSkpCgkJCXJldHVybjsKCQkkb1J1bGUgPSAkYVJ1bGVzWydiYWNrZ3JvdW5kJ107CgkJJGFCZ1Byb3BlcnRpZXMgPSBhcnJheSgKCQkJJ2JhY2tncm91bmQtY29sb3InID0+IGFycmF5KCd0cmFuc3BhcmVudCcpLCAnYmFja2dyb3VuZC1pbWFnZScgPT4gYXJyYXkoJ25vbmUnKSwKCQkJJ2JhY2tncm91bmQtcmVwZWF0JyA9PiBhcnJheSgncmVwZWF0JyksICdiYWNrZ3JvdW5kLWF0dGFjaG1lbnQnID0+IGFycmF5KCdzY3JvbGwnKSwKCQkJJ2JhY2tncm91bmQtcG9zaXRpb24nID0+IGFycmF5KG5ldyBTaXplKDAsICclJywgbnVsbCwgZmFsc2UsICR0aGlzLT5pTGluZU5vKSwgbmV3IFNpemUoMCwgJyUnLCBudWxsLCBmYWxzZSwgJHRoaXMtPmlMaW5lTm8pKQoJCSk7CgkJJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CgkJJGFWYWx1ZXMgPSBhcnJheSgpOwoJCWlmICghJG1SdWxlVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CgkJCSRhVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKCQl9IGVsc2UgewoJCQkkYVZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwoJCX0KCQlpZiAoY291bnQoJGFWYWx1ZXMpID09IDEgJiYgJGFWYWx1ZXNbMF0gPT0gJ2luaGVyaXQnKSB7CgkJCWZvcmVhY2ggKCRhQmdQcm9wZXJ0aWVzIGFzICRzUHJvcGVydHkgPT4gJG1WYWx1ZSkgewoJCQkJJG9OZXdSdWxlID0gbmV3IFJ1bGUoJHNQcm9wZXJ0eSwgJHRoaXMtPmlMaW5lTm8pOwoJCQkJJG9OZXdSdWxlLT5hZGRWYWx1ZSgnaW5oZXJpdCcpOwoJCQkJJG9OZXdSdWxlLT5zZXRJc0ltcG9ydGFudCgkb1J1bGUtPmdldElzSW1wb3J0YW50KCkpOwoJCQkJJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKCQkJfQoJCQkkdGhpcy0+cmVtb3ZlUnVsZSgnYmFja2dyb3VuZCcpOwoJCQlyZXR1cm47CgkJfQoJCSRpTnVtQmdQb3MgPSAwOwoJCWZvcmVhY2ggKCRhVmFsdWVzIGFzICRtVmFsdWUpIHsKCQkJaWYgKCEkbVZhbHVlIGluc3RhbmNlb2YgVmFsdWUpIHsKCQkJCSRtVmFsdWUgPSBtYl9zdHJ0b2xvd2VyKCRtVmFsdWUpOwoJCQl9CgkJCWlmICgkbVZhbHVlIGluc3RhbmNlb2YgVVJMKSB7CgkJCQkkYUJnUHJvcGVydGllc1snYmFja2dyb3VuZC1pbWFnZSddID0gJG1WYWx1ZTsKCQkJfSBlbHNlIGlmICgkbVZhbHVlIGluc3RhbmNlb2YgQ29sb3IpIHsKCQkJCSRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAkbVZhbHVlOwoJCQl9IGVsc2UgaWYgKGluX2FycmF5KCRtVmFsdWUsIGFycmF5KCdzY3JvbGwnLCAnZml4ZWQnKSkpIHsKCQkJCSRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLWF0dGFjaG1lbnQnXSA9ICRtVmFsdWU7CgkJCX0gZWxzZSBpZiAoaW5fYXJyYXkoJG1WYWx1ZSwgYXJyYXkoJ3JlcGVhdCcsICduby1yZXBlYXQnLCAncmVwZWF0LXgnLCAncmVwZWF0LXknKSkpIHsKCQkJCSRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLXJlcGVhdCddID0gJG1WYWx1ZTsKCQkJfSBlbHNlIGlmIChpbl9hcnJheSgkbVZhbHVlLCBhcnJheSgnbGVmdCcsICdjZW50ZXInLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbScpKQoJCQkJCXx8ICRtVmFsdWUgaW5zdGFuY2VvZiBTaXplCgkJCSkgewoJCQkJaWYgKCRpTnVtQmdQb3MgPT0gMCkgewoJCQkJCSRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLXBvc2l0aW9uJ11bMF0gPSAkbVZhbHVlOwoJCQkJCSRhQmdQcm9wZXJ0aWVzWydiYWNrZ3JvdW5kLXBvc2l0aW9uJ11bMV0gPSAnY2VudGVyJzsKCQkJCX0gZWxzZSB7CgkJCQkJJGFCZ1Byb3BlcnRpZXNbJ2JhY2tncm91bmQtcG9zaXRpb24nXVskaU51bUJnUG9zXSA9ICRtVmFsdWU7CgkJCQl9CgkJCQkkaU51bUJnUG9zKys7CgkJCX0KCQl9CgkJZm9yZWFjaCAoJGFCZ1Byb3BlcnRpZXMgYXMgJHNQcm9wZXJ0eSA9PiAkbVZhbHVlKSB7CgkJCSRvTmV3UnVsZSA9IG5ldyBSdWxlKCRzUHJvcGVydHksICR0aGlzLT5pTGluZU5vKTsKCQkJJG9OZXdSdWxlLT5zZXRJc0ltcG9ydGFudCgkb1J1bGUtPmdldElzSW1wb3J0YW50KCkpOwoJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCRtVmFsdWUpOwoJCQkkdGhpcy0+YWRkUnVsZSgkb05ld1J1bGUpOwoJCX0KCQkkdGhpcy0+cmVtb3ZlUnVsZSgnYmFja2dyb3VuZCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBleHBhbmRMaXN0U3R5bGVTaG9ydGhhbmQoKSB7CgkJJGFMaXN0UHJvcGVydGllcyA9IGFycmF5KAoJCQknbGlzdC1zdHlsZS10eXBlJyA9PiAnZGlzYycsCgkJCSdsaXN0LXN0eWxlLXBvc2l0aW9uJyA9PiAnb3V0c2lkZScsCgkJCSdsaXN0LXN0eWxlLWltYWdlJyA9PiAnbm9uZScKCQkpOwoJCSRhTGlzdFN0eWxlVHlwZXMgPSBhcnJheSgKCQkJJ25vbmUnLCAnZGlzYycsICdjaXJjbGUnLCAnc3F1YXJlJywgJ2RlY2ltYWwtbGVhZGluZy16ZXJvJywgJ2RlY2ltYWwnLAoJCQknbG93ZXItcm9tYW4nLCAndXBwZXItcm9tYW4nLCAnbG93ZXItZ3JlZWsnLCAnbG93ZXItYWxwaGEnLCAnbG93ZXItbGF0aW4nLAoJCQkndXBwZXItYWxwaGEnLCAndXBwZXItbGF0aW4nLCAnaGVicmV3JywgJ2FybWVuaWFuJywgJ2dlb3JnaWFuJywgJ2Nqay1pZGVvZ3JhcGhpYycsCgkJCSdoaXJhZ2FuYScsICdoaXJhLWdhbmEtaXJvaGEnLCAna2F0YWthbmEtaXJvaGEnLCAna2F0YWthbmEnCgkJKTsKCQkkYUxpc3RTdHlsZVBvc2l0aW9ucyA9IGFycmF5KAoJCQknaW5zaWRlJywgJ291dHNpZGUnCgkJKTsKCQkkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKCQlpZiAoIWlzc2V0KCRhUnVsZXNbJ2xpc3Qtc3R5bGUnXSkpCgkJCXJldHVybjsKCQkkb1J1bGUgPSAkYVJ1bGVzWydsaXN0LXN0eWxlJ107CgkJJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CgkJJGFWYWx1ZXMgPSBhcnJheSgpOwoJCWlmICghJG1SdWxlVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CgkJCSRhVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKCQl9IGVsc2UgewoJCQkkYVZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwoJCX0KCQlpZiAoY291bnQoJGFWYWx1ZXMpID09IDEgJiYgJGFWYWx1ZXNbMF0gPT0gJ2luaGVyaXQnKSB7CgkJCWZvcmVhY2ggKCRhTGlzdFByb3BlcnRpZXMgYXMgJHNQcm9wZXJ0eSA9PiAkbVZhbHVlKSB7CgkJCQkkb05ld1J1bGUgPSBuZXcgUnVsZSgkc1Byb3BlcnR5LCAkdGhpcy0+aUxpbmVObyk7CgkJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCdpbmhlcml0Jyk7CgkJCQkkb05ld1J1bGUtPnNldElzSW1wb3J0YW50KCRvUnVsZS0+Z2V0SXNJbXBvcnRhbnQoKSk7CgkJCQkkdGhpcy0+YWRkUnVsZSgkb05ld1J1bGUpOwoJCQl9CgkJCSR0aGlzLT5yZW1vdmVSdWxlKCdsaXN0LXN0eWxlJyk7CgkJCXJldHVybjsKCQl9CgkJZm9yZWFjaCAoJGFWYWx1ZXMgYXMgJG1WYWx1ZSkgewoJCQlpZiAoISRtVmFsdWUgaW5zdGFuY2VvZiBWYWx1ZSkgewoJCQkJJG1WYWx1ZSA9IG1iX3N0cnRvbG93ZXIoJG1WYWx1ZSk7CgkJCX0KCQkJaWYgKCRtVmFsdWUgaW5zdGFuY2VvZiBVcmwpIHsKCQkJCSRhTGlzdFByb3BlcnRpZXNbJ2xpc3Qtc3R5bGUtaW1hZ2UnXSA9ICRtVmFsdWU7CgkJCX0gZWxzZSBpZiAoaW5fYXJyYXkoJG1WYWx1ZSwgJGFMaXN0U3R5bGVUeXBlcykpIHsKCQkJCSRhTGlzdFByb3BlcnRpZXNbJ2xpc3Qtc3R5bGUtdHlwZXMnXSA9ICRtVmFsdWU7CgkJCX0gZWxzZSBpZiAoaW5fYXJyYXkoJG1WYWx1ZSwgJGFMaXN0U3R5bGVQb3NpdGlvbnMpKSB7CgkJCQkkYUxpc3RQcm9wZXJ0aWVzWydsaXN0LXN0eWxlLXBvc2l0aW9uJ10gPSAkbVZhbHVlOwoJCQl9CgkJfQoJCWZvcmVhY2ggKCRhTGlzdFByb3BlcnRpZXMgYXMgJHNQcm9wZXJ0eSA9PiAkbVZhbHVlKSB7CgkJCSRvTmV3UnVsZSA9IG5ldyBSdWxlKCRzUHJvcGVydHksICR0aGlzLT5pTGluZU5vKTsKCQkJJG9OZXdSdWxlLT5zZXRJc0ltcG9ydGFudCgkb1J1bGUtPmdldElzSW1wb3J0YW50KCkpOwoJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCRtVmFsdWUpOwoJCQkkdGhpcy0+YWRkUnVsZSgkb05ld1J1bGUpOwoJCX0KCQkkdGhpcy0+cmVtb3ZlUnVsZSgnbGlzdC1zdHlsZScpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTaG9ydGhhbmRQcm9wZXJ0aWVzKGFycmF5ICRhUHJvcGVydGllcywgJHNTaG9ydGhhbmQpIHsKCQkkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKCQkkYU5ld1ZhbHVlcyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoJGFQcm9wZXJ0aWVzIGFzICRzUHJvcGVydHkpIHsKCQkJaWYgKCFpc3NldCgkYVJ1bGVzWyRzUHJvcGVydHldKSkKCQkJCWNvbnRpbnVlOwoJCQkkb1J1bGUgPSAkYVJ1bGVzWyRzUHJvcGVydHldOwoJCQlpZiAoISRvUnVsZS0+Z2V0SXNJbXBvcnRhbnQoKSkgewoJCQkJJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CgkJCQkkYVZhbHVlcyA9IGFycmF5KCk7CgkJCQlpZiAoISRtUnVsZVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCkgewoJCQkJCSRhVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKCQkJCX0gZWxzZSB7CgkJCQkJJGFWYWx1ZXMgPSAkbVJ1bGVWYWx1ZS0+Z2V0TGlzdENvbXBvbmVudHMoKTsKCQkJCX0KCQkJCWZvcmVhY2ggKCRhVmFsdWVzIGFzICRtVmFsdWUpIHsKCQkJCQkkYU5ld1ZhbHVlc1tdID0gJG1WYWx1ZTsKCQkJCX0KCQkJCSR0aGlzLT5yZW1vdmVSdWxlKCRzUHJvcGVydHkpOwoJCQl9CgkJfQoJCWlmIChjb3VudCgkYU5ld1ZhbHVlcykpIHsKCQkJJG9OZXdSdWxlID0gbmV3IFJ1bGUoJHNTaG9ydGhhbmQsICR0aGlzLT5pTGluZU5vKTsKCQkJZm9yZWFjaCAoJGFOZXdWYWx1ZXMgYXMgJG1WYWx1ZSkgewoJCQkJJG9OZXdSdWxlLT5hZGRWYWx1ZSgkbVZhbHVlKTsKCQkJfQoJCQkkdGhpcy0+YWRkUnVsZSgkb05ld1J1bGUpOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gY3JlYXRlQmFja2dyb3VuZFNob3J0aGFuZCgpIHsKCQkkYVByb3BlcnRpZXMgPSBhcnJheSgKCQkJJ2JhY2tncm91bmQtY29sb3InLCAnYmFja2dyb3VuZC1pbWFnZScsICdiYWNrZ3JvdW5kLXJlcGVhdCcsCgkJCSdiYWNrZ3JvdW5kLXBvc2l0aW9uJywgJ2JhY2tncm91bmQtYXR0YWNobWVudCcKCQkpOwoJCSR0aGlzLT5jcmVhdGVTaG9ydGhhbmRQcm9wZXJ0aWVzKCRhUHJvcGVydGllcywgJ2JhY2tncm91bmQnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY3JlYXRlTGlzdFN0eWxlU2hvcnRoYW5kKCkgewoJCSRhUHJvcGVydGllcyA9IGFycmF5KAoJCQknbGlzdC1zdHlsZS10eXBlJywgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nLCAnbGlzdC1zdHlsZS1pbWFnZScKCQkpOwoJCSR0aGlzLT5jcmVhdGVTaG9ydGhhbmRQcm9wZXJ0aWVzKCRhUHJvcGVydGllcywgJ2xpc3Qtc3R5bGUnKTsKCX0KCgkvKioKCSAqIENvbWJpbmUgYm9yZGVyLWNvbG9yLCBib3JkZXItc3R5bGUgYW5kIGJvcmRlci13aWR0aCBpbnRvIGJvcmRlcgoJICogU2hvdWxkIGJlIHJ1biBhZnRlciBjcmVhdGVfZGltZW5zaW9uc19zaG9ydGhhbmQhCgkgKiAqLwoJcHVibGljIGZ1bmN0aW9uIGNyZWF0ZUJvcmRlclNob3J0aGFuZCgpIHsKCQkkYVByb3BlcnRpZXMgPSBhcnJheSgKCQkJJ2JvcmRlci13aWR0aCcsICdib3JkZXItc3R5bGUnLCAnYm9yZGVyLWNvbG9yJwoJCSk7CgkJJHRoaXMtPmNyZWF0ZVNob3J0aGFuZFByb3BlcnRpZXMoJGFQcm9wZXJ0aWVzLCAnYm9yZGVyJyk7Cgl9CgoJLyoKCSAqIExvb2tzIGZvciBsb25nIGZvcm1hdCBDU1MgZGltZW5zaW9uYWwgcHJvcGVydGllcwoJICogKG1hcmdpbiwgcGFkZGluZywgYm9yZGVyLWNvbG9yLCBib3JkZXItc3R5bGUgYW5kIGJvcmRlci13aWR0aCkgCgkgKiBhbmQgY29udmVydHMgdGhlbSBpbnRvIHNob3J0aGFuZCBDU1MgcHJvcGVydGllcy4KCSAqICovCgoJcHVibGljIGZ1bmN0aW9uIGNyZWF0ZURpbWVuc2lvbnNTaG9ydGhhbmQoKSB7CgkJJGFQb3NpdGlvbnMgPSBhcnJheSgndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0Jyk7CgkJJGFFeHBhbnNpb25zID0gYXJyYXkoCgkJCSdtYXJnaW4nID0+ICdtYXJnaW4tJXMnLAoJCQkncGFkZGluZycgPT4gJ3BhZGRpbmctJXMnLAoJCQknYm9yZGVyLWNvbG9yJyA9PiAnYm9yZGVyLSVzLWNvbG9yJywKCQkJJ2JvcmRlci1zdHlsZScgPT4gJ2JvcmRlci0lcy1zdHlsZScsCgkJCSdib3JkZXItd2lkdGgnID0+ICdib3JkZXItJXMtd2lkdGgnCgkJKTsKCQkkYVJ1bGVzID0gJHRoaXMtPmdldFJ1bGVzQXNzb2MoKTsKCQlmb3JlYWNoICgkYUV4cGFuc2lvbnMgYXMgJHNQcm9wZXJ0eSA9PiAkc0V4cGFuZGVkKSB7CgkJCSRhRm9sZGFibGUgPSBhcnJheSgpOwoJCQlmb3JlYWNoICgkYVJ1bGVzIGFzICRzUnVsZU5hbWUgPT4gJG9SdWxlKSB7CgkJCQlmb3JlYWNoICgkYVBvc2l0aW9ucyBhcyAkc1Bvc2l0aW9uKSB7CgkJCQkJaWYgKCRzUnVsZU5hbWUgPT0gc3ByaW50Zigkc0V4cGFuZGVkLCAkc1Bvc2l0aW9uKSkgewoJCQkJCQkkYUZvbGRhYmxlWyRzUnVsZU5hbWVdID0gJG9SdWxlOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQkvLyBBbGwgZm91ciBkaW1lbnNpb25zIG11c3QgYmUgcHJlc2VudAoJCQlpZiAoY291bnQoJGFGb2xkYWJsZSkgPT0gNCkgewoJCQkJJGFWYWx1ZXMgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCAoJGFQb3NpdGlvbnMgYXMgJHNQb3NpdGlvbikgewoJCQkJCSRvUnVsZSA9ICRhUnVsZXNbc3ByaW50Zigkc0V4cGFuZGVkLCAkc1Bvc2l0aW9uKV07CgkJCQkJJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CgkJCQkJJGFSdWxlVmFsdWVzID0gYXJyYXkoKTsKCQkJCQlpZiAoISRtUnVsZVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCkgewoJCQkJCQkkYVJ1bGVWYWx1ZXNbXSA9ICRtUnVsZVZhbHVlOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRhUnVsZVZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwoJCQkJCX0KCQkJCQkkYVZhbHVlc1skc1Bvc2l0aW9uXSA9ICRhUnVsZVZhbHVlczsKCQkJCX0KCQkJCSRvTmV3UnVsZSA9IG5ldyBSdWxlKCRzUHJvcGVydHksICR0aGlzLT5pTGluZU5vKTsKCQkJCWlmICgoc3RyaW5nKSAkYVZhbHVlc1snbGVmdCddWzBdID09IChzdHJpbmcpICRhVmFsdWVzWydyaWdodCddWzBdKSB7CgkJCQkJaWYgKChzdHJpbmcpICRhVmFsdWVzWyd0b3AnXVswXSA9PSAoc3RyaW5nKSAkYVZhbHVlc1snYm90dG9tJ11bMF0pIHsKCQkJCQkJaWYgKChzdHJpbmcpICRhVmFsdWVzWyd0b3AnXVswXSA9PSAoc3RyaW5nKSAkYVZhbHVlc1snbGVmdCddWzBdKSB7CgkJCQkJCQkvLyBBbGwgNCBzaWRlcyBhcmUgZXF1YWwKCQkJCQkJCSRvTmV3UnVsZS0+YWRkVmFsdWUoJGFWYWx1ZXNbJ3RvcCddKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCS8vIFRvcCBhbmQgYm90dG9tIGFyZSBlcXVhbCwgbGVmdCBhbmQgcmlnaHQgYXJlIGVxdWFsCgkJCQkJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCRhVmFsdWVzWyd0b3AnXSk7CgkJCQkJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCRhVmFsdWVzWydsZWZ0J10pOwoJCQkJCQl9CgkJCQkJfSBlbHNlIHsKCQkJCQkJLy8gT25seSBsZWZ0IGFuZCByaWdodCBhcmUgZXF1YWwKCQkJCQkJJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1sndG9wJ10pOwoJCQkJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCRhVmFsdWVzWydsZWZ0J10pOwoJCQkJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCRhVmFsdWVzWydib3R0b20nXSk7CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQkvLyBObyBzaWRlcyBhcmUgZXF1YWwgCgkJCQkJJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1sndG9wJ10pOwoJCQkJCSRvTmV3UnVsZS0+YWRkVmFsdWUoJGFWYWx1ZXNbJ2xlZnQnXSk7CgkJCQkJJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYVZhbHVlc1snYm90dG9tJ10pOwoJCQkJCSRvTmV3UnVsZS0+YWRkVmFsdWUoJGFWYWx1ZXNbJ3JpZ2h0J10pOwoJCQkJfQoJCQkJJHRoaXMtPmFkZFJ1bGUoJG9OZXdSdWxlKTsKCQkJCWZvcmVhY2ggKCRhUG9zaXRpb25zIGFzICRzUG9zaXRpb24pIHsKCQkJCQkkdGhpcy0+cmVtb3ZlUnVsZShzcHJpbnRmKCRzRXhwYW5kZWQsICRzUG9zaXRpb24pKTsKCQkJCX0KCQkJfQoJCX0KCX0KCgkvKioKCSAqIExvb2tzIGZvciBsb25nIGZvcm1hdCBDU1MgZm9udCBwcm9wZXJ0aWVzIChlLmcuIDx0dD5mb250LXdlaWdodDwvdHQ+KSBhbmQgCgkgKiB0cmllcyB0byBjb252ZXJ0IHRoZW0gaW50byBhIHNob3J0aGFuZCBDU1MgPHR0PmZvbnQ8L3R0PiBwcm9wZXJ0eS4gCgkgKiBBdCBsZWFzdCBmb250LXNpemUgQU5EIGZvbnQtZmFtaWx5IG11c3QgYmUgcHJlc2VudCBpbiBvcmRlciB0byBjcmVhdGUgYSBzaG9ydGhhbmQgZGVjbGFyYXRpb24uCgkgKiAqLwoJcHVibGljIGZ1bmN0aW9uIGNyZWF0ZUZvbnRTaG9ydGhhbmQoKSB7CgkJJGFGb250UHJvcGVydGllcyA9IGFycmF5KAoJCQknZm9udC1zdHlsZScsICdmb250LXZhcmlhbnQnLCAnZm9udC13ZWlnaHQnLCAnZm9udC1zaXplJywgJ2xpbmUtaGVpZ2h0JywgJ2ZvbnQtZmFtaWx5JwoJCSk7CgkJJGFSdWxlcyA9ICR0aGlzLT5nZXRSdWxlc0Fzc29jKCk7CgkJaWYgKCFpc3NldCgkYVJ1bGVzWydmb250LXNpemUnXSkgfHwgIWlzc2V0KCRhUnVsZXNbJ2ZvbnQtZmFtaWx5J10pKSB7CgkJCXJldHVybjsKCQl9CgkJJG9OZXdSdWxlID0gbmV3IFJ1bGUoJ2ZvbnQnLCAkdGhpcy0+aUxpbmVObyk7CgkJZm9yZWFjaCAoYXJyYXkoJ2ZvbnQtc3R5bGUnLCAnZm9udC12YXJpYW50JywgJ2ZvbnQtd2VpZ2h0JykgYXMgJHNQcm9wZXJ0eSkgewoJCQlpZiAoaXNzZXQoJGFSdWxlc1skc1Byb3BlcnR5XSkpIHsKCQkJCSRvUnVsZSA9ICRhUnVsZXNbJHNQcm9wZXJ0eV07CgkJCQkkbVJ1bGVWYWx1ZSA9ICRvUnVsZS0+Z2V0VmFsdWUoKTsKCQkJCSRhVmFsdWVzID0gYXJyYXkoKTsKCQkJCWlmICghJG1SdWxlVmFsdWUgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CgkJCQkJJGFWYWx1ZXNbXSA9ICRtUnVsZVZhbHVlOwoJCQkJfSBlbHNlIHsKCQkJCQkkYVZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwoJCQkJfQoJCQkJaWYgKCRhVmFsdWVzWzBdICE9PSAnbm9ybWFsJykgewoJCQkJCSRvTmV3UnVsZS0+YWRkVmFsdWUoJGFWYWx1ZXNbMF0pOwoJCQkJfQoJCQl9CgkJfQoJCS8vIEdldCB0aGUgZm9udC1zaXplIHZhbHVlCgkJJG9SdWxlID0gJGFSdWxlc1snZm9udC1zaXplJ107CgkJJG1SdWxlVmFsdWUgPSAkb1J1bGUtPmdldFZhbHVlKCk7CgkJJGFGU1ZhbHVlcyA9IGFycmF5KCk7CgkJaWYgKCEkbVJ1bGVWYWx1ZSBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QpIHsKCQkJJGFGU1ZhbHVlc1tdID0gJG1SdWxlVmFsdWU7CgkJfSBlbHNlIHsKCQkJJGFGU1ZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwoJCX0KCQkvLyBCdXQgd2FpdCB0byBrbm93IGlmIHdlIGhhdmUgbGluZS1oZWlnaHQgdG8gYWRkIGl0CgkJaWYgKGlzc2V0KCRhUnVsZXNbJ2xpbmUtaGVpZ2h0J10pKSB7CgkJCSRvUnVsZSA9ICRhUnVsZXNbJ2xpbmUtaGVpZ2h0J107CgkJCSRtUnVsZVZhbHVlID0gJG9SdWxlLT5nZXRWYWx1ZSgpOwoJCQkkYUxIVmFsdWVzID0gYXJyYXkoKTsKCQkJaWYgKCEkbVJ1bGVWYWx1ZSBpbnN0YW5jZW9mIFJ1bGVWYWx1ZUxpc3QpIHsKCQkJCSRhTEhWYWx1ZXNbXSA9ICRtUnVsZVZhbHVlOwoJCQl9IGVsc2UgewoJCQkJJGFMSFZhbHVlcyA9ICRtUnVsZVZhbHVlLT5nZXRMaXN0Q29tcG9uZW50cygpOwoJCQl9CgkJCWlmICgkYUxIVmFsdWVzWzBdICE9PSAnbm9ybWFsJykgewoJCQkJJHZhbCA9IG5ldyBSdWxlVmFsdWVMaXN0KCcvJywgJHRoaXMtPmlMaW5lTm8pOwoJCQkJJHZhbC0+YWRkTGlzdENvbXBvbmVudCgkYUZTVmFsdWVzWzBdKTsKCQkJCSR2YWwtPmFkZExpc3RDb21wb25lbnQoJGFMSFZhbHVlc1swXSk7CgkJCQkkb05ld1J1bGUtPmFkZFZhbHVlKCR2YWwpOwoJCQl9CgkJfSBlbHNlIHsKCQkJJG9OZXdSdWxlLT5hZGRWYWx1ZSgkYUZTVmFsdWVzWzBdKTsKCQl9CgkJJG9SdWxlID0gJGFSdWxlc1snZm9udC1mYW1pbHknXTsKCQkkbVJ1bGVWYWx1ZSA9ICRvUnVsZS0+Z2V0VmFsdWUoKTsKCQkkYUZGVmFsdWVzID0gYXJyYXkoKTsKCQlpZiAoISRtUnVsZVZhbHVlIGluc3RhbmNlb2YgUnVsZVZhbHVlTGlzdCkgewoJCQkkYUZGVmFsdWVzW10gPSAkbVJ1bGVWYWx1ZTsKCQl9IGVsc2UgewoJCQkkYUZGVmFsdWVzID0gJG1SdWxlVmFsdWUtPmdldExpc3RDb21wb25lbnRzKCk7CgkJfQoJCSRvRkZWYWx1ZSA9IG5ldyBSdWxlVmFsdWVMaXN0KCcsJywgJHRoaXMtPmlMaW5lTm8pOwoJCSRvRkZWYWx1ZS0+c2V0TGlzdENvbXBvbmVudHMoJGFGRlZhbHVlcyk7CgkJJG9OZXdSdWxlLT5hZGRWYWx1ZSgkb0ZGVmFsdWUpOwoKCQkkdGhpcy0+YWRkUnVsZSgkb05ld1J1bGUpOwoJCWZvcmVhY2ggKCRhRm9udFByb3BlcnRpZXMgYXMgJHNQcm9wZXJ0eSkgewoJCQkkdGhpcy0+cmVtb3ZlUnVsZSgkc1Byb3BlcnR5KTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQoKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcihcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0ICRvT3V0cHV0Rm9ybWF0KSB7CgkJaWYoY291bnQoJHRoaXMtPmFTZWxlY3RvcnMpID09PSAwKSB7CgkJCS8vIElmIGFsbCB0aGUgc2VsZWN0b3JzIGhhdmUgYmVlbiByZW1vdmVkLCB0aGlzIGRlY2xhcmF0aW9uIGJsb2NrIGJlY29tZXMgaW52YWxpZAoJCQl0aHJvdyBuZXcgT3V0cHV0RXhjZXB0aW9uKCJBdHRlbXB0IHRvIHByaW50IGRlY2xhcmF0aW9uIGJsb2NrIHdpdGggbWlzc2luZyBzZWxlY3RvciIsICR0aGlzLT5pTGluZU5vKTsKCQl9CgkJJHNSZXN1bHQgPSAkb091dHB1dEZvcm1hdC0+c0JlZm9yZURlY2xhcmF0aW9uQmxvY2s7CgkJJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPmltcGxvZGUoJG9PdXRwdXRGb3JtYXQtPnNwYWNlQmVmb3JlU2VsZWN0b3JTZXBhcmF0b3IoKSAuICcsJyAuICRvT3V0cHV0Rm9ybWF0LT5zcGFjZUFmdGVyU2VsZWN0b3JTZXBhcmF0b3IoKSwgJHRoaXMtPmFTZWxlY3RvcnMpOwoJCSRzUmVzdWx0IC49ICRvT3V0cHV0Rm9ybWF0LT5zQWZ0ZXJEZWNsYXJhdGlvbkJsb2NrU2VsZWN0b3JzOwoJCSRzUmVzdWx0IC49ICRvT3V0cHV0Rm9ybWF0LT5zcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSgpIC4gJ3snOwoJCSRzUmVzdWx0IC49IHBhcmVudDo6cmVuZGVyKCRvT3V0cHV0Rm9ybWF0KTsKCQkkc1Jlc3VsdCAuPSAnfSc7CgkJJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNBZnRlckRlY2xhcmF0aW9uQmxvY2s7CgkJcmV0dXJuICRzUmVzdWx0OwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/RuleSet/RuleSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXENvbW1lbnRcQ29tbWVudGFibGU7CnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xSZW5kZXJhYmxlOwp1c2UgU2FiYmVyd29ybVxDU1NcUnVsZVxSdWxlOwoKLyoqCiAqIFJ1bGVTZXQgaXMgYSBnZW5lcmljIHN1cGVyY2xhc3MgZGVub3RpbmcgcnVsZXMuIFRoZSB0eXBpY2FsIGV4YW1wbGUgZm9yIHJ1bGUgc2V0cyBhcmUgZGVjbGFyYXRpb24gYmxvY2suCiAqIEhvd2V2ZXIsIHVua25vd24gQXQtUnVsZXMgKGxpa2UgQGZvbnQtZmFjZSkgYXJlIGFsc28gcnVsZSBzZXRzLgogKi8KYWJzdHJhY3QgY2xhc3MgUnVsZVNldCBpbXBsZW1lbnRzIFJlbmRlcmFibGUsIENvbW1lbnRhYmxlIHsKCglwcml2YXRlICRhUnVsZXM7Cglwcm90ZWN0ZWQgJGlMaW5lTm87Cglwcm90ZWN0ZWQgJGFDb21tZW50czsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlMaW5lTm8gPSAwKSB7CgkJJHRoaXMtPmFSdWxlcyA9IGFycmF5KCk7CgkJJHRoaXMtPmlMaW5lTm8gPSAkaUxpbmVObzsKCQkkdGhpcy0+YUNvbW1lbnRzID0gYXJyYXkoKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUnVsZVNldChQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlLCBSdWxlU2V0ICRvUnVsZVNldCkgewoJCXdoaWxlICgkb1BhcnNlclN0YXRlLT5jb21lcygnOycpKSB7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJzsnKTsKCQl9CgkJd2hpbGUgKCEkb1BhcnNlclN0YXRlLT5jb21lcygnfScpKSB7CgkJCSRvUnVsZSA9IG51bGw7CgkJCWlmKCRvUGFyc2VyU3RhdGUtPmdldFNldHRpbmdzKCktPmJMZW5pZW50UGFyc2luZykgewoJCQkJdHJ5IHsKCQkJCQkkb1J1bGUgPSBSdWxlOjpwYXJzZSgkb1BhcnNlclN0YXRlKTsKCQkJCX0gY2F0Y2ggKFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbiAkZSkgewoJCQkJCXRyeSB7CgkJCQkJCSRzQ29uc3VtZSA9ICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVVbnRpbChhcnJheSgiXG4iLCAiOyIsICd9JyksIHRydWUpOwoJCQkJCQkvLyBXZSBuZWVkIHRvIOKAnHVuZmluZOKAnSB0aGUgbWF0Y2hlcyB0byB0aGUgZW5kIG9mIHRoZSBydWxlU2V0IGFzIHRoaXMgd2lsbCBiZSBtYXRjaGVkIGxhdGVyCgkJCQkJCWlmKCRvUGFyc2VyU3RhdGUtPnN0cmVxbChzdWJzdHIoJHNDb25zdW1lLCAtMSksICd9JykpIHsKCQkJCQkJCSRvUGFyc2VyU3RhdGUtPmJhY2t0cmFjaygxKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCXdoaWxlICgkb1BhcnNlclN0YXRlLT5jb21lcygnOycpKSB7CgkJCQkJCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnOycpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfSBjYXRjaCAoVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uICRlKSB7CgkJCQkJCS8vIFdl4oCZdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4gSnVzdCBjbG9zZSB0aGUgUnVsZVNldC4KCQkJCQkJcmV0dXJuOwoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlIHsKCQkJCSRvUnVsZSA9IFJ1bGU6OnBhcnNlKCRvUGFyc2VyU3RhdGUpOwoJCQl9CgkJCWlmKCRvUnVsZSkgewoJCQkJJG9SdWxlU2V0LT5hZGRSdWxlKCRvUnVsZSk7CgkJCX0KCQl9CgkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnfScpOwoJfQoKCS8qKgoJICogQHJldHVybiBpbnQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldExpbmVObygpIHsKCQlyZXR1cm4gJHRoaXMtPmlMaW5lTm87Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFkZFJ1bGUoUnVsZSAkb1J1bGUsIFJ1bGUgJG9TaWJsaW5nID0gbnVsbCkgewoJCSRzUnVsZSA9ICRvUnVsZS0+Z2V0UnVsZSgpOwoJCWlmKCFpc3NldCgkdGhpcy0+YVJ1bGVzWyRzUnVsZV0pKSB7CgkJCSR0aGlzLT5hUnVsZXNbJHNSdWxlXSA9IGFycmF5KCk7CgkJfQoKCQkkaVBvc2l0aW9uID0gY291bnQoJHRoaXMtPmFSdWxlc1skc1J1bGVdKTsKCgkJaWYgKCRvU2libGluZyAhPT0gbnVsbCkgewoJCQkkaVNpYmxpbmdQb3MgPSBhcnJheV9zZWFyY2goJG9TaWJsaW5nLCAkdGhpcy0+YVJ1bGVzWyRzUnVsZV0sIHRydWUpOwoJCQlpZiAoJGlTaWJsaW5nUG9zICE9PSBmYWxzZSkgewoJCQkJJGlQb3NpdGlvbiA9ICRpU2libGluZ1BvczsKCQkJfQoJCX0KCgkJYXJyYXlfc3BsaWNlKCR0aGlzLT5hUnVsZXNbJHNSdWxlXSwgJGlQb3NpdGlvbiwgMCwgYXJyYXkoJG9SdWxlKSk7Cgl9CgoJLyoqCgkgKiBSZXR1cm5zIGFsbCBydWxlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcnVsZSBuYW1lCgkgKiBAcGFyYW0gKG51bGx8c3RyaW5nfFJ1bGUpICRtUnVsZSBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IuIElmIG51bGwsIHJldHVybnMgYWxsIHJ1bGVzLiBpZiB0aGUgcGF0dGVybiBlbmRzIHdpdGggYSBkYXNoLCBhbGwgcnVsZXMgc3RhcnRpbmcgd2l0aCB0aGUgcGF0dGVybiBhcmUgcmV0dXJuZWQgYXMgd2VsbCBhcyBvbmUgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gd2l0aCB0aGUgZGFzaCBleGNsdWRlZC4gcGFzc2luZyBhIFJ1bGUgYmVoYXZlcyBsaWtlIGNhbGxpbmcgZ2V0UnVsZXMoJG1SdWxlLT5nZXRSdWxlKCkpLgoJICogQGV4YW1wbGUgJG9SdWxlU2V0LT5nZXRSdWxlcygnZm9udC0nKSAvL3JldHVybnMgYW4gYXJyYXkgb2YgYWxsIHJ1bGVzIGVpdGhlciBiZWdpbm5pbmcgd2l0aCBmb250LSBvciBtYXRjaGluZyBmb250LgoJICogQGV4YW1wbGUgJG9SdWxlU2V0LT5nZXRSdWxlcygnZm9udCcpIC8vcmV0dXJucyBhcnJheSgwID0+ICRvUnVsZSwg4oCmKSBvciBhcnJheSgpLgoJICogQHJldHVybiBSdWxlW10gUnVsZXMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRSdWxlcygkbVJ1bGUgPSBudWxsKSB7CgkJaWYgKCRtUnVsZSBpbnN0YW5jZW9mIFJ1bGUpIHsKCQkJJG1SdWxlID0gJG1SdWxlLT5nZXRSdWxlKCk7CgkJfQoJCSRhUmVzdWx0ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR0aGlzLT5hUnVsZXMgYXMgJHNOYW1lID0+ICRhUnVsZXMpIHsKCQkJLy8gRWl0aGVyIG5vIHNlYXJjaCBydWxlIGlzIGdpdmVuIG9yIHRoZSBzZWFyY2ggcnVsZSBtYXRjaGVzIHRoZSBmb3VuZCBydWxlIGV4YWN0bHkgb3IgdGhlIHNlYXJjaCBydWxlIGVuZHMgaW4g4oCcLeKAnSBhbmQgdGhlIGZvdW5kIHJ1bGUgc3RhcnRzIHdpdGggdGhlIHNlYXJjaCBydWxlLgoJCQlpZighJG1SdWxlIHx8ICRzTmFtZSA9PT0gJG1SdWxlIHx8IChzdHJycG9zKCRtUnVsZSwgJy0nKSA9PT0gc3RybGVuKCRtUnVsZSkgLSBzdHJsZW4oJy0nKSAmJiAoc3RycG9zKCRzTmFtZSwgJG1SdWxlKSA9PT0gMCB8fCAkc05hbWUgPT09IHN1YnN0cigkbVJ1bGUsIDAsIC0xKSkpKSB7CgkJCQkkYVJlc3VsdCA9IGFycmF5X21lcmdlKCRhUmVzdWx0LCAkYVJ1bGVzKTsKCQkJfQoJCX0KCQlyZXR1cm4gJGFSZXN1bHQ7Cgl9CgoJLyoqCgkgKiBPdmVycmlkZSBhbGwgdGhlIHJ1bGVzIG9mIHRoaXMgc2V0LgoJICogQHBhcmFtIFJ1bGVbXSAkYVJ1bGVzIFRoZSBydWxlcyB0byBvdmVycmlkZSB3aXRoLgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0UnVsZXMoYXJyYXkgJGFSdWxlcykgewoJCSR0aGlzLT5hUnVsZXMgPSBhcnJheSgpOwoJCWZvcmVhY2ggKCRhUnVsZXMgYXMgJHJ1bGUpIHsKCQkJJHRoaXMtPmFkZFJ1bGUoJHJ1bGUpOwoJCX0KCX0KCgkvKioKCSAqIFJldHVybnMgYWxsIHJ1bGVzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXR0ZXJuIGFuZCByZXR1cm5zIHRoZW0gaW4gYW4gYXNzb2NpYXRpdmUgYXJyYXkgd2l0aCB0aGUgcnVsZeKAmXMgbmFtZSBhcyBrZXlzLiBUaGlzIG1ldGhvZCBleGlzdHMgbWFpbmx5IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBhbmQgaXMgcmVhbGx5IG9ubHkgcGFydGlhbGx5IHVzZWZ1bC4KCSAqIEBwYXJhbSAoc3RyaW5nKSAkbVJ1bGUgcGF0dGVybiB0byBzZWFyY2ggZm9yLiBJZiBudWxsLCByZXR1cm5zIGFsbCBydWxlcy4gaWYgdGhlIHBhdHRlcm4gZW5kcyB3aXRoIGEgZGFzaCwgYWxsIHJ1bGVzIHN0YXJ0aW5nIHdpdGggdGhlIHBhdHRlcm4gYXJlIHJldHVybmVkIGFzIHdlbGwgYXMgb25lIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIHdpdGggdGhlIGRhc2ggZXhjbHVkZWQuIHBhc3NpbmcgYSBSdWxlIGJlaGF2ZXMgbGlrZSBjYWxsaW5nIGdldFJ1bGVzKCRtUnVsZS0+Z2V0UnVsZSgpKS4KCSAqIE5vdGU6IFRoaXMgbWV0aG9kIGxvc2VzIHNvbWUgaW5mb3JtYXRpb246IENhbGxpbmcgdGhpcyAod2l0aCBhbiBhcmd1bWVudCBvZiAnYmFja2dyb3VuZC0nKSBvbiBhIGRlY2xhcmF0aW9uIGJsb2NrIGxpa2UgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgYmFja2dyb3VuZC1jb2xvcjsgcmdiYSgwLCAxMjcsIDAsIDAuNyk7IH0gd2lsbCBvbmx5IHlpZWxkIGFuIGFzc29jaWF0aXZlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJnYmEtdmFsdWVkIHJ1bGUgd2hpbGUgQGxpbmt7Z2V0UnVsZXMoKX0gd291bGQgeWllbGQgYW4gaW5kZXhlZCBhcnJheSBjb250YWluaW5nIGJvdGguCgkgKiBAcmV0dXJuIFJ1bGVbXSBSdWxlcy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldFJ1bGVzQXNzb2MoJG1SdWxlID0gbnVsbCkgewoJCSRhUmVzdWx0ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR0aGlzLT5nZXRSdWxlcygkbVJ1bGUpIGFzICRvUnVsZSkgewoJCQkkYVJlc3VsdFskb1J1bGUtPmdldFJ1bGUoKV0gPSAkb1J1bGU7CgkJfQoJCXJldHVybiAkYVJlc3VsdDsKCX0KCgkvKioKCSAqIFJlbW92ZSBhIHJ1bGUgZnJvbSB0aGlzIFJ1bGVTZXQuIFRoaXMgYWNjZXB0cyBhbGwgdGhlIHBvc3NpYmxlIHZhbHVlcyB0aGF0IEBsaW5re2dldFJ1bGVzKCl9IGFjY2VwdHMuIElmIGdpdmVuIGEgUnVsZSwgaXQgd2lsbCBvbmx5IHJlbW92ZSB0aGlzIHBhcnRpY3VsYXIgcnVsZSAoYnkgaWRlbnRpdHkpLiBJZiBnaXZlbiBhIG5hbWUsIGl0IHdpbGwgcmVtb3ZlIGFsbCBydWxlcyBieSB0aGF0IG5hbWUuIE5vdGU6IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gcHJlLXYuMi4wIGJlaGF2aW91ciBvZiBQSFAtQ1NTLVBhcnNlciwgd2hlcmUgcGFzc2luZyBhIFJ1bGUgaW5zdGFuY2Ugd291bGQgcmVtb3ZlIGFsbCBydWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUuIFRvIGdldCB0aGUgb2xkIGJlaHZhaW91ciwgdXNlIHJlbW92ZVJ1bGUoJG9SdWxlLT5nZXRSdWxlKCkpLgoJICogQHBhcmFtIChudWxsfHN0cmluZ3xSdWxlKSAkbVJ1bGUgcGF0dGVybiB0byByZW1vdmUuIElmICRtUnVsZSBpcyBudWxsLCBhbGwgcnVsZXMgYXJlIHJlbW92ZWQuIElmIHRoZSBwYXR0ZXJuIGVuZHMgaW4gYSBkYXNoLCBhbGwgcnVsZXMgc3RhcnRpbmcgd2l0aCB0aGUgcGF0dGVybiBhcmUgcmVtb3ZlZCBhcyB3ZWxsIGFzIG9uZSBtYXRjaGluZyB0aGUgcGF0dGVybiB3aXRoIHRoZSBkYXNoIGV4Y2x1ZGVkLiBQYXNzaW5nIGEgUnVsZSBiZWhhdmVzIG1hdGNoZXMgYnkgaWRlbnRpdHkuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiByZW1vdmVSdWxlKCRtUnVsZSkgewoJCWlmKCRtUnVsZSBpbnN0YW5jZW9mIFJ1bGUpIHsKCQkJJHNSdWxlID0gJG1SdWxlLT5nZXRSdWxlKCk7CgkJCWlmKCFpc3NldCgkdGhpcy0+YVJ1bGVzWyRzUnVsZV0pKSB7CgkJCQlyZXR1cm47CgkJCX0KCQkJZm9yZWFjaCgkdGhpcy0+YVJ1bGVzWyRzUnVsZV0gYXMgJGlLZXkgPT4gJG9SdWxlKSB7CgkJCQlpZigkb1J1bGUgPT09ICRtUnVsZSkgewoJCQkJCXVuc2V0KCR0aGlzLT5hUnVsZXNbJHNSdWxlXVskaUtleV0pOwoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJZm9yZWFjaCgkdGhpcy0+YVJ1bGVzIGFzICRzTmFtZSA9PiAkYVJ1bGVzKSB7CgkJCQkvLyBFaXRoZXIgbm8gc2VhcmNoIHJ1bGUgaXMgZ2l2ZW4gb3IgdGhlIHNlYXJjaCBydWxlIG1hdGNoZXMgdGhlIGZvdW5kIHJ1bGUgZXhhY3RseSBvciB0aGUgc2VhcmNoIHJ1bGUgZW5kcyBpbiDigJwt4oCdIGFuZCB0aGUgZm91bmQgcnVsZSBzdGFydHMgd2l0aCB0aGUgc2VhcmNoIHJ1bGUgb3IgZXF1YWxzIGl0ICh3aXRob3V0IHRoZSB0cmFpbGluZyBkYXNoKS4KCQkJCWlmKCEkbVJ1bGUgfHwgJHNOYW1lID09PSAkbVJ1bGUgfHwgKHN0cnJwb3MoJG1SdWxlLCAnLScpID09PSBzdHJsZW4oJG1SdWxlKSAtIHN0cmxlbignLScpICYmIChzdHJwb3MoJHNOYW1lLCAkbVJ1bGUpID09PSAwIHx8ICRzTmFtZSA9PT0gc3Vic3RyKCRtUnVsZSwgMCwgLTEpKSkpIHsKCQkJCQl1bnNldCgkdGhpcy0+YVJ1bGVzWyRzTmFtZV0pOwoJCQkJfQoJCQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkgewoJCSRzUmVzdWx0ID0gJyc7CgkJJGJJc0ZpcnN0ID0gdHJ1ZTsKCQlmb3JlYWNoICgkdGhpcy0+YVJ1bGVzIGFzICRhUnVsZXMpIHsKCQkJZm9yZWFjaCgkYVJ1bGVzIGFzICRvUnVsZSkgewoJCQkJJHNSZW5kZXJlZCA9ICRvT3V0cHV0Rm9ybWF0LT5zYWZlbHkoZnVuY3Rpb24oKSB1c2UgKCRvUnVsZSwgJG9PdXRwdXRGb3JtYXQpIHsKCQkJCQlyZXR1cm4gJG9SdWxlLT5yZW5kZXIoJG9PdXRwdXRGb3JtYXQtPm5leHRMZXZlbCgpKTsKCQkJCX0pOwoJCQkJaWYoJHNSZW5kZXJlZCA9PT0gbnVsbCkgewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoJCQkJaWYoJGJJc0ZpcnN0KSB7CgkJCQkJJGJJc0ZpcnN0ID0gZmFsc2U7CgkJCQkJJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPm5leHRMZXZlbCgpLT5zcGFjZUJlZm9yZVJ1bGVzKCk7CgkJCQl9IGVsc2UgewoJCQkJCSRzUmVzdWx0IC49ICRvT3V0cHV0Rm9ybWF0LT5uZXh0TGV2ZWwoKS0+c3BhY2VCZXR3ZWVuUnVsZXMoKTsKCQkJCX0KCQkJCSRzUmVzdWx0IC49ICRzUmVuZGVyZWQ7CgkJCX0KCQl9CgkJCgkJaWYoISRiSXNGaXJzdCkgewoJCQkvLyBIYWQgc29tZSBvdXRwdXQKCQkJJHNSZXN1bHQgLj0gJG9PdXRwdXRGb3JtYXQtPnNwYWNlQWZ0ZXJSdWxlcygpOwoJCX0KCgkJcmV0dXJuICRvT3V0cHV0Rm9ybWF0LT5yZW1vdmVMYXN0U2VtaWNvbG9uKCRzUmVzdWx0KTsKCX0KCgkvKioKCSAqIEBwYXJhbSBhcnJheSAkYUNvbW1lbnRzIEFycmF5IG9mIGNvbW1lbnRzLgoJICovCglwdWJsaWMgZnVuY3Rpb24gYWRkQ29tbWVudHMoYXJyYXkgJGFDb21tZW50cykgewoJCSR0aGlzLT5hQ29tbWVudHMgPSBhcnJheV9tZXJnZSgkdGhpcy0+YUNvbW1lbnRzLCAkYUNvbW1lbnRzKTsKCX0KCgkvKioKCSAqIEByZXR1cm4gYXJyYXkKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldENvbW1lbnRzKCkgewoJCXJldHVybiAkdGhpcy0+YUNvbW1lbnRzOwoJfQoKCS8qKgoJICogQHBhcmFtIGFycmF5ICRhQ29tbWVudHMgQXJyYXkgY29udGFpbmluZyBDb21tZW50IG9iamVjdHMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZXRDb21tZW50cyhhcnJheSAkYUNvbW1lbnRzKSB7CgkJJHRoaXMtPmFDb21tZW50cyA9ICRhQ29tbWVudHM7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCnVzZSBTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGU7CgovKioKICogUGFyc2VyIHNldHRpbmdzIGNsYXNzLgogKgogKiBDb25maWd1cmUgcGFyc2VyIGJlaGF2aW91ciBoZXJlLgogKi8KY2xhc3MgU2V0dGluZ3MgewoJLyoqCgkqIE11bHRpLWJ5dGUgc3RyaW5nIHN1cHBvcnQuIElmIHRydWUgKG1ic3RyaW5nIGV4dGVuc2lvbiBtdXN0IGJlIGVuYWJsZWQpLCB3aWxsIHVzZSAoc2xvd2VyKSBtYl9zdHJsZW4sIG1iX2NvbnZlcnRfY2FzZSwgbWJfc3Vic3RyIGFuZCBtYl9zdHJwb3MgZnVuY3Rpb25zLiBPdGhlcndpc2UsIHRoZSBub3JtYWwgKEFTQ0lJLU9ubHkpIGZ1bmN0aW9ucyB3aWxsIGJlIHVzZWQuCgkqLwoJcHVibGljICRiTXVsdGlieXRlU3VwcG9ydDsKCgkvKioKCSogVGhlIGRlZmF1bHQgY2hhcnNldCBmb3IgdGhlIENTUyBpZiBubyBgQGNoYXJzZXRgIHJ1bGUgaXMgZm91bmQuIERlZmF1bHRzIHRvIHV0Zi04LgoJKi8KCXB1YmxpYyAkc0RlZmF1bHRDaGFyc2V0ID0gJ3V0Zi04JzsKCgkvKioKCSogTGVuaWVudCBwYXJzaW5nLiBXaGVuIHVzZWQgKHdoaWNoIGlzIHRydWUgYnkgZGVmYXVsdCksIHRoZSBwYXJzZXIgd2lsbCBub3QgY2hva2Ugb24gdW5leHBlY3RlZCB0b2tlbnMgYnV0IHNpbXBseSBpZ25vcmUgdGhlbS4KCSovCglwdWJsaWMgJGJMZW5pZW50UGFyc2luZyA9IHRydWU7CgoJcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKCQkkdGhpcy0+Yk11bHRpYnl0ZVN1cHBvcnQgPSBleHRlbnNpb25fbG9hZGVkKCdtYnN0cmluZycpOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKCkgewoJCXJldHVybiBuZXcgU2V0dGluZ3MoKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHdpdGhNdWx0aWJ5dGVTdXBwb3J0KCRiTXVsdGlieXRlU3VwcG9ydCA9IHRydWUpIHsKCQkkdGhpcy0+Yk11bHRpYnl0ZVN1cHBvcnQgPSAkYk11bHRpYnl0ZVN1cHBvcnQ7CgkJcmV0dXJuICR0aGlzOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gd2l0aERlZmF1bHRDaGFyc2V0KCRzRGVmYXVsdENoYXJzZXQpIHsKCQkkdGhpcy0+c0RlZmF1bHRDaGFyc2V0ID0gJHNEZWZhdWx0Q2hhcnNldDsKCQlyZXR1cm4gJHRoaXM7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiB3aXRoTGVuaWVudFBhcnNpbmcoJGJMZW5pZW50UGFyc2luZyA9IHRydWUpIHsKCQkkdGhpcy0+YkxlbmllbnRQYXJzaW5nID0gJGJMZW5pZW50UGFyc2luZzsKCQlyZXR1cm4gJHRoaXM7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBiZVN0cmljdCgpIHsKCQlyZXR1cm4gJHRoaXMtPndpdGhMZW5pZW50UGFyc2luZyhmYWxzZSk7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/CalcFunction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CgpjbGFzcyBDYWxjRnVuY3Rpb24gZXh0ZW5kcyBDU1NGdW5jdGlvbiB7Cgljb25zdCBUX09QRVJBTkQgID0gMTsKCWNvbnN0IFRfT1BFUkFUT1IgPSAyOwoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSkgewoJCSRhT3BlcmF0b3JzID0gYXJyYXkoJysnLCAnLScsICcqJywgJy8nKTsKCQkkc0Z1bmN0aW9uID0gdHJpbSgkb1BhcnNlclN0YXRlLT5jb25zdW1lVW50aWwoJygnLCBmYWxzZSwgdHJ1ZSkpOwoJCSRvQ2FsY0xpc3QgPSBuZXcgQ2FsY1J1bGVWYWx1ZUxpc3QoJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CgkJJG9MaXN0ID0gbmV3IFJ1bGVWYWx1ZUxpc3QoJywnLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCQkkaU5lc3RpbmdMZXZlbCA9IDA7CgkJJGlMYXN0Q29tcG9uZW50VHlwZSA9IE5VTEw7CgkJd2hpbGUoISRvUGFyc2VyU3RhdGUtPmNvbWVzKCcpJykgfHwgJGlOZXN0aW5nTGV2ZWwgPiAwKSB7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJCWlmICgkb1BhcnNlclN0YXRlLT5jb21lcygnKCcpKSB7CgkJCQkkaU5lc3RpbmdMZXZlbCsrOwoJCQkJJG9DYWxjTGlzdC0+YWRkTGlzdENvbXBvbmVudCgkb1BhcnNlclN0YXRlLT5jb25zdW1lKDEpKTsKCQkJCWNvbnRpbnVlOwoJCQl9IGVsc2UgaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCcpJykpIHsKCQkJCSRpTmVzdGluZ0xldmVsLS07CgkJCQkkb0NhbGNMaXN0LT5hZGRMaXN0Q29tcG9uZW50KCRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoMSkpOwoJCQkJY29udGludWU7CgkJCX0KCQkJaWYgKCRpTGFzdENvbXBvbmVudFR5cGUgIT0gQ2FsY0Z1bmN0aW9uOjpUX09QRVJBTkQpIHsKCQkJCSRvVmFsID0gVmFsdWU6OnBhcnNlUHJpbWl0aXZlVmFsdWUoJG9QYXJzZXJTdGF0ZSk7CgkJCQkkb0NhbGNMaXN0LT5hZGRMaXN0Q29tcG9uZW50KCRvVmFsKTsKCQkJCSRpTGFzdENvbXBvbmVudFR5cGUgPSBDYWxjRnVuY3Rpb246OlRfT1BFUkFORDsKCQkJfSBlbHNlIHsKCQkJCWlmIChpbl9hcnJheSgkb1BhcnNlclN0YXRlLT5wZWVrKCksICRhT3BlcmF0b3JzKSkgewoJCQkJCWlmICgoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0nKSB8fCAkb1BhcnNlclN0YXRlLT5jb21lcygnKycpKSkgewoJCQkJCQlpZiAoJG9QYXJzZXJTdGF0ZS0+cGVlaygxLCAtMSkgIT0gJyAnIHx8ICEoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0gJykgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJysgJykpKSB7CgkJCQkJCQl0aHJvdyBuZXcgVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uKCIgeyRvUGFyc2VyU3RhdGUtPnBlZWsoKX0gIiwgJG9QYXJzZXJTdGF0ZS0+cGVlaygxLCAtMSkgLiAkb1BhcnNlclN0YXRlLT5wZWVrKDIpLCAnbGl0ZXJhbCcsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwoJCQkJCQl9CgkJCQkJfQoJCQkJCSRvQ2FsY0xpc3QtPmFkZExpc3RDb21wb25lbnQoJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgxKSk7CgkJCQkJJGlMYXN0Q29tcG9uZW50VHlwZSA9IENhbGNGdW5jdGlvbjo6VF9PUEVSQVRPUjsKCQkJCX0gZWxzZSB7CgkJCQkJdGhyb3cgbmV3IFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbigKCQkJCQkJc3ByaW50ZigKCQkJCQkJCSdOZXh0IHRva2VuIHdhcyBleHBlY3RlZCB0byBiZSBhbiBvcGVyYW5kIG9mIHR5cGUgJXMuIEluc3RlYWQgIiVzIiB3YXMgZm91bmQuJywKCQkJCQkJCWltcGxvZGUoJywgJywgJGFPcGVyYXRvcnMpLAoJCQkJCQkJJG9WYWwKCQkJCQkJKSwKCQkJCQkJJycsCgkJCQkJCSdjdXN0b20nLAoJCQkJCQkkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpCgkJCQkJKTsKCQkJCX0KCQkJfQoJCX0KCQkkb0xpc3QtPmFkZExpc3RDb21wb25lbnQoJG9DYWxjTGlzdCk7CgkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnKScpOwoJCXJldHVybiBuZXcgQ2FsY0Z1bmN0aW9uKCRzRnVuY3Rpb24sICRvTGlzdCwgJywnLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/CalcRuleValueList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCmNsYXNzIENhbGNSdWxlVmFsdWVMaXN0IGV4dGVuZHMgUnVsZVZhbHVlTGlzdCB7CglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlMaW5lTm8gPSAwKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdChhcnJheSgpLCAnLCcsICRpTGluZU5vKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQgJG9PdXRwdXRGb3JtYXQpIHsKCQlyZXR1cm4gJG9PdXRwdXRGb3JtYXQtPmltcGxvZGUoJyAnLCAkdGhpcy0+YUNvbXBvbmVudHMpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/Color.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwoKY2xhc3MgQ29sb3IgZXh0ZW5kcyBDU1NGdW5jdGlvbiB7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRhQ29sb3IsICRpTGluZU5vID0gMCkgewoJCXBhcmVudDo6X19jb25zdHJ1Y3QoaW1wbG9kZSgnJywgYXJyYXlfa2V5cygkYUNvbG9yKSksICRhQ29sb3IsICcsJywgJGlMaW5lTm8pOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSkgewoJCSRhQ29sb3IgPSBhcnJheSgpOwoJCWlmICgkb1BhcnNlclN0YXRlLT5jb21lcygnIycpKSB7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJyMnKTsKCQkJJHNWYWx1ZSA9ICRvUGFyc2VyU3RhdGUtPnBhcnNlSWRlbnRpZmllcihmYWxzZSk7CgkJCWlmICgkb1BhcnNlclN0YXRlLT5zdHJsZW4oJHNWYWx1ZSkgPT09IDMpIHsKCQkJCSRzVmFsdWUgPSAkc1ZhbHVlWzBdIC4gJHNWYWx1ZVswXSAuICRzVmFsdWVbMV0gLiAkc1ZhbHVlWzFdIC4gJHNWYWx1ZVsyXSAuICRzVmFsdWVbMl07CgkJCX0gZWxzZSBpZiAoJG9QYXJzZXJTdGF0ZS0+c3RybGVuKCRzVmFsdWUpID09PSA0KSB7CgkJCQkkc1ZhbHVlID0gJHNWYWx1ZVswXSAuICRzVmFsdWVbMF0gLiAkc1ZhbHVlWzFdIC4gJHNWYWx1ZVsxXSAuICRzVmFsdWVbMl0gLiAkc1ZhbHVlWzJdIC4gJHNWYWx1ZVszXSAuICRzVmFsdWVbM107CgkJCX0KCgkJCWlmICgkb1BhcnNlclN0YXRlLT5zdHJsZW4oJHNWYWx1ZSkgPT09IDgpIHsKCQkJCSRhQ29sb3IgPSBhcnJheSgKCQkJCQkncicgPT4gbmV3IFNpemUoaW50dmFsKCRzVmFsdWVbMF0gLiAkc1ZhbHVlWzFdLCAxNiksIG51bGwsIHRydWUsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpLAoJCQkJCSdnJyA9PiBuZXcgU2l6ZShpbnR2YWwoJHNWYWx1ZVsyXSAuICRzVmFsdWVbM10sIDE2KSwgbnVsbCwgdHJ1ZSwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSksCgkJCQkJJ2InID0+IG5ldyBTaXplKGludHZhbCgkc1ZhbHVlWzRdIC4gJHNWYWx1ZVs1XSwgMTYpLCBudWxsLCB0cnVlLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKSwKCQkJCQknYScgPT4gbmV3IFNpemUocm91bmQoc2VsZjo6bWFwUmFuZ2UoaW50dmFsKCRzVmFsdWVbNl0gLiAkc1ZhbHVlWzddLCAxNiksIDAsIDI1NSwgMCwgMSksIDIpLCBudWxsLCB0cnVlLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKQoJCQkJKTsKCQkJfSBlbHNlIHsKCQkJCSRhQ29sb3IgPSBhcnJheSgKCQkJCQkncicgPT4gbmV3IFNpemUoaW50dmFsKCRzVmFsdWVbMF0gLiAkc1ZhbHVlWzFdLCAxNiksIG51bGwsIHRydWUsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpLAoJCQkJCSdnJyA9PiBuZXcgU2l6ZShpbnR2YWwoJHNWYWx1ZVsyXSAuICRzVmFsdWVbM10sIDE2KSwgbnVsbCwgdHJ1ZSwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSksCgkJCQkJJ2InID0+IG5ldyBTaXplKGludHZhbCgkc1ZhbHVlWzRdIC4gJHNWYWx1ZVs1XSwgMTYpLCBudWxsLCB0cnVlLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKQoJCQkJKTsKCQkJfQoJCX0gZWxzZSB7CgkJCSRzQ29sb3JNb2RlID0gJG9QYXJzZXJTdGF0ZS0+cGFyc2VJZGVudGlmaWVyKHRydWUpOwoJCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwoJCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lKCcoJyk7CgkJCSRpTGVuZ3RoID0gJG9QYXJzZXJTdGF0ZS0+c3RybGVuKCRzQ29sb3JNb2RlKTsKCQkJZm9yICgkaSA9IDA7ICRpIDwgJGlMZW5ndGg7ICsrJGkpIHsKCQkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJCQkkYUNvbG9yWyRzQ29sb3JNb2RlWyRpXV0gPSBTaXplOjpwYXJzZSgkb1BhcnNlclN0YXRlLCB0cnVlKTsKCQkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJCQlpZiAoJGkgPCAoJGlMZW5ndGggLSAxKSkgewoJCQkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJywnKTsKCQkJCX0KCQkJfQoJCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lKCcpJyk7CgkJfQoJCXJldHVybiBuZXcgQ29sb3IoJGFDb2xvciwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7Cgl9CgoJcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbWFwUmFuZ2UoJGZWYWwsICRmRnJvbU1pbiwgJGZGcm9tTWF4LCAkZlRvTWluLCAkZlRvTWF4KSB7CgkJJGZGcm9tUmFuZ2UgPSAkZkZyb21NYXggLSAkZkZyb21NaW47CgkJJGZUb1JhbmdlID0gJGZUb01heCAtICRmVG9NaW47CgkJJGZNdWx0aXBsaWVyID0gJGZUb1JhbmdlIC8gJGZGcm9tUmFuZ2U7CgkJJGZOZXdWYWwgPSAkZlZhbCAtICRmRnJvbU1pbjsKCQkkZk5ld1ZhbCAqPSAkZk11bHRpcGxpZXI7CgkJcmV0dXJuICRmTmV3VmFsICsgJGZUb01pbjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q29sb3IoKSB7CgkJcmV0dXJuICR0aGlzLT5hQ29tcG9uZW50czsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0Q29sb3IoJGFDb2xvcikgewoJCSR0aGlzLT5zZXROYW1lKGltcGxvZGUoJycsIGFycmF5X2tleXMoJGFDb2xvcikpKTsKCQkkdGhpcy0+YUNvbXBvbmVudHMgPSAkYUNvbG9yOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRDb2xvckRlc2NyaXB0aW9uKCkgewoJCXJldHVybiAkdGhpcy0+Z2V0TmFtZSgpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkgewoJCS8vIFNob3J0aGFuZCBSR0IgY29sb3IgdmFsdWVzCgkJaWYoJG9PdXRwdXRGb3JtYXQtPmdldFJHQkhhc2hOb3RhdGlvbigpICYmIGltcGxvZGUoJycsIGFycmF5X2tleXMoJHRoaXMtPmFDb21wb25lbnRzKSkgPT09ICdyZ2InKSB7CgkJCSRzUmVzdWx0ID0gc3ByaW50ZigKCQkJCSclMDJ4JTAyeCUwMngnLAoJCQkJJHRoaXMtPmFDb21wb25lbnRzWydyJ10tPmdldFNpemUoKSwKCQkJCSR0aGlzLT5hQ29tcG9uZW50c1snZyddLT5nZXRTaXplKCksCgkJCQkkdGhpcy0+YUNvbXBvbmVudHNbJ2InXS0+Z2V0U2l6ZSgpCgkJCSk7CgkJCXJldHVybiAnIycuKCgkc1Jlc3VsdFswXSA9PSAkc1Jlc3VsdFsxXSkgJiYgKCRzUmVzdWx0WzJdID09ICRzUmVzdWx0WzNdKSAmJiAoJHNSZXN1bHRbNF0gPT0gJHNSZXN1bHRbNV0pID8gIiRzUmVzdWx0WzBdJHNSZXN1bHRbMl0kc1Jlc3VsdFs0XSIgOiAkc1Jlc3VsdCk7CgkJfQoJCXJldHVybiBwYXJlbnQ6OnJlbmRlcigkb091dHB1dEZvcm1hdCk7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/CSSFunction.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCmNsYXNzIENTU0Z1bmN0aW9uIGV4dGVuZHMgVmFsdWVMaXN0IHsKCglwcm90ZWN0ZWQgJHNOYW1lOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc05hbWUsICRhQXJndW1lbnRzLCAkc1NlcGFyYXRvciA9ICcsJywgJGlMaW5lTm8gPSAwKSB7CgkJaWYoJGFBcmd1bWVudHMgaW5zdGFuY2VvZiBSdWxlVmFsdWVMaXN0KSB7CgkJCSRzU2VwYXJhdG9yID0gJGFBcmd1bWVudHMtPmdldExpc3RTZXBhcmF0b3IoKTsKCQkJJGFBcmd1bWVudHMgPSAkYUFyZ3VtZW50cy0+Z2V0TGlzdENvbXBvbmVudHMoKTsKCQl9CgkJJHRoaXMtPnNOYW1lID0gJHNOYW1lOwoJCSR0aGlzLT5pTGluZU5vID0gJGlMaW5lTm87CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkYUFyZ3VtZW50cywgJHNTZXBhcmF0b3IsICRpTGluZU5vKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpIHsKCQlyZXR1cm4gJHRoaXMtPnNOYW1lOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXROYW1lKCRzTmFtZSkgewoJCSR0aGlzLT5zTmFtZSA9ICRzTmFtZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0QXJndW1lbnRzKCkgewoJCXJldHVybiAkdGhpcy0+YUNvbXBvbmVudHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQoKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcihcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0ICRvT3V0cHV0Rm9ybWF0KSB7CgkJJGFBcmd1bWVudHMgPSBwYXJlbnQ6OnJlbmRlcigkb091dHB1dEZvcm1hdCk7CgkJcmV0dXJuICJ7JHRoaXMtPnNOYW1lfSh7JGFBcmd1bWVudHN9KSI7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/CSSString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xTb3VyY2VFeGNlcHRpb247CgpjbGFzcyBDU1NTdHJpbmcgZXh0ZW5kcyBQcmltaXRpdmVWYWx1ZSB7CgoJcHJpdmF0ZSAkc1N0cmluZzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNTdHJpbmcsICRpTGluZU5vID0gMCkgewoJCSR0aGlzLT5zU3RyaW5nID0gJHNTdHJpbmc7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlKSB7CgkJJHNCZWdpbiA9ICRvUGFyc2VyU3RhdGUtPnBlZWsoKTsKCQkkc1F1b3RlID0gbnVsbDsKCQlpZiAoJHNCZWdpbiA9PT0gIiciKSB7CgkJCSRzUXVvdGUgPSAiJyI7CgkJfSBlbHNlIGlmICgkc0JlZ2luID09PSAnIicpIHsKCQkJJHNRdW90ZSA9ICciJzsKCQl9CgkJaWYgKCRzUXVvdGUgIT09IG51bGwpIHsKCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgkc1F1b3RlKTsKCQl9CgkJJHNSZXN1bHQgPSAiIjsKCQkkc0NvbnRlbnQgPSBudWxsOwoJCWlmICgkc1F1b3RlID09PSBudWxsKSB7CgkJCS8vIFVucXVvdGVkIHN0cmluZ3MgZW5kIGluIHdoaXRlc3BhY2Ugb3Igd2l0aCBicmFjZXMsIGJyYWNrZXRzLCBwYXJlbnRoZXNlcwoJCQl3aGlsZSAoIXByZWdfbWF0Y2goJy9bXFxze30oKTw+XFxbXFxdXS9pc3UnLCAkb1BhcnNlclN0YXRlLT5wZWVrKCkpKSB7CgkJCQkkc1Jlc3VsdCAuPSAkb1BhcnNlclN0YXRlLT5wYXJzZUNoYXJhY3RlcihmYWxzZSk7CgkJCX0KCQl9IGVsc2UgewoJCQl3aGlsZSAoISRvUGFyc2VyU3RhdGUtPmNvbWVzKCRzUXVvdGUpKSB7CgkJCQkkc0NvbnRlbnQgPSAkb1BhcnNlclN0YXRlLT5wYXJzZUNoYXJhY3RlcihmYWxzZSk7CgkJCQlpZiAoJHNDb250ZW50ID09PSBudWxsKSB7CgkJCQkJdGhyb3cgbmV3IFNvdXJjZUV4Y2VwdGlvbigiTm9uLXdlbGwtZm9ybWVkIHF1b3RlZCBzdHJpbmcgeyRvUGFyc2VyU3RhdGUtPnBlZWsoMyl9IiwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CgkJCQl9CgkJCQkkc1Jlc3VsdCAuPSAkc0NvbnRlbnQ7CgkJCX0KCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgkc1F1b3RlKTsKCQl9CgkJcmV0dXJuIG5ldyBDU1NTdHJpbmcoJHNSZXN1bHQsICRvUGFyc2VyU3RhdGUtPmN1cnJlbnRMaW5lKCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRTdHJpbmcoJHNTdHJpbmcpIHsKCQkkdGhpcy0+c1N0cmluZyA9ICRzU3RyaW5nOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRTdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT5zU3RyaW5nOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkgewoJCSRzU3RyaW5nID0gYWRkc2xhc2hlcygkdGhpcy0+c1N0cmluZyk7CgkJJHNTdHJpbmcgPSBzdHJfcmVwbGFjZSgiXG4iLCAnXEEnLCAkc1N0cmluZyk7CgkJcmV0dXJuICRvT3V0cHV0Rm9ybWF0LT5nZXRTdHJpbmdRdW90aW5nVHlwZSgpIC4gJHNTdHJpbmcgLiAkb091dHB1dEZvcm1hdC0+Z2V0U3RyaW5nUXVvdGluZ1R5cGUoKTsKCX0KCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/LineName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CgpjbGFzcyBMaW5lTmFtZSBleHRlbmRzIFZhbHVlTGlzdCB7CglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGFDb21wb25lbnRzID0gYXJyYXkoKSwgJGlMaW5lTm8gPSAwKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkYUNvbXBvbmVudHMsICcgJywgJGlMaW5lTm8pOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSkgewoJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJ1snKTsKCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwoJCSRhTmFtZXMgPSBhcnJheSgpOwoJCWRvIHsKCQkJaWYoJG9QYXJzZXJTdGF0ZS0+Z2V0U2V0dGluZ3MoKS0+YkxlbmllbnRQYXJzaW5nKSB7CgkJCQl0cnkgewoJCQkJCSRhTmFtZXNbXSA9ICRvUGFyc2VyU3RhdGUtPnBhcnNlSWRlbnRpZmllcigpOwoJCQkJfSBjYXRjaChVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24gJGUpIHt9CgkJCX0gZWxzZSB7CgkJCQkkYU5hbWVzW10gPSAkb1BhcnNlclN0YXRlLT5wYXJzZUlkZW50aWZpZXIoKTsKCQkJfQoJCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwoJCX0gd2hpbGUgKCEkb1BhcnNlclN0YXRlLT5jb21lcygnXScpKTsKCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lKCddJyk7CgkJcmV0dXJuIG5ldyBMaW5lTmFtZSgkYU5hbWVzLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCX0KCgoKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkgewoJCXJldHVybiAnWycgLiBwYXJlbnQ6OnJlbmRlcihcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0OjpjcmVhdGVDb21wYWN0KCkpIC4gJ10nOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/PrimitiveValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCmFic3RyYWN0IGNsYXNzIFByaW1pdGl2ZVZhbHVlIGV4dGVuZHMgVmFsdWUgewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpTGluZU5vID0gMCkgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGlMaW5lTm8pOwogICAgfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/RuleValueList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCmNsYXNzIFJ1bGVWYWx1ZUxpc3QgZXh0ZW5kcyBWYWx1ZUxpc3QgewoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzU2VwYXJhdG9yID0gJywnLCAkaUxpbmVObyA9IDApIHsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KGFycmF5KCksICRzU2VwYXJhdG9yLCAkaUxpbmVObyk7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/Size.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwoKY2xhc3MgU2l6ZSBleHRlbmRzIFByaW1pdGl2ZVZhbHVlIHsKCgljb25zdCBBQlNPTFVURV9TSVpFX1VOSVRTID0gJ3B4L2NtL21tL21vem1tL2luL3B0L3BjL3ZoL3Z3L3ZtL3ZtaW4vdm1heC9yZW0nOyAvL3ZoL3Z3L3ZtKGF4KS92bWluL3JlbSBhcmUgYWJzb2x1dGUgaW5zb2ZhciBhcyB0aGV5IGRvbuKAmXQgc2NhbGUgdG8gdGhlIGltbWVkaWF0ZSBwYXJlbnQgKG9ubHkgdGhlIHZpZXdwb3J0KQoJY29uc3QgUkVMQVRJVkVfU0laRV9VTklUUyA9ICclL2VtL2V4L2NoL2ZyJzsKCWNvbnN0IE5PTl9TSVpFX1VOSVRTID0gJ2RlZy9ncmFkL3JhZC9zL21zL3R1cm5zL0h6L2tIeic7CgoJcHJpdmF0ZSBzdGF0aWMgJFNJWkVfVU5JVFMgPSBudWxsOwoKCXByaXZhdGUgJGZTaXplOwoJcHJpdmF0ZSAkc1VuaXQ7Cglwcml2YXRlICRiSXNDb2xvckNvbXBvbmVudDsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZTaXplLCAkc1VuaXQgPSBudWxsLCAkYklzQ29sb3JDb21wb25lbnQgPSBmYWxzZSwgJGlMaW5lTm8gPSAwKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CgkJJHRoaXMtPmZTaXplID0gZmxvYXR2YWwoJGZTaXplKTsKCQkkdGhpcy0+c1VuaXQgPSAkc1VuaXQ7CgkJJHRoaXMtPmJJc0NvbG9yQ29tcG9uZW50ID0gJGJJc0NvbG9yQ29tcG9uZW50OwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2UoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSwgJGJJc0NvbG9yQ29tcG9uZW50ID0gZmFsc2UpIHsKCQkkc1NpemUgPSAnJzsKCQlpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0nKSkgewoJCQkkc1NpemUgLj0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnLScpOwoJCX0KCQl3aGlsZSAoaXNfbnVtZXJpYygkb1BhcnNlclN0YXRlLT5wZWVrKCkpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCcuJykpIHsKCQkJaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCcuJykpIHsKCQkJCSRzU2l6ZSAuPSAkb1BhcnNlclN0YXRlLT5jb25zdW1lKCcuJyk7CgkJCX0gZWxzZSB7CgkJCQkkc1NpemUgLj0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgxKTsKCQkJfQoJCX0KCgkJJHNVbml0ID0gbnVsbDsKCQkkYVNpemVVbml0cyA9IHNlbGY6OmdldFNpemVVbml0cygpOwoJCWZvcmVhY2goJGFTaXplVW5pdHMgYXMgJGlMZW5ndGggPT4gJiRhVmFsdWVzKSB7CgkJCSRzS2V5ID0gc3RydG9sb3dlcigkb1BhcnNlclN0YXRlLT5wZWVrKCRpTGVuZ3RoKSk7CgkJCWlmKGFycmF5X2tleV9leGlzdHMoJHNLZXksICRhVmFsdWVzKSkgewoJCQkJaWYgKCgkc1VuaXQgPSAkYVZhbHVlc1skc0tleV0pICE9PSBudWxsKSB7CgkJCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgkaUxlbmd0aCk7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuIG5ldyBTaXplKGZsb2F0dmFsKCRzU2l6ZSksICRzVW5pdCwgJGJJc0NvbG9yQ29tcG9uZW50LCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCX0KCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRTaXplVW5pdHMoKSB7CgkJaWYoc2VsZjo6JFNJWkVfVU5JVFMgPT09IG51bGwpIHsKCQkJc2VsZjo6JFNJWkVfVU5JVFMgPSBhcnJheSgpOwoJCQlmb3JlYWNoIChleHBsb2RlKCcvJywgU2l6ZTo6QUJTT0xVVEVfU0laRV9VTklUUy4nLycuU2l6ZTo6UkVMQVRJVkVfU0laRV9VTklUUy4nLycuU2l6ZTo6Tk9OX1NJWkVfVU5JVFMpIGFzICR2YWwpIHsKCQkJCSRpU2l6ZSA9IHN0cmxlbigkdmFsKTsKCQkJCWlmKCFpc3NldChzZWxmOjokU0laRV9VTklUU1skaVNpemVdKSkgewoJCQkJCXNlbGY6OiRTSVpFX1VOSVRTWyRpU2l6ZV0gPSBhcnJheSgpOwoJCQkJfQoJCQkJc2VsZjo6JFNJWkVfVU5JVFNbJGlTaXplXVtzdHJ0b2xvd2VyKCR2YWwpXSA9ICR2YWw7CgkJCX0KCgkJCS8vIEZJWE1FOiBTaG91bGQgd2Ugbm90IG9yZGVyIHRoZSBsb25nZXN0IHVuaXRzIGZpcnN0PwoJCQlrc29ydChzZWxmOjokU0laRV9VTklUUywgU09SVF9OVU1FUklDKTsKCQl9CgoJCXJldHVybiBzZWxmOjokU0laRV9VTklUUzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0VW5pdCgkc1VuaXQpIHsKCQkkdGhpcy0+c1VuaXQgPSAkc1VuaXQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFVuaXQoKSB7CgkJcmV0dXJuICR0aGlzLT5zVW5pdDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0U2l6ZSgkZlNpemUpIHsKCQkkdGhpcy0+ZlNpemUgPSBmbG9hdHZhbCgkZlNpemUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCkgewoJCXJldHVybiAkdGhpcy0+ZlNpemU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzQ29sb3JDb21wb25lbnQoKSB7CgkJcmV0dXJuICR0aGlzLT5iSXNDb2xvckNvbXBvbmVudDsKCX0KCgkvKioKCSAqIFJldHVybnMgd2hldGhlciB0aGUgbnVtYmVyIHN0b3JlZCBpbiB0aGlzIFNpemUgcmVhbGx5IHJlcHJlc2VudHMgYSBzaXplIChhcyBpbiBhIGxlbmd0aCBvZiBzb21ldGhpbmcgb24gc2NyZWVuKS4KCSAqIEByZXR1cm4gZmFsc2UgaWYgdGhlIHVuaXQgYW4gYW5nbGUsIGEgZHVyYXRpb24sIGEgZnJlcXVlbmN5IG9yIHRoZSBudW1iZXIgaXMgYSBjb21wb25lbnQgaW4gYSBDb2xvciBvYmplY3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpc1NpemUoKSB7CgkJaWYgKGluX2FycmF5KCR0aGlzLT5zVW5pdCwgZXhwbG9kZSgnLycsIHNlbGY6Ok5PTl9TSVpFX1VOSVRTKSkpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlyZXR1cm4gISR0aGlzLT5pc0NvbG9yQ29tcG9uZW50KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzUmVsYXRpdmUoKSB7CgkJaWYgKGluX2FycmF5KCR0aGlzLT5zVW5pdCwgZXhwbG9kZSgnLycsIHNlbGY6OlJFTEFUSVZFX1NJWkVfVU5JVFMpKSkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJaWYgKCR0aGlzLT5zVW5pdCA9PT0gbnVsbCAmJiAkdGhpcy0+ZlNpemUgIT0gMCkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgewoJCXJldHVybiAkdGhpcy0+cmVuZGVyKG5ldyBcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZW5kZXIoXFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdCAkb091dHB1dEZvcm1hdCkgewoJCSRsID0gbG9jYWxlY29udigpOwoJCSRzUG9pbnQgPSBwcmVnX3F1b3RlKCRsWydkZWNpbWFsX3BvaW50J10sICcvJyk7CgkJcmV0dXJuIHByZWdfcmVwbGFjZShhcnJheSgiLyRzUG9pbnQvIiwgIi9eKC0/KTBcLi8iKSwgYXJyYXkoJy4nLCAnJDEuJyksICR0aGlzLT5mU2l6ZSkgLiAoJHRoaXMtPnNVbml0ID09PSBudWxsID8gJycgOiAkdGhpcy0+c1VuaXQpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/URL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwoKY2xhc3MgVVJMIGV4dGVuZHMgUHJpbWl0aXZlVmFsdWUgewoKCXByaXZhdGUgJG9VUkw7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENTU1N0cmluZyAkb1VSTCwgJGlMaW5lTm8gPSAwKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CgkJJHRoaXMtPm9VUkwgPSAkb1VSTDsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUpIHsKCQkkYlVzZVVybCA9ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCd1cmwnLCB0cnVlKTsKCQlpZiAoJGJVc2VVcmwpIHsKCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgndXJsJyk7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJygnKTsKCQl9CgkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCQkkb1Jlc3VsdCA9IG5ldyBVUkwoQ1NTU3RyaW5nOjpwYXJzZSgkb1BhcnNlclN0YXRlKSwgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CgkJaWYgKCRiVXNlVXJsKSB7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJyknKTsKCQl9CgkJcmV0dXJuICRvUmVzdWx0OwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gc2V0VVJMKENTU1N0cmluZyAkb1VSTCkgewoJCSR0aGlzLT5vVVJMID0gJG9VUkw7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFVSTCgpIHsKCQlyZXR1cm4gJHRoaXMtPm9VUkw7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQoKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcihcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0ICRvT3V0cHV0Rm9ybWF0KSB7CgkJcmV0dXJuICJ1cmwoeyR0aGlzLT5vVVJMLT5yZW5kZXIoJG9PdXRwdXRGb3JtYXQpfSkiOwoJfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/Value.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFBhcnNlclN0YXRlOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CnVzZSBTYWJiZXJ3b3JtXENTU1xSZW5kZXJhYmxlOwoKYWJzdHJhY3QgY2xhc3MgVmFsdWUgaW1wbGVtZW50cyBSZW5kZXJhYmxlIHsKCXByb3RlY3RlZCAkaUxpbmVObzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlMaW5lTm8gPSAwKSB7CgkJJHRoaXMtPmlMaW5lTm8gPSAkaUxpbmVObzsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlVmFsdWUoUGFyc2VyU3RhdGUgJG9QYXJzZXJTdGF0ZSwgJGFMaXN0RGVsaW1pdGVycyA9IGFycmF5KCkpIHsKCQkkYVN0YWNrID0gYXJyYXkoKTsKCQkkb1BhcnNlclN0YXRlLT5jb25zdW1lV2hpdGVTcGFjZSgpOwoJCS8vQnVpbGQgYSBsaXN0IG9mIGRlbGltaXRlcnMgYW5kIHBhcnNlZCB2YWx1ZXMKCQl3aGlsZSAoISgkb1BhcnNlclN0YXRlLT5jb21lcygnfScpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCc7JykgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJyEnKSB8fCAkb1BhcnNlclN0YXRlLT5jb21lcygnKScpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCdcXCcpKSkgewoJCQlpZiAoY291bnQoJGFTdGFjaykgPiAwKSB7CgkJCQkkYkZvdW5kRGVsaW1pdGVyID0gZmFsc2U7CgkJCQlmb3JlYWNoICgkYUxpc3REZWxpbWl0ZXJzIGFzICRzRGVsaW1pdGVyKSB7CgkJCQkJaWYgKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCRzRGVsaW1pdGVyKSkgewoJCQkJCQlhcnJheV9wdXNoKCRhU3RhY2ssICRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJHNEZWxpbWl0ZXIpKTsKCQkJCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCQkJCQkJJGJGb3VuZERlbGltaXRlciA9IHRydWU7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJCWlmICghJGJGb3VuZERlbGltaXRlcikgewoJCQkJCS8vV2hpdGVzcGFjZSB3YXMgdGhlIGxpc3QgZGVsaW1pdGVyCgkJCQkJYXJyYXlfcHVzaCgkYVN0YWNrLCAnICcpOwoJCQkJfQoJCQl9CgkJCWFycmF5X3B1c2goJGFTdGFjaywgc2VsZjo6cGFyc2VQcmltaXRpdmVWYWx1ZSgkb1BhcnNlclN0YXRlKSk7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWVXaGl0ZVNwYWNlKCk7CgkJfQoJCS8vQ29udmVydCB0aGUgbGlzdCB0byBsaXN0IG9iamVjdHMKCQlmb3JlYWNoICgkYUxpc3REZWxpbWl0ZXJzIGFzICRzRGVsaW1pdGVyKSB7CgkJCWlmIChjb3VudCgkYVN0YWNrKSA9PT0gMSkgewoJCQkJcmV0dXJuICRhU3RhY2tbMF07CgkJCX0KCQkJJGlTdGFydFBvc2l0aW9uID0gbnVsbDsKCQkJd2hpbGUgKCgkaVN0YXJ0UG9zaXRpb24gPSBhcnJheV9zZWFyY2goJHNEZWxpbWl0ZXIsICRhU3RhY2ssIHRydWUpKSAhPT0gZmFsc2UpIHsKCQkJCSRpTGVuZ3RoID0gMjsgLy9OdW1iZXIgb2YgZWxlbWVudHMgdG8gYmUgam9pbmVkCgkJCQlmb3IgKCRpID0gJGlTdGFydFBvc2l0aW9uICsgMjsgJGkgPCBjb3VudCgkYVN0YWNrKTsgJGkrPTIsICsrJGlMZW5ndGgpIHsKCQkJCQlpZiAoJHNEZWxpbWl0ZXIgIT09ICRhU3RhY2tbJGldKSB7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCQkJCSRvTGlzdCA9IG5ldyBSdWxlVmFsdWVMaXN0KCRzRGVsaW1pdGVyLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCQkJCWZvciAoJGkgPSAkaVN0YXJ0UG9zaXRpb24gLSAxOyAkaSAtICRpU3RhcnRQb3NpdGlvbiArIDEgPCAkaUxlbmd0aCAqIDI7ICRpKz0yKSB7CgkJCQkJJG9MaXN0LT5hZGRMaXN0Q29tcG9uZW50KCRhU3RhY2tbJGldKTsKCQkJCX0KCQkJCWFycmF5X3NwbGljZSgkYVN0YWNrLCAkaVN0YXJ0UG9zaXRpb24gLSAxLCAkaUxlbmd0aCAqIDIgLSAxLCBhcnJheSgkb0xpc3QpKTsKCQkJfQoJCX0KCQlpZiAoIWlzc2V0KCRhU3RhY2tbMF0pKSB7CgkJCXRocm93IG5ldyBVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24oIiB7JG9QYXJzZXJTdGF0ZS0+cGVlaygpfSAiLCAkb1BhcnNlclN0YXRlLT5wZWVrKDEsIC0xKSAuICRvUGFyc2VyU3RhdGUtPnBlZWsoMiksICdsaXRlcmFsJywgJG9QYXJzZXJTdGF0ZS0+Y3VycmVudExpbmUoKSk7CgkJfQoJCXJldHVybiAkYVN0YWNrWzBdOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VJZGVudGlmaWVyT3JGdW5jdGlvbihQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlLCAkYklnbm9yZUNhc2UgPSBmYWxzZSkgewoJCSRzUmVzdWx0ID0gJG9QYXJzZXJTdGF0ZS0+cGFyc2VJZGVudGlmaWVyKCRiSWdub3JlQ2FzZSk7CgoJCWlmICgkb1BhcnNlclN0YXRlLT5jb21lcygnKCcpKSB7CgkJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoJygnKTsKCQkJJGFBcmd1bWVudHMgPSBWYWx1ZTo6cGFyc2VWYWx1ZSgkb1BhcnNlclN0YXRlLCBhcnJheSgnPScsICcgJywgJywnKSk7CgkJCSRzUmVzdWx0ID0gbmV3IENTU0Z1bmN0aW9uKCRzUmVzdWx0LCAkYUFyZ3VtZW50cywgJywnLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCQkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgnKScpOwoJCX0KCgkJcmV0dXJuICRzUmVzdWx0OwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VQcmltaXRpdmVWYWx1ZShQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlKSB7CgkJJG9WYWx1ZSA9IG51bGw7CgkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCQlpZiAoaXNfbnVtZXJpYygkb1BhcnNlclN0YXRlLT5wZWVrKCkpIHx8ICgkb1BhcnNlclN0YXRlLT5jb21lcygnLS4nKSAmJiBpc19udW1lcmljKCRvUGFyc2VyU3RhdGUtPnBlZWsoMSwgMikpKSB8fCAoKCRvUGFyc2VyU3RhdGUtPmNvbWVzKCctJykgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy4nKSkgJiYgaXNfbnVtZXJpYygkb1BhcnNlclN0YXRlLT5wZWVrKDEsIDEpKSkpIHsKCQkJJG9WYWx1ZSA9IFNpemU6OnBhcnNlKCRvUGFyc2VyU3RhdGUpOwoJCX0gZWxzZSBpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJyMnKSB8fCAkb1BhcnNlclN0YXRlLT5jb21lcygncmdiJywgdHJ1ZSkgfHwgJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJ2hzbCcsIHRydWUpKSB7CgkJCSRvVmFsdWUgPSBDb2xvcjo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CgkJfSBlbHNlIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygndXJsJywgdHJ1ZSkpIHsKCQkJJG9WYWx1ZSA9IFVSTDo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CgkJfSBlbHNlIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygnY2FsYycsIHRydWUpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCctd2Via2l0LWNhbGMnLCB0cnVlKSB8fCAkb1BhcnNlclN0YXRlLT5jb21lcygnLW1vei1jYWxjJywgdHJ1ZSkpIHsKCQkJJG9WYWx1ZSA9IENhbGNGdW5jdGlvbjo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CgkJfSBlbHNlIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygiJyIpIHx8ICRvUGFyc2VyU3RhdGUtPmNvbWVzKCciJykpIHsKCQkJJG9WYWx1ZSA9IENTU1N0cmluZzo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CgkJfSBlbHNlIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygicHJvZ2lkOiIpICYmICRvUGFyc2VyU3RhdGUtPmdldFNldHRpbmdzKCktPmJMZW5pZW50UGFyc2luZykgewoJCQkkb1ZhbHVlID0gc2VsZjo6cGFyc2VNaWNyb3NvZnRGaWx0ZXIoJG9QYXJzZXJTdGF0ZSk7CgkJfSBlbHNlIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygiWyIpKSB7CgkJCSRvVmFsdWUgPSBMaW5lTmFtZTo6cGFyc2UoJG9QYXJzZXJTdGF0ZSk7CgkJfSBlbHNlIGlmICgkb1BhcnNlclN0YXRlLT5jb21lcygiVSsiKSkgewoJCQkkb1ZhbHVlID0gc2VsZjo6cGFyc2VVbmljb2RlUmFuZ2VWYWx1ZSgkb1BhcnNlclN0YXRlKTsKCQl9IGVsc2UgewoJCQkkb1ZhbHVlID0gc2VsZjo6cGFyc2VJZGVudGlmaWVyT3JGdW5jdGlvbigkb1BhcnNlclN0YXRlKTsKCQl9CgkJJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZVdoaXRlU3BhY2UoKTsKCQlyZXR1cm4gJG9WYWx1ZTsKCX0KCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwYXJzZU1pY3Jvc29mdEZpbHRlcihQYXJzZXJTdGF0ZSAkb1BhcnNlclN0YXRlKSB7CgkJJHNGdW5jdGlvbiA9ICRvUGFyc2VyU3RhdGUtPmNvbnN1bWVVbnRpbCgnKCcsIGZhbHNlLCB0cnVlKTsKCQkkYUFyZ3VtZW50cyA9IFZhbHVlOjpwYXJzZVZhbHVlKCRvUGFyc2VyU3RhdGUsIGFycmF5KCcsJywgJz0nKSk7CgkJcmV0dXJuIG5ldyBDU1NGdW5jdGlvbigkc0Z1bmN0aW9uLCAkYUFyZ3VtZW50cywgJywnLCAkb1BhcnNlclN0YXRlLT5jdXJyZW50TGluZSgpKTsKCX0KCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwYXJzZVVuaWNvZGVSYW5nZVZhbHVlKFBhcnNlclN0YXRlICRvUGFyc2VyU3RhdGUpIHsKCQkkaUNvZGVwb2ludE1heExlbnRoID0gNjsgLy8gQ29kZSBwb2ludHMgb3V0c2lkZSBCTVAgY2FuIHVzZSB1cCB0byBzaXggZGlnaXRzCgkJJHNSYW5nZSA9ICIiOwoJCSRvUGFyc2VyU3RhdGUtPmNvbnN1bWUoIlUrIik7CgkJZG8gewoJCQlpZiAoJG9QYXJzZXJTdGF0ZS0+Y29tZXMoJy0nKSkgJGlDb2RlcG9pbnRNYXhMZW50aCA9IDEzOyAvLyBNYXggbGVuZ3RoIGlzIDIgc2l4IGRpZ2l0IGNvZGUgcG9pbnRzICsgdGhlIGRhc2goLSkgYmV0d2VlbiB0aGVtCgkJCSRzUmFuZ2UgLj0gJG9QYXJzZXJTdGF0ZS0+Y29uc3VtZSgxKTsKCQl9IHdoaWxlIChzdHJsZW4oJHNSYW5nZSkgPCAkaUNvZGVwb2ludE1heExlbnRoICYmIHByZWdfbWF0Y2goIi9bQS1GYS1mMC05XD8tXS8iLCAkb1BhcnNlclN0YXRlLT5wZWVrKCkpKTsKCQlyZXR1cm4gIlUreyRzUmFuZ2V9IjsKCX0KCQoJLyoqCgkgKiBAcmV0dXJuIGludAoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0TGluZU5vKCkgewoJCXJldHVybiAkdGhpcy0+aUxpbmVObzsKCX0KCgkvL01ldGhvZHMgYXJlIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSByZS1kZWNsYXJpbmcgdGhlbSBoZXJlIGlzIGEgZmF0YWwgZXJyb3IgaW4gUEhQIDwgNS4zLjkKCS8vcHVibGljIGFic3RyYWN0IGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTsKCS8vcHVibGljIGFic3RyYWN0IGZ1bmN0aW9uIHJlbmRlcihcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0ICRvT3V0cHV0Rm9ybWF0KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/lib/Sabberworm/CSS/Value/ValueList.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xWYWx1ZTsKCmFic3RyYWN0IGNsYXNzIFZhbHVlTGlzdCBleHRlbmRzIFZhbHVlIHsKCglwcm90ZWN0ZWQgJGFDb21wb25lbnRzOwoJcHJvdGVjdGVkICRzU2VwYXJhdG9yOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYUNvbXBvbmVudHMgPSBhcnJheSgpLCAkc1NlcGFyYXRvciA9ICcsJywgJGlMaW5lTm8gPSAwKSB7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkaUxpbmVObyk7CgkJaWYgKCFpc19hcnJheSgkYUNvbXBvbmVudHMpKSB7CgkJCSRhQ29tcG9uZW50cyA9IGFycmF5KCRhQ29tcG9uZW50cyk7CgkJfQoJCSR0aGlzLT5hQ29tcG9uZW50cyA9ICRhQ29tcG9uZW50czsKCQkkdGhpcy0+c1NlcGFyYXRvciA9ICRzU2VwYXJhdG9yOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhZGRMaXN0Q29tcG9uZW50KCRtQ29tcG9uZW50KSB7CgkJJHRoaXMtPmFDb21wb25lbnRzW10gPSAkbUNvbXBvbmVudDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0TGlzdENvbXBvbmVudHMoKSB7CgkJcmV0dXJuICR0aGlzLT5hQ29tcG9uZW50czsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0TGlzdENvbXBvbmVudHMoJGFDb21wb25lbnRzKSB7CgkJJHRoaXMtPmFDb21wb25lbnRzID0gJGFDb21wb25lbnRzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRMaXN0U2VwYXJhdG9yKCkgewoJCXJldHVybiAkdGhpcy0+c1NlcGFyYXRvcjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0TGlzdFNlcGFyYXRvcigkc1NlcGFyYXRvcikgewoJCSR0aGlzLT5zU2VwYXJhdG9yID0gJHNTZXBhcmF0b3I7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CgkJcmV0dXJuICR0aGlzLT5yZW5kZXIobmV3IFxTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQoKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlbmRlcihcU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0ICRvT3V0cHV0Rm9ybWF0KSB7CgkJcmV0dXJuICRvT3V0cHV0Rm9ybWF0LT5pbXBsb2RlKCRvT3V0cHV0Rm9ybWF0LT5zcGFjZUJlZm9yZUxpc3RBcmd1bWVudFNlcGFyYXRvcigkdGhpcy0+c1NlcGFyYXRvcikgLiAkdGhpcy0+c1NlcGFyYXRvciAuICRvT3V0cHV0Rm9ybWF0LT5zcGFjZUFmdGVyTGlzdEFyZ3VtZW50U2VwYXJhdG9yKCR0aGlzLT5zU2VwYXJhdG9yKSwgJHRoaXMtPmFDb21wb25lbnRzKTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/phpunit.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHBocHVuaXQKICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCiAgICB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iaHR0cDovL3NjaGVtYS5waHB1bml0LmRlLzQuNS9waHB1bml0LnhzZCIKICAgIGJvb3RzdHJhcD0idGVzdHMvYm9vdHN0cmFwLnBocCI+CiAgICA8dGVzdHN1aXRlcz4KICAgICAgICA8dGVzdHN1aXRlIG5hbWU9IlByb2plY3QgVGVzdCBTdWl0ZSI+CiAgICAgICAgICAgIDxkaXJlY3Rvcnk+dGVzdHM8L2RpcmVjdG9yeT4KICAgICAgICA8L3Rlc3RzdWl0ZT4KICAgIDwvdGVzdHN1aXRlcz4KPC9waHB1bml0Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQIENTUyBQYXJzZXIKLS0tLS0tLS0tLS0tLS0KClshW2J1aWxkIHN0YXR1c10oaHR0cHM6Ly9hcGkudHJhdmlzLWNpLm9yZy9zYWJiZXJ3b3JtL1BIUC1DU1MtUGFyc2VyLnN2ZyldKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9zYWJiZXJ3b3JtL1BIUC1DU1MtUGFyc2VyKSBbIVtISFZNIFN0YXR1c10oaHR0cDovL2hodm0uaDRjYy5kZS9iYWRnZS9zYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyLnN2ZyldKGh0dHA6Ly9oaHZtLmg0Y2MuZGUvcGFja2FnZS9zYWJiZXJ3b3JtL3BocC1jc3MtcGFyc2VyKQoKQSBQYXJzZXIgZm9yIENTUyBGaWxlcyB3cml0dGVuIGluIFBIUC4gQWxsb3dzIGV4dHJhY3Rpb24gb2YgQ1NTIGZpbGVzIGludG8gYSBkYXRhIHN0cnVjdHVyZSwgbWFuaXB1bGF0aW9uIG9mIHNhaWQgc3RydWN0dXJlIGFuZCBvdXRwdXQgYXMgKG9wdGltaXplZCkgQ1NTLgoKIyMgVXNhZ2UKCiMjIyBJbnN0YWxsYXRpb24gdXNpbmcgY29tcG9zZXIKCkFkZCBwaHAtY3NzLXBhcnNlciB0byB5b3VyIGNvbXBvc2VyLmpzb24KCmBgYGpzb24KewogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInNhYmJlcndvcm0vcGhwLWNzcy1wYXJzZXIiOiAiKiIKICAgIH0KfQpgYGAKCiMjIyBFeHRyYWN0aW9uCgpUbyB1c2UgdGhlIENTUyBQYXJzZXIsIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZS4gVGhlIGNvbnN0cnVjdG9yIHRha2VzIHRoZSBmb2xsb3dpbmcgZm9ybToKCmBgYHBocApuZXcgU2FiYmVyd29ybVxDU1NcUGFyc2VyKCRzVGV4dCk7CmBgYAoKVG8gcmVhZCBhIGZpbGUsIGZvciBleGFtcGxlLCB5b3XigJlkIGRvIHRoZSBmb2xsb3dpbmc6CgpgYGBwaHAKJG9Dc3NQYXJzZXIgPSBuZXcgU2FiYmVyd29ybVxDU1NcUGFyc2VyKGZpbGVfZ2V0X2NvbnRlbnRzKCdzb21lZmlsZS5jc3MnKSk7CiRvQ3NzRG9jdW1lbnQgPSAkb0Nzc1BhcnNlci0+cGFyc2UoKTsKYGBgCgpUaGUgcmVzdWx0aW5nIENTUyBkb2N1bWVudCBzdHJ1Y3R1cmUgY2FuIGJlIG1hbmlwdWxhdGVkIHByaW9yIHRvIGJlaW5nIG91dHB1dC4KCiMjIyBPcHRpb25zCgojIyMjIENoYXJzZXQKClRoZSBjaGFyc2V0IG9wdGlvbiBpcyB1c2VkIG9ubHkgaWYgbm8gQGNoYXJzZXQgZGVjbGFyYXRpb24gaXMgZm91bmQgaW4gdGhlIENTUyBmaWxlLiBVVEYtOCBpcyB0aGUgZGVmYXVsdCwgc28geW91IHdvbuKAmXQgaGF2ZSB0byBjcmVhdGUgYSBzZXR0aW5ncyBvYmplY3QgYXQgYWxsIGlmIHlvdSBkb27igJl0IGludGVuZCB0byBjaGFuZ2UgdGhhdC4KCmBgYHBocAokb1NldHRpbmdzID0gU2FiYmVyd29ybVxDU1NcU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoRGVmYXVsdENoYXJzZXQoJ3dpbmRvd3MtMTI1MicpOwpuZXcgU2FiYmVyd29ybVxDU1NcUGFyc2VyKCRzVGV4dCwgJG9TZXR0aW5ncyk7CmBgYAoKIyMjIyBTdHJpY3QgcGFyc2luZwoKVG8gaGF2ZSB0aGUgcGFyc2VyIGNob2tlIG9uIGludmFsaWQgcnVsZXMsIHN1cHBseSBhIHRodXNseSBjb25maWd1cmVkIFNhYmJlcndvcm1cQ1NTXFNldHRpbmdzIG9iamVjdDoKCmBgYHBocAokb0Nzc1BhcnNlciA9IG5ldyBTYWJiZXJ3b3JtXENTU1xQYXJzZXIoZmlsZV9nZXRfY29udGVudHMoJ3NvbWVmaWxlLmNzcycpLCBTYWJiZXJ3b3JtXENTU1xTZXR0aW5nczo6Y3JlYXRlKCktPmJlU3RyaWN0KCkpOwpgYGAKCiMjIyMgRGlzYWJsZSBtdWx0aWJ5dGUgZnVuY3Rpb25zCgpUbyBhY2hpZXZlIGZhc3RlciBwYXJzaW5nLCB5b3UgY2FuIGNob29zZSB0byBoYXZlIFBIUC1DU1MtUGFyc2VyIHVzZSByZWd1bGFyIHN0cmluZyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBgbWJfKmAgZnVuY3Rpb25zLiBUaGlzIHNob3VsZCB3b3JrIGZpbmUgaW4gbW9zdCBjYXNlcywgZXZlbiBmb3IgVVRGLTggZmlsZXMsIGFzIGFsbCB0aGUgbXVsdGlieXRlIGNoYXJhY3RlcnMgYXJlIGluIHN0cmluZyBsaXRlcmFscy4gU3RpbGwgaXTigJlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyB3aXRoIGlucHV0IHlvdSBoYXZlIG5vIGNvbnRyb2wgb3ZlciBhcyBpdOKAmXMgbm90IHRob3JvdWdobHkgY292ZXJlZCBieSB0ZXN0IGNhc2VzLgoKYGBgcGhwCiRvU2V0dGluZ3MgPSBTYWJiZXJ3b3JtXENTU1xTZXR0aW5nczo6Y3JlYXRlKCktPndpdGhNdWx0aWJ5dGVTdXBwb3J0KGZhbHNlKTsKbmV3IFNhYmJlcndvcm1cQ1NTXFBhcnNlcigkc1RleHQsICRvU2V0dGluZ3MpOwpgYGAKCiMjIyBNYW5pcHVsYXRpb24KClRoZSByZXN1bHRpbmcgZGF0YSBzdHJ1Y3R1cmUgY29uc2lzdHMgbWFpbmx5IG9mIGZpdmUgYmFzaWMgdHlwZXM6IGBDU1NMaXN0YCwgYFJ1bGVTZXRgLCBgUnVsZWAsIGBTZWxlY3RvcmAgYW5kIGBWYWx1ZWAuIFRoZXJlIGFyZSB0d28gYWRkaXRpb25hbCB0eXBlcyB1c2VkOiBgSW1wb3J0YCBhbmQgYENoYXJzZXRgIHdoaWNoIHlvdSB3b27igJl0IHVzZSBvZnRlbi4KCiMjIyMgQ1NTTGlzdAoKYENTU0xpc3RgIHJlcHJlc2VudHMgYSBnZW5lcmljIENTUyBjb250YWluZXIsIG1vc3QgbGlrZWx5IGNvbnRhaW5pbmcgZGVjbGFyYXRpb24gYmxvY2tzIChydWxlIHNldHMgd2l0aCBhIHNlbGVjdG9yKSBidXQgaXQgbWF5IGFsc28gY29udGFpbiBhdC1ydWxlcywgY2hhcnNldCBkZWNsYXJhdGlvbnMsIGV0Yy4gYENTU0xpc3RgIGhhcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIHN1YnR5cGVzOgoKKiBgRG9jdW1lbnRgIOKAkyByZXByZXNlbnRpbmcgdGhlIHJvb3Qgb2YgYSBDU1MgZmlsZS4KKiBgTWVkaWFRdWVyeWAg4oCTIHJlcHJlc2VudHMgYSBzdWJzZWN0aW9uIG9mIGEgQ1NTTGlzdCB0aGF0IG9ubHkgYXBwbGllcyB0byBhIG91dHB1dCBkZXZpY2UgbWF0Y2hpbmcgdGhlIGNvbnRhaW5lZCBtZWRpYSBxdWVyeS4KClRvIGFjY2VzcyB0aGUgaXRlbXMgc3RvcmVkIGluIGEgYENTU0xpc3RgIOKAkyBsaWtlIHRoZSBkb2N1bWVudCB5b3UgZ290IGJhY2sgd2hlbiBjYWxsaW5nIGAkb0Nzc1BhcnNlci0+cGFyc2UoKWAg4oCTLCB1c2UgYGdldENvbnRlbnRzKClgLCB0aGVuIGl0ZXJhdGUgb3ZlciB0aGF0IGNvbGxlY3Rpb24gYW5kIHVzZSBpbnN0YW5jZW9mIHRvIGNoZWNrIHdoZXRoZXIgeW914oCZcmUgZGVhbGluZyB3aXRoIGFub3RoZXIgYENTU0xpc3RgLCBhIGBSdWxlU2V0YCwgYSBgSW1wb3J0YCBvciBhIGBDaGFyc2V0YC4KClRvIGFwcGVuZCBhIG5ldyBpdGVtIChzZWxlY3RvciwgbWVkaWEgcXVlcnksIGV0Yy4pIHRvIGFuIGV4aXN0aW5nIGBDU1NMaXN0YCwgY29uc3RydWN0IGl0IHVzaW5nIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhpcyBjbGFzcyBhbmQgdXNlIHRoZSBgYXBwZW5kKCRvSXRlbSlgIG1ldGhvZC4KCiMjIyMgUnVsZVNldAoKYFJ1bGVTZXRgIGlzIGEgY29udGFpbmVyIGZvciBpbmRpdmlkdWFsIHJ1bGVzLiBUaGUgbW9zdCBjb21tb24gZm9ybSBvZiBhIHJ1bGUgc2V0IGlzIG9uZSBjb25zdHJhaW5lZCBieSBhIHNlbGVjdG9yLiBUaGUgZm9sbG93aW5nIGNvbmNyZXRlIHN1YnR5cGVzIGV4aXN0OgoKKiBgQXRSdWxlU2V0YCDigJMgZm9yIGdlbmVyaWMgYXQtcnVsZXMgd2hpY2ggZG8gbm90IG1hdGNoIHRoZSBvbmVzIHNwZWNpZmljYWxseSBtZW50aW9uZWQgbGlrZSBAaW1wb3J0LCBAY2hhcnNldCBvciBAbWVkaWEuIEEgY29tbW9uIGV4YW1wbGUgZm9yIHRoaXMgaXMgQGZvbnQtZmFjZS4KKiBgRGVjbGFyYXRpb25CbG9ja2Ag4oCTIGEgUnVsZVNldCBjb25zdHJhaW5lZCBieSBhIGBTZWxlY3RvcmA7IGNvbnRhaW5zIGFuIGFycmF5IG9mIHNlbGVjdG9yIG9iamVjdHMgKGNvbW1hLXNlcGFyYXRlZCBpbiB0aGUgQ1NTKSBhcyB3ZWxsIGFzIHRoZSBydWxlcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBtYXRjaGluZyBlbGVtZW50cy4KCk5vdGU6IEEgYENTU0xpc3RgIGNhbiBjb250YWluIG90aGVyIGBDU1NMaXN0YHMgKGFuZCBgSW1wb3J0YHMgYXMgd2VsbCBhcyBhIGBDaGFyc2V0YCkgd2hpbGUgYSBgUnVsZVNldGAgY2FuIG9ubHkgY29udGFpbiBgUnVsZWBzLgoKSWYgeW91IHdhbnQgdG8gbWFuaXB1bGF0ZSBhIGBSdWxlU2V0YCwgdXNlIHRoZSBtZXRob2RzIGBhZGRSdWxlKFJ1bGUgJG9SdWxlKWAsIGBnZXRSdWxlcygpYCBhbmQgYHJlbW92ZVJ1bGUoJG1SdWxlKWAgKHdoaWNoIGFjY2VwdHMgZWl0aGVyIGEgUnVsZSBpbnN0YW5jZSBvciBhIHJ1bGUgbmFtZTsgb3B0aW9uYWxseSBzdWZmaXhlZCBieSBhIGRhc2ggdG8gcmVtb3ZlIGFsbCByZWxhdGVkIHJ1bGVzKS4KCiMjIyMgUnVsZQoKYFJ1bGVgcyBqdXN0IGhhdmUgYSBrZXkgKHRoZSBydWxlKSBhbmQgYSB2YWx1ZS4gVGhlc2UgdmFsdWVzIGFyZSBhbGwgaW5zdGFuY2VzIG9mIGEgYFZhbHVlYC4KCiMjIyMgVmFsdWUKCmBWYWx1ZWAgaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdCBvbmx5IGRlZmluZXMgdGhlIGByZW5kZXJgIG1ldGhvZC4gVGhlIGNvbmNyZXRlIHN1YmNsYXNzZXMgZm9yIGF0b21pYyB2YWx1ZSB0eXBlcyBhcmU6CgoqIGBTaXplYCDigJMgY29uc2lzdHMgb2YgYSBudW1lcmljIGBzaXplYCB2YWx1ZSBhbmQgYSB1bml0LgoqIGBDb2xvcmAg4oCTIGNvbG9ycyBjYW4gYmUgaW5wdXQgaW4gdGhlIGZvcm0gI3JyZ2diYiwgI3JnYiBvciBzY2hlbWEodmFsMSwgdmFsMiwg4oCmKSBidXQgYXJlIGFsd2F5cyBzdG9yZWQgYXMgYW4gYXJyYXkgb2YgKCdzJyA9PiB2YWwxLCAnYycgPT4gdmFsMiwgJ2gnID0+IHZhbDMsIOKApikgYW5kIG91dHB1dCBpbiB0aGUgc2Vjb25kIGZvcm0uCiogYENTU1N0cmluZ2Ag4oCTIHRoaXMgaXMganVzdCBhIHdyYXBwZXIgZm9yIHF1b3RlZCBzdHJpbmdzIHRvIGRpc3Rpbmd1aXNoIHRoZW0gZnJvbSBrZXl3b3JkczsgYWx3YXlzIG91dHB1dCB3aXRoIGRvdWJsZSBxdW90ZXMuCiogYFVSTGAg4oCTIFVSTHMgaW4gQ1NTOyBhbHdheXMgb3V0cHV0IGluIFVSTCgiIikgbm90YXRpb24uCgpUaGVyZSBpcyBhbm90aGVyIGFic3RyYWN0IHN1YmNsYXNzIG9mIGBWYWx1ZWAsIGBWYWx1ZUxpc3RgLiBBIGBWYWx1ZUxpc3RgIHJlcHJlc2VudHMgYSBsaXN0cyBvZiBgVmFsdWVgcywgc2VwYXJhdGVkIGJ5IHNvbWUgc2VwYXJhdGlvbiBjaGFyYWN0ZXIgKG1vc3RseSBgLGAsIHdoaXRlc3BhY2UsIG9yIGAvYCkuIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgYFZhbHVlTGlzdGBzOgoKKiBgUnVsZVZhbHVlTGlzdGAg4oCTIFRoZSBkZWZhdWx0IHR5cGUsIHVzZWQgdG8gcmVwcmVzZW50IGFsbCBtdWx0aS12YWx1ZWQgcnVsZXMgbGlrZSBgZm9udDogYm9sZCAxMnB4LzMgSGVsdmV0aWNhLCBWZXJkYW5hLCBzYW5zLXNlcmlmO2AgKHdoZXJlIHRoZSB2YWx1ZSB3b3VsZCBiZSBhIHdoaXRlc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHByaW1pdGl2ZSB2YWx1ZSBgYm9sZGAsIGEgc2xhc2gtc2VwYXJhdGVkIGxpc3QgYW5kIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QpLgoqIGBDU1NGdW5jdGlvbmAg4oCTIEEgc3BlY2lhbCBraW5kIG9mIHZhbHVlIHRoYXQgYWxzbyBjb250YWlucyBhIGZ1bmN0aW9uIG5hbWUgYW5kIHdoZXJlIHRoZSB2YWx1ZXMgYXJlIHRoZSBmdW5jdGlvbuKAmXMgYXJndW1lbnRzLiBBbHNvIGhhbmRsZXMgZXF1YWxzLXNpZ24tc2VwYXJhdGVkIGFyZ3VtZW50IGxpc3RzIGxpa2UgYGZpbHRlcjogYWxwaGEob3BhY2l0eT05MCk7YC4KCiMjIyMgQ29udmVuaWVuY2UgbWV0aG9kcwoKVGhlcmUgYXJlIGEgZmV3IGNvbnZlbmllbmNlIG1ldGhvZHMgb24gRG9jdW1lbnQgdG8gZWFzZSBmaW5kaW5nLCBtYW5pcHVsYXRpbmcgYW5kIGRlbGV0aW5nIHJ1bGVzOgoKKiBgZ2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKWAg4oCTIGRvZXMgd2hhdCBpdCBzYXlzOyBubyBtYXR0ZXIgaG93IGRlZXBseSBuZXN0ZWQgeW91ciBzZWxlY3RvcnMgYXJlLiBBbGlhc2VkIGFzIGBnZXRBbGxTZWxlY3RvcnMoKWAuCiogYGdldEFsbFJ1bGVTZXRzKClgIOKAkyBkb2VzIHdoYXQgaXQgc2F5czsgbm8gbWF0dGVyIGhvdyBkZWVwbHkgbmVzdGVkIHlvdXIgcnVsZSBzZXRzIGFyZS4KKiBgZ2V0QWxsVmFsdWVzKClgIOKAkyBmaW5kcyBhbGwgYFZhbHVlYCBvYmplY3RzIGluc2lkZSBgUnVsZWBzLgoKIyMgVG8tRG8KCiogTW9yZSBjb252ZW5pZW5jZSBtZXRob2RzIFtsaWtlIGBzZWxlY3RvcnNXaXRoRWxlbWVudCgkc0lkL0NsYXNzL1RhZ05hbWUpYCwgYGF0dHJpYnV0ZXNPZlR5cGUoJHNUeXBlKWAsIGByZW1vdmVBdHRyaWJ1dGVzT2ZUeXBlKCRzVHlwZSlgXQoqIFJlYWwgbXVsdGlieXRlIHN1cHBvcnQuIEN1cnJlbnRseSBvbmx5IG11bHRpYnl0ZSBjaGFyc2V0cyB3aG9zZSBmaXJzdCAyNTUgY29kZSBwb2ludHMgdGFrZSB1cCBvbmx5IG9uZSBieXRlIGFuZCBhcmUgaWRlbnRpY2FsIHdpdGggQVNDSUkgYXJlIHN1cHBvcnRlZCAoeWVzLCBVVEYtOCBmaXRzIHRoaXMgZGVzY3JpcHRpb24pLgoqIE5hbWVkIGNvbG9yIHN1cHBvcnQgKHVzaW5nIGBDb2xvcmAgaW5zdGVhZCBvZiBhbiBhbm9ueW1vdXMgc3RyaW5nIGxpdGVyYWwpCgojIyBVc2UgY2FzZXMKCiMjIyBVc2UgYFBhcnNlcmAgdG8gcHJlcGVuZCBhbiBpZCB0byBhbGwgc2VsZWN0b3JzCgpgYGBwaHAKJHNNeUlkID0gIiNteV9pZCI7CiRvUGFyc2VyID0gbmV3IFNhYmJlcndvcm1cQ1NTXFBhcnNlcigkc1RleHQpOwokb0NzcyA9ICRvUGFyc2VyLT5wYXJzZSgpOwpmb3JlYWNoKCRvQ3NzLT5nZXRBbGxEZWNsYXJhdGlvbkJsb2NrcygpIGFzICRvQmxvY2spIHsKCWZvcmVhY2goJG9CbG9jay0+Z2V0U2VsZWN0b3JzKCkgYXMgJG9TZWxlY3RvcikgewoJCS8vTG9vcCBvdmVyIGFsbCBzZWxlY3RvciBwYXJ0cyAodGhlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzIGluIGEgc2VsZWN0b3IpIGFuZCBwcmVwZW5kIHRoZSBpZAoJCSRvU2VsZWN0b3ItPnNldFNlbGVjdG9yKCRzTXlJZC4nICcuJG9TZWxlY3Rvci0+Z2V0U2VsZWN0b3IoKSk7Cgl9Cn0KYGBgCgojIyMgU2hyaW5rIGFsbCBhYnNvbHV0ZSBzaXplcyB0byBoYWxmCgpgYGBwaHAKJG9QYXJzZXIgPSBuZXcgU2FiYmVyd29ybVxDU1NcUGFyc2VyKCRzVGV4dCk7CiRvQ3NzID0gJG9QYXJzZXItPnBhcnNlKCk7CmZvcmVhY2goJG9Dc3MtPmdldEFsbFZhbHVlcygpIGFzICRtVmFsdWUpIHsKCWlmKCRtVmFsdWUgaW5zdGFuY2VvZiBDU1NTaXplICYmICEkbVZhbHVlLT5pc1JlbGF0aXZlKCkpIHsKCQkkbVZhbHVlLT5zZXRTaXplKCRtVmFsdWUtPmdldFNpemUoKS8yKTsKCX0KfQpgYGAKCiMjIyBSZW1vdmUgdW53YW50ZWQgcnVsZXMKCmBgYHBocAokb1BhcnNlciA9IG5ldyBTYWJiZXJ3b3JtXENTU1xQYXJzZXIoJHNUZXh0KTsKJG9Dc3MgPSAkb1BhcnNlci0+cGFyc2UoKTsKZm9yZWFjaCgkb0Nzcy0+Z2V0QWxsUnVsZVNldHMoKSBhcyAkb1J1bGVTZXQpIHsKCSRvUnVsZVNldC0+cmVtb3ZlUnVsZSgnZm9udC0nKTsgLy9Ob3RlIHRoYXQgdGhlIGFkZGVkIGRhc2ggd2lsbCBtYWtlIHRoaXMgcmVtb3ZlIGFsbCBydWxlcyBzdGFydGluZyB3aXRoIGZvbnQtIChsaWtlIGZvbnQtc2l6ZSwgZm9udC13ZWlnaHQsIGV0Yy4pIGFzIHdlbGwgYXMgYSBwb3RlbnRpYWwgZm9udC1ydWxlCgkkb1J1bGVTZXQtPnJlbW92ZVJ1bGUoJ2N1cnNvcicpOwp9CmBgYAoKIyMjIE91dHB1dAoKVG8gb3V0cHV0IHRoZSBlbnRpcmUgQ1NTIGRvY3VtZW50IGludG8gYSB2YXJpYWJsZSwganVzdCB1c2UgYC0+cmVuZGVyKClgOgoKYGBgcGhwCiRvQ3NzUGFyc2VyID0gbmV3IFNhYmJlcndvcm1cQ1NTXFBhcnNlcihmaWxlX2dldF9jb250ZW50cygnc29tZWZpbGUuY3NzJykpOwokb0Nzc0RvY3VtZW50ID0gJG9Dc3NQYXJzZXItPnBhcnNlKCk7CnByaW50ICRvQ3NzRG9jdW1lbnQtPnJlbmRlcigpOwpgYGAKCklmIHlvdSB3YW50IHRvIGZvcm1hdCB0aGUgb3V0cHV0LCBwYXNzIGFuIGluc3RhbmNlIG9mIHR5cGUgYFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdGA6CgpgYGBwaHAKJG9Gb3JtYXQgPSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ6OmNyZWF0ZSgpLT5pbmRlbnRXaXRoU3BhY2VzKDQpLT5zZXRTcGFjZUJldHdlZW5SdWxlcygiXG4iKTsKcHJpbnQgJG9Dc3NEb2N1bWVudC0+cmVuZGVyKCRvRm9ybWF0KTsKYGBgCgpPciB1c2Ugb25lIG9mIHRoZSBwcmVkZWZpbmVkIGZvcm1hdHM6CgpgYGBwaHAKcHJpbnQgJG9Dc3NEb2N1bWVudC0+cmVuZGVyKFNhYmJlcndvcm1cQ1NTXE91dHB1dEZvcm1hdDo6Y3JlYXRlUHJldHR5KCkpOwpwcmludCAkb0Nzc0RvY3VtZW50LT5yZW5kZXIoU2FiYmVyd29ybVxDU1NcT3V0cHV0Rm9ybWF0OjpjcmVhdGVDb21wYWN0KCkpOwpgYGAKClRvIHNlZSB3aGF0IHlvdSBjYW4gZG8gd2l0aCBvdXRwdXQgZm9ybWF0dGluZywgbG9vayBhdCB0aGUgdGVzdHMgaW4gYHRlc3RzL1NhYmJlcndvcm0vQ1NTL091dHB1dEZvcm1hdFRlc3QucGhwYC4KCiMjIEV4YW1wbGVzCgojIyMgRXhhbXBsZSAxIChBdC1SdWxlcykKCiMjIyMgSW5wdXQKCmBgYGNzcwpAY2hhcnNldCAidXRmLTgiOwoKQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICJDcmFzc1Jvb3RzIjsKICBzcmM6IHVybCgiLi4vbWVkaWEvY3IudHRmIikKfQoKaHRtbCwgYm9keSB7CiAgICBmb250LXNpemU6IDEuNmVtCn0KCkBrZXlmcmFtZXMgbXltb3ZlIHsKCWZyb20geyB0b3A6IDBweDsgfQoJdG8geyB0b3A6IDIwMHB4OyB9Cn0KCmBgYAoKIyMjIyBTdHJ1Y3R1cmUgKGB2YXJfZHVtcCgpYCkKCmBgYHBocApjbGFzcyBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XERvY3VtZW50IzQgKDIpIHsKICBwcm90ZWN0ZWQgJGFDb250ZW50cyA9PgogIGFycmF5KDQpIHsKICAgIFswXSA9PgogICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQ2hhcnNldCM2ICgyKSB7CiAgICAgIHByaXZhdGUgJHNDaGFyc2V0ID0+CiAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENTU1N0cmluZyM1ICgyKSB7CiAgICAgICAgcHJpdmF0ZSAkc1N0cmluZyA9PgogICAgICAgIHN0cmluZyg1KSAidXRmLTgiCiAgICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgICAgaW50KDEpCiAgICAgIH0KICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgIGludCgxKQogICAgfQogICAgWzFdID0+CiAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XEF0UnVsZVNldCM3ICg0KSB7CiAgICAgIHByaXZhdGUgJHNUeXBlID0+CiAgICAgIHN0cmluZyg5KSAiZm9udC1mYWNlIgogICAgICBwcml2YXRlICRzQXJncyA9PgogICAgICBzdHJpbmcoMCkgIiIKICAgICAgcHJpdmF0ZSAkYVJ1bGVzID0+CiAgICAgIGFycmF5KDIpIHsKICAgICAgICAnZm9udC1mYW1pbHknID0+CiAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgWzBdID0+CiAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUjOCAoNCkgewogICAgICAgICAgICBwcml2YXRlICRzUnVsZSA9PgogICAgICAgICAgICBzdHJpbmcoMTEpICJmb250LWZhbWlseSIKICAgICAgICAgICAgcHJpdmF0ZSAkbVZhbHVlID0+CiAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXENTU1N0cmluZyM5ICgyKSB7CiAgICAgICAgICAgICAgcHJpdmF0ZSAkc1N0cmluZyA9PgogICAgICAgICAgICAgIHN0cmluZygxMCkgIkNyYXNzUm9vdHMiCiAgICAgICAgICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgICAgICAgICAgaW50KDQpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJpdmF0ZSAkYklzSW1wb3J0YW50ID0+CiAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICBpbnQoNCkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJ3NyYycgPT4KICAgICAgICBhcnJheSgxKSB7CiAgICAgICAgICBbMF0gPT4KICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSMxMCAoNCkgewogICAgICAgICAgICBwcml2YXRlICRzUnVsZSA9PgogICAgICAgICAgICBzdHJpbmcoMykgInNyYyIKICAgICAgICAgICAgcHJpdmF0ZSAkbVZhbHVlID0+CiAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFVSTCMxMSAoMikgewogICAgICAgICAgICAgIHByaXZhdGUgJG9VUkwgPT4KICAgICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxDU1NTdHJpbmcjMTIgKDIpIHsKICAgICAgICAgICAgICAgIHByaXZhdGUgJHNTdHJpbmcgPT4KICAgICAgICAgICAgICAgIHN0cmluZygxNSkgIi4uL21lZGlhL2NyLnR0ZiIKICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgaW50KDUpCiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgIGludCg1KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaXZhdGUgJGJJc0ltcG9ydGFudCA9PgogICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgaW50KDUpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICBpbnQoMykKICAgIH0KICAgIFsyXSA9PgogICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrIzEzICgzKSB7CiAgICAgIHByaXZhdGUgJGFTZWxlY3RvcnMgPT4KICAgICAgYXJyYXkoMikgewogICAgICAgIFswXSA9PgogICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yIzE0ICgyKSB7CiAgICAgICAgICBwcml2YXRlICRzU2VsZWN0b3IgPT4KICAgICAgICAgIHN0cmluZyg0KSAiaHRtbCIKICAgICAgICAgIHByaXZhdGUgJGlTcGVjaWZpY2l0eSA9PgogICAgICAgICAgTlVMTAogICAgICAgIH0KICAgICAgICBbMV0gPT4KICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3RvciMxNSAoMikgewogICAgICAgICAgcHJpdmF0ZSAkc1NlbGVjdG9yID0+CiAgICAgICAgICBzdHJpbmcoNCkgImJvZHkiCiAgICAgICAgICBwcml2YXRlICRpU3BlY2lmaWNpdHkgPT4KICAgICAgICAgIE5VTEwKICAgICAgICB9CiAgICAgIH0KICAgICAgcHJpdmF0ZSAkYVJ1bGVzID0+CiAgICAgIGFycmF5KDEpIHsKICAgICAgICAnZm9udC1zaXplJyA9PgogICAgICAgIGFycmF5KDEpIHsKICAgICAgICAgIFswXSA9PgogICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUnVsZVxSdWxlIzE2ICg0KSB7CiAgICAgICAgICAgIHByaXZhdGUgJHNSdWxlID0+CiAgICAgICAgICAgIHN0cmluZyg5KSAiZm9udC1zaXplIgogICAgICAgICAgICBwcml2YXRlICRtVmFsdWUgPT4KICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcU2l6ZSMxNyAoNCkgewogICAgICAgICAgICAgIHByaXZhdGUgJGZTaXplID0+CiAgICAgICAgICAgICAgZG91YmxlKDEuNikKICAgICAgICAgICAgICBwcml2YXRlICRzVW5pdCA9PgogICAgICAgICAgICAgIHN0cmluZygyKSAiZW0iCiAgICAgICAgICAgICAgcHJpdmF0ZSAkYklzQ29sb3JDb21wb25lbnQgPT4KICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgIGludCg5KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaXZhdGUgJGJJc0ltcG9ydGFudCA9PgogICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgaW50KDkpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICBpbnQoOCkKICAgIH0KICAgIFszXSA9PgogICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcQ1NTTGlzdFxLZXlGcmFtZSMxOCAoNCkgewogICAgICBwcml2YXRlICR2ZW5kb3JLZXlGcmFtZSA9PgogICAgICBzdHJpbmcoOSkgImtleWZyYW1lcyIKICAgICAgcHJpdmF0ZSAkYW5pbWF0aW9uTmFtZSA9PgogICAgICBzdHJpbmcoNikgIm15bW92ZSIKICAgICAgcHJvdGVjdGVkICRhQ29udGVudHMgPT4KICAgICAgYXJyYXkoMikgewogICAgICAgIFswXSA9PgogICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jayMxOSAoMykgewogICAgICAgICAgcHJpdmF0ZSAkYVNlbGVjdG9ycyA9PgogICAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgICBbMF0gPT4KICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcU2VsZWN0b3IjMjAgKDIpIHsKICAgICAgICAgICAgICBwcml2YXRlICRzU2VsZWN0b3IgPT4KICAgICAgICAgICAgICBzdHJpbmcoNCkgImZyb20iCiAgICAgICAgICAgICAgcHJpdmF0ZSAkaVNwZWNpZmljaXR5ID0+CiAgICAgICAgICAgICAgTlVMTAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBwcml2YXRlICRhUnVsZXMgPT4KICAgICAgICAgIGFycmF5KDEpIHsKICAgICAgICAgICAgJ3RvcCcgPT4KICAgICAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgICAgIFswXSA9PgogICAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSMyMSAoNCkgewogICAgICAgICAgICAgICAgcHJpdmF0ZSAkc1J1bGUgPT4KICAgICAgICAgICAgICAgIHN0cmluZygzKSAidG9wIgogICAgICAgICAgICAgICAgcHJpdmF0ZSAkbVZhbHVlID0+CiAgICAgICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxTaXplIzIyICg0KSB7CiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGZTaXplID0+CiAgICAgICAgICAgICAgICAgIGRvdWJsZSgwKQogICAgICAgICAgICAgICAgICBwcml2YXRlICRzVW5pdCA9PgogICAgICAgICAgICAgICAgICBzdHJpbmcoMikgInB4IgogICAgICAgICAgICAgICAgICBwcml2YXRlICRiSXNDb2xvckNvbXBvbmVudCA9PgogICAgICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICAgICAgaW50KDEzKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHJpdmF0ZSAkYklzSW1wb3J0YW50ID0+CiAgICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgICAgICAgICAgICBpbnQoMTMpCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgIGludCgxMykKICAgICAgICB9CiAgICAgICAgWzFdID0+CiAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrIzIzICgzKSB7CiAgICAgICAgICBwcml2YXRlICRhU2VsZWN0b3JzID0+CiAgICAgICAgICBhcnJheSgxKSB7CiAgICAgICAgICAgIFswXSA9PgogICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxTZWxlY3RvciMyNCAoMikgewogICAgICAgICAgICAgIHByaXZhdGUgJHNTZWxlY3RvciA9PgogICAgICAgICAgICAgIHN0cmluZygyKSAidG8iCiAgICAgICAgICAgICAgcHJpdmF0ZSAkaVNwZWNpZmljaXR5ID0+CiAgICAgICAgICAgICAgTlVMTAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBwcml2YXRlICRhUnVsZXMgPT4KICAgICAgICAgIGFycmF5KDEpIHsKICAgICAgICAgICAgJ3RvcCcgPT4KICAgICAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgICAgIFswXSA9PgogICAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSMyNSAoNCkgewogICAgICAgICAgICAgICAgcHJpdmF0ZSAkc1J1bGUgPT4KICAgICAgICAgICAgICAgIHN0cmluZygzKSAidG9wIgogICAgICAgICAgICAgICAgcHJpdmF0ZSAkbVZhbHVlID0+CiAgICAgICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxTaXplIzI2ICg0KSB7CiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGZTaXplID0+CiAgICAgICAgICAgICAgICAgIGRvdWJsZSgyMDApCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJHNVbml0ID0+CiAgICAgICAgICAgICAgICAgIHN0cmluZygyKSAicHgiCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGJJc0NvbG9yQ29tcG9uZW50ID0+CiAgICAgICAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgICBpbnQoMTQpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwcml2YXRlICRiSXNJbXBvcnRhbnQgPT4KICAgICAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICAgIGludCgxNCkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgaW50KDE0KQogICAgICAgIH0KICAgICAgfQogICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgaW50KDEyKQogICAgfQogIH0KICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICBpbnQoMSkKfQoKYGBgCgojIyMjIE91dHB1dCAoYHJlbmRlcigpYCkKCmBgYGNzcwpAY2hhcnNldCAidXRmLTgiOwpAZm9udC1mYWNlIHtmb250LWZhbWlseTogIkNyYXNzUm9vdHMiO3NyYzogdXJsKCIuLi9tZWRpYS9jci50dGYiKTt9Cmh0bWwsIGJvZHkge2ZvbnQtc2l6ZTogMS42ZW07fQpAa2V5ZnJhbWVzIG15bW92ZSB7ZnJvbSB7dG9wOiAwcHg7fQoJdG8ge3RvcDogMjAwcHg7fX0KYGBgCgojIyMgRXhhbXBsZSAyIChWYWx1ZXMpCgojIyMjIElucHV0CgpgYGBjc3MKI2hlYWRlciB7CgltYXJnaW46IDEwcHggMmVtIDFjbSAyJTsKCWZvbnQtZmFtaWx5OiBWZXJkYW5hLCBIZWx2ZXRpY2EsICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOwoJY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9CgpgYGAKCiMjIyMgU3RydWN0dXJlIChgdmFyX2R1bXAoKWApCgpgYGBwaHAKY2xhc3MgU2FiYmVyd29ybVxDU1NcQ1NTTGlzdFxEb2N1bWVudCM0ICgyKSB7CiAgcHJvdGVjdGVkICRhQ29udGVudHMgPT4KICBhcnJheSgxKSB7CiAgICBbMF0gPT4KICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVTZXRcRGVjbGFyYXRpb25CbG9jayM1ICgzKSB7CiAgICAgIHByaXZhdGUgJGFTZWxlY3RvcnMgPT4KICAgICAgYXJyYXkoMSkgewogICAgICAgIFswXSA9PgogICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yIzYgKDIpIHsKICAgICAgICAgIHByaXZhdGUgJHNTZWxlY3RvciA9PgogICAgICAgICAgc3RyaW5nKDcpICIjaGVhZGVyIgogICAgICAgICAgcHJpdmF0ZSAkaVNwZWNpZmljaXR5ID0+CiAgICAgICAgICBOVUxMCiAgICAgICAgfQogICAgICB9CiAgICAgIHByaXZhdGUgJGFSdWxlcyA9PgogICAgICBhcnJheSgzKSB7CiAgICAgICAgJ21hcmdpbicgPT4KICAgICAgICBhcnJheSgxKSB7CiAgICAgICAgICBbMF0gPT4KICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSM3ICg0KSB7CiAgICAgICAgICAgIHByaXZhdGUgJHNSdWxlID0+CiAgICAgICAgICAgIHN0cmluZyg2KSAibWFyZ2luIgogICAgICAgICAgICBwcml2YXRlICRtVmFsdWUgPT4KICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcUnVsZVZhbHVlTGlzdCMxMiAoMykgewogICAgICAgICAgICAgIHByb3RlY3RlZCAkYUNvbXBvbmVudHMgPT4KICAgICAgICAgICAgICBhcnJheSg0KSB7CiAgICAgICAgICAgICAgICBbMF0gPT4KICAgICAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFNpemUjOCAoNCkgewogICAgICAgICAgICAgICAgICBwcml2YXRlICRmU2l6ZSA9PgogICAgICAgICAgICAgICAgICBkb3VibGUoMTApCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJHNVbml0ID0+CiAgICAgICAgICAgICAgICAgIHN0cmluZygyKSAicHgiCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGJJc0NvbG9yQ29tcG9uZW50ID0+CiAgICAgICAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgICBpbnQoMikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFsxXSA9PgogICAgICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcU2l6ZSM5ICg0KSB7CiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGZTaXplID0+CiAgICAgICAgICAgICAgICAgIGRvdWJsZSgyKQogICAgICAgICAgICAgICAgICBwcml2YXRlICRzVW5pdCA9PgogICAgICAgICAgICAgICAgICBzdHJpbmcoMikgImVtIgogICAgICAgICAgICAgICAgICBwcml2YXRlICRiSXNDb2xvckNvbXBvbmVudCA9PgogICAgICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICAgICAgaW50KDIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBbMl0gPT4KICAgICAgICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFNpemUjMTAgKDQpIHsKICAgICAgICAgICAgICAgICAgcHJpdmF0ZSAkZlNpemUgPT4KICAgICAgICAgICAgICAgICAgZG91YmxlKDEpCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJHNVbml0ID0+CiAgICAgICAgICAgICAgICAgIHN0cmluZygyKSAiY20iCiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJGJJc0NvbG9yQ29tcG9uZW50ID0+CiAgICAgICAgICAgICAgICAgIGJvb2woZmFsc2UpCiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgICBpbnQoMikKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFszXSA9PgogICAgICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcU2l6ZSMxMSAoNCkgewogICAgICAgICAgICAgICAgICBwcml2YXRlICRmU2l6ZSA9PgogICAgICAgICAgICAgICAgICBkb3VibGUoMikKICAgICAgICAgICAgICAgICAgcHJpdmF0ZSAkc1VuaXQgPT4KICAgICAgICAgICAgICAgICAgc3RyaW5nKDEpICIlIgogICAgICAgICAgICAgICAgICBwcml2YXRlICRiSXNDb2xvckNvbXBvbmVudCA9PgogICAgICAgICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICAgICAgaW50KDIpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHByb3RlY3RlZCAkc1NlcGFyYXRvciA9PgogICAgICAgICAgICAgIHN0cmluZygxKSAiICIKICAgICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgICBpbnQoMikKICAgICAgICAgICAgfQogICAgICAgICAgICBwcml2YXRlICRiSXNJbXBvcnRhbnQgPT4KICAgICAgICAgICAgYm9vbChmYWxzZSkKICAgICAgICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgICAgICAgIGludCgyKQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAnZm9udC1mYW1pbHknID0+CiAgICAgICAgYXJyYXkoMSkgewogICAgICAgICAgWzBdID0+CiAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xSdWxlXFJ1bGUjMTMgKDQpIHsKICAgICAgICAgICAgcHJpdmF0ZSAkc1J1bGUgPT4KICAgICAgICAgICAgc3RyaW5nKDExKSAiZm9udC1mYW1pbHkiCiAgICAgICAgICAgIHByaXZhdGUgJG1WYWx1ZSA9PgogICAgICAgICAgICBjbGFzcyBTYWJiZXJ3b3JtXENTU1xWYWx1ZVxSdWxlVmFsdWVMaXN0IzE1ICgzKSB7CiAgICAgICAgICAgICAgcHJvdGVjdGVkICRhQ29tcG9uZW50cyA9PgogICAgICAgICAgICAgIGFycmF5KDQpIHsKICAgICAgICAgICAgICAgIFswXSA9PgogICAgICAgICAgICAgICAgc3RyaW5nKDcpICJWZXJkYW5hIgogICAgICAgICAgICAgICAgWzFdID0+CiAgICAgICAgICAgICAgICBzdHJpbmcoOSkgIkhlbHZldGljYSIKICAgICAgICAgICAgICAgIFsyXSA9PgogICAgICAgICAgICAgICAgY2xhc3MgU2FiYmVyd29ybVxDU1NcVmFsdWVcQ1NTU3RyaW5nIzE0ICgyKSB7CiAgICAgICAgICAgICAgICAgIHByaXZhdGUgJHNTdHJpbmcgPT4KICAgICAgICAgICAgICAgICAgc3RyaW5nKDkpICJHaWxsIFNhbnMiCiAgICAgICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgICAgICBpbnQoMykKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFszXSA9PgogICAgICAgICAgICAgICAgc3RyaW5nKDEwKSAic2Fucy1zZXJpZiIKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcHJvdGVjdGVkICRzU2VwYXJhdG9yID0+CiAgICAgICAgICAgICAgc3RyaW5nKDEpICIsIgogICAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICAgIGludCgzKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHByaXZhdGUgJGJJc0ltcG9ydGFudCA9PgogICAgICAgICAgICBib29sKGZhbHNlKQogICAgICAgICAgICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICAgICAgICAgICAgaW50KDMpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICdjb2xvcicgPT4KICAgICAgICBhcnJheSgxKSB7CiAgICAgICAgICBbMF0gPT4KICAgICAgICAgIGNsYXNzIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZSMxNiAoNCkgewogICAgICAgICAgICBwcml2YXRlICRzUnVsZSA9PgogICAgICAgICAgICBzdHJpbmcoNSkgImNvbG9yIgogICAgICAgICAgICBwcml2YXRlICRtVmFsdWUgPT4KICAgICAgICAgICAgc3RyaW5nKDMpICJyZWQiCiAgICAgICAgICAgIHByaXZhdGUgJGJJc0ltcG9ydGFudCA9PgogICAgICAgICAgICBib29sKHRydWUpCiAgICAgICAgICAgIHByb3RlY3RlZCAkaUxpbmVObyA9PgogICAgICAgICAgICBpbnQoNCkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcHJvdGVjdGVkICRpTGluZU5vID0+CiAgICAgIGludCgxKQogICAgfQogIH0KICBwcm90ZWN0ZWQgJGlMaW5lTm8gPT4KICBpbnQoMSkKfQoKYGBgCgojIyMjIE91dHB1dCAoYHJlbmRlcigpYCkKCmBgYGNzcwojaGVhZGVyIHttYXJnaW46IDEwcHggMmVtIDFjbSAyJTtmb250LWZhbWlseTogVmVyZGFuYSxIZWx2ZXRpY2EsIkdpbGwgU2FucyIsc2Fucy1zZXJpZjtjb2xvcjogcmVkICFpbXBvcnRhbnQ7fQpgYGAKCiMjIENvbnRyaWJ1dG9ycy9UaGFua3MgdG8KCiogW3JheGJnXShodHRwczovL2dpdGh1Yi5jb20vcmF4YmcpIGZvciBjb250cmlidXRpb25zIHRvIHBhcnNlIGBjYWxjYCwgZ3JpZCBsaW5lcywgYW5kIHZhcmlvdXMgYnVnZml4ZXMuCiogW3dlc3RvbnJ1dGVyXShodHRwczovL2dpdGh1Yi5jb20vd2VzdG9ucnV0ZXIpIGZvciBidWdmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoqIFtGTUNvcnpdKGh0dHBzOi8vZ2l0aHViLmNvbS9GTUNvcnopIGZvciBtYW55IHBhdGNoZXMgYW5kIHN1Z2dlc3Rpb25zLCBmb3IgYmVpbmcgYWJsZSB0byBwYXJzZSBjb21tZW50cyBhbmQgSUUgaGFja3MgKGluIGxlbmllbnQgbW9kZSkuCiogW0x1bGxhYm90XShodHRwczovL2dpdGh1Yi5jb20vTHVsbGFib3QpIGZvciBhIHBhdGNoIHRoYXQgYWxsb3dzIHRvIGtub3cgdGhlIGxpbmUgbnVtYmVyIGZvciBlYWNoIHBhcnNlZCB0b2tlbi4KKiBbanUxaXVzXShodHRwczovL2dpdGh1Yi5jb20vanUxaXVzKSBmb3IgdGhlIHNwZWNpZmljaXR5IHBhcnNpbmcgY29kZSBhbmQgdGhlIGFiaWxpdHkgdG8gZXhwYW5kL2NvbXBhY3Qgc2hvcnRoYW5kIHByb3BlcnRpZXMuCiogW29zc2lua2luZV0oaHR0cHM6Ly9naXRodWIuY29tL29zc2lua2luZSkgZm9yIGEgMTUwIHRpbWUgcGVyZm9ybWFuY2UgYm9vc3QuCiogW0dhcnlKb25lc10oaHR0cHM6Ly9naXRodWIuY29tL0dhcnlKb25lcykgZm9yIGxvdHMgb2YgaW5wdXQgYW5kIFtodHRwOi8vY3NzLXNwZWNpZmljaXR5LmluZm8vXShodHRwOi8vY3NzLXNwZWNpZmljaXR5LmluZm8vKS4KKiBbZG9jdGV1cmtsZWluXShodHRwczovL2dpdGh1Yi5jb20vZG9jdGV1cmtsZWluKSBmb3Igb3V0cHV0IGZvcm1hdHRpbmcgYW5kIGBDU1NMaXN0LT5yZW1vdmUoKWAgaW5zcGlyYXRpb24uCiogW25pY29sb3BpZ25hdGVsbGldKGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNvbG9waWduYXRlbGxpKSBmb3IgUFNSLTAgY29tcGF0aWJpbGl0eS4KKiBbZGllZ29lbWJhcmNhZGVyb10oaHR0cHM6Ly9naXRodWIuY29tL2RpZWdvZW1iYXJjYWRlcm8pIGZvciBrZXlmcmFtZSBhdC1ydWxlIHBhcnNpbmcuCiogW2dvZXRhc10oaHR0cHM6Ly9naXRodWIuY29tL2dvZXRhcykgZm9yIEBuYW1lc3BhY2UgYXQtcnVsZSBzdXBwb3J0LgoqIFtWaWV3IGZ1bGwgbGlzdF0oaHR0cHM6Ly9naXRodWIuY29tL3NhYmJlcndvcm0vUEhQLUNTUy1QYXJzZXIvY29udHJpYnV0b3JzKQoKIyMgTWlzYwoKKiBMZWdhY3kgU3VwcG9ydDogVGhlIGxhdGVzdCBwcmUtUFNSLTAgdmVyc2lvbiBvZiB0aGlzIHByb2plY3QgY2FuIGJlIGNoZWNrZWQgd2l0aCB0aGUgYDAuOS4wYCB0YWcuCiogUnVubmluZyBUZXN0czogVG8gcnVuIGFsbCB1bml0IHRlc3RzIGZvciB0aGlzIHByb2plY3QsIHJ1biBgY29tcG9zZXIgaW5zdGFsbGAgdG8gaW5zdGFsbCBwaHB1bml0IGFuZCB1c2UgYC4vdmVuZG9yL3BocHVuaXQvcGhwdW5pdC9waHB1bml0YC4KCiMjIExpY2Vuc2UKClBIUC1DU1MtUGFyc2VyIGlzIGZyZWVseSBkaXN0cmlidXRhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbiBNSVQtc3R5bGUgbGljZW5zZS4KCkNvcHlyaWdodCAoYykgMjAxMSBSYXBoYWVsIFNjaHdlaWtlcnQsIGh0dHA6Ly9zYWJiZXJ3b3JtLmNvbS8KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/bootstrap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnNwbF9hdXRvbG9hZF9yZWdpc3RlcihmdW5jdGlvbigkY2xhc3MpCnsKICAgICRmaWxlID0gX19ESVJfXy4nLy4uL2xpYi8nLnN0cnRyKCRjbGFzcywgJ1xcJywgJy8nKS4nLnBocCc7CiAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgcmVxdWlyZSAkZmlsZTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfSk7]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-calc-no-space-around-minus.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsgd2lkdGg6IGNhbGMoNTAlIC04cHgpOyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-charset-after-rule.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2lkIHsKICBwcm9wOiB2YXIoLS12YWwpOwp9CgpAY2hhcnNldCAndXRmLTE2JzsK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-charset-in-block.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QG1lZGlhIHByaW50IHsKICBAY2hhcnNldCAndXRmLTE2JzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-empty-grid-linename.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IFtdIDEwMHB4OyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-empty.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-end-token-2.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hvbWUgLmJnLWxheW91dCB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgvYnVuZGxlcy9tYWluL2ltZy9iZzEucG5nPzUpO307]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-end-token.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogVGVzdCBjb21tZW50Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-fault-tolerance.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QxIHsKCS8vZ2FnYTogaGVsbG87Cn0KCi50ZXN0MiB7CgkqaGVsbG86IDE7CgloZWxsbzogMi4yOwoJaGVsbG86IDIwMDAwMDAwMDAwMDAuMjsKfQoKI3Rlc3QgewoJI2hlbGxvOiAxfQoKI3Rlc3QyIHsKCWhlbHA6IG5vbmU7]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/-tobedone.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnNvbWVbc2VsZWN0b3JzLW1heT0nY29udGFpbi1hLXsnXSB7CgkKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAyMDBweCkgewogIC50ZXN0IHsKICAgIHByb3A6IHZhbDsKICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/1readme.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAiQ3Jhc3NSb290cyI7CiAgc3JjOiB1cmwoIi4uL21lZGlhL2NyLnR0ZiIpCn0KCQpodG1sLCBib2R5IHsKCWZvbnQtc2l6ZTogMS42ZW0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/2readme.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CgltYXJnaW46IDEwcHggMmVtIDFjbSAyJTsKCWZvbnQtZmFtaWx5OiBWZXJkYW5hLCBIZWx2ZXRpY2EsICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOwoJY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/atrules.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsKCkBmb250LWZhY2UgewoJZm9udC1mYW1pbHk6ICJDcmFzc1Jvb3RzIjsKCXNyYzogdXJsKCIuLi9tZWRpYS9jci50dGYiKQp9CgpodG1sLCBib2R5IHsKCWZvbnQtc2l6ZTogLTAuNmVtCn0KCkBrZXlmcmFtZXMgbXltb3ZlIHsKCWZyb20geyB0b3A6IDBweDsgfQoJdG8geyB0b3A6IDIwMHB4OyB9Cn0KCkAtbW96LWtleWZyYW1lcyBzb21lLW1vdmUgewoJZnJvbSB7IHRvcDogMHB4OyB9Cgl0byB7IHRvcDogMjAwcHg7IH0KfQoKQHN1cHBvcnRzICggKHBlcnNwZWN0aXZlOiAxMHB4KSBvciAoLW1vei1wZXJzcGVjdGl2ZTogMTBweCkgb3IgKC13ZWJraXQtcGVyc3BlY3RpdmU6IDEwcHgpIG9yICgtbXMtcGVyc3BlY3RpdmU6IDEwcHgpIG9yICgtby1wZXJzcGVjdGl2ZTogMTBweCkgKSB7Cglib2R5IHsKCQlmb250LWZhbWlseTogJ0hlbHZldGljYSc7Cgl9Cn0KCkBwYWdlIDpwc2V1ZG8tY2xhc3MgewogIG1hcmdpbjoyaW47Cn0KCkAtbW96LWRvY3VtZW50IHVybChodHRwOi8vd3d3LnczLm9yZy8pLAogICAgICAgICAgICAgICB1cmwtcHJlZml4KGh0dHA6Ly93d3cudzMub3JnL1N0eWxlLyksCiAgICAgICAgICAgICAgIGRvbWFpbihtb3ppbGxhLm9yZyksCiAgICAgICAgICAgICAgIHJlZ2V4cCgiaHR0cHM6LioiKSB7CiAgLyogQ1NTIHJ1bGVzIGhlcmUgYXBwbHkgdG86CiAgICAgKyBUaGUgcGFnZSAiaHR0cDovL3d3dy53My5vcmcvIi4KICAgICArIEFueSBwYWdlIHdob3NlIFVSTCBiZWdpbnMgd2l0aCAiaHR0cDovL3d3dy53My5vcmcvU3R5bGUvIgogICAgICsgQW55IHBhZ2Ugd2hvc2UgVVJMJ3MgaG9zdCBpcyAibW96aWxsYS5vcmciIG9yIGVuZHMgd2l0aAogICAgICAgIi5tb3ppbGxhLm9yZyIKICAgICArIEFueSBwYWdlIHdob3NlIFVSTCBzdGFydHMgd2l0aCAiaHR0cHM6IiAqLwogCiAgLyogbWFrZSB0aGUgYWJvdmUtbWVudGlvbmVkIHBhZ2VzIHJlYWxseSB1Z2x5ICovCiAgYm9keSB7IGNvbG9yOiBwdXJwbGU7IGJhY2tncm91bmQ6IHllbGxvdzsgfQp9CgpAbWVkaWEgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkgewogIEAtbXMtdmlld3BvcnQgewogICAgd2lkdGg6IDEwMjRweDsKICAgIGhlaWdodDogNzY4cHg7CiAgfQogIC8qIENTUyBmb3IgbGFuZHNjYXBlIGxheW91dCBnb2VzIGhlcmUgKi8KfQoKQHJlZ2lvbi1zdHlsZSAjaW50cm8gewogICAgcCB7IGNvbG9yOiBibHVlOyB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/calc-nested.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewogIGZvbnQtc2l6ZTogY2FsYygoMyAqIDRweCkgKyAtMnB4KTsKICB0b3A6IGNhbGMoMjAwcHggLSBjYWxjKDIwICogM3B4KSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/calc.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsgd2lkdGg6IGNhbGMoMTAwJSAvIDQpOyB9CmRpdiB7IG1hcmdpbi10b3A6IGNhbGMoLTEyMCUgLSA0cHgpOyB9CmRpdiB7CgloZWlnaHQ6IC13ZWJraXQtY2FsYyg5LzE2ICogMTAwJSkhaW1wb3J0YW50OwoJd2lkdGg6IC1tb3otY2FsYygoNTBweCAtIDUwJSkqMik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/case-insensitivity.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QENoYXJTZXQgInV0Zi04IjsKQElNUE9SVCB1UkwodGVzdC5jc3MpOwoKQE1FRElBIHNjcmVlbiB7Cgp9CgojbXlpZCB7CglDYVNlOiBpbnNlbnNpdGl2ZSAhaW1QT1JUQU5UOwoJZnJlcXVlbmN5OiAzMGh6OwoJZm9udC1zaXplOiAxRU07Cgljb2xvcjogUkdCKDI1NSwgMjU1LCAwKTsKCWNvbG9yOiBoU0woNDAsIDQwJSwgMzAlKTsKCWZvbnQtRmFtaWx5OiBBcmlhbDsgLyogVGhlIHZhbHVlIG5lZWRzIHRvIHJlbWFpbiBjYXBpdGFsaXplZCAqLwp9]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/colortest.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I21pbmUgewoJY29sb3I6IHJlZDsKCWJvcmRlci1jb2xvcjogcmdiKDEwLCAxMDAsIDIzMCk7Cglib3JkZXItY29sb3I6IHJnYmEoMTAsIDEwMCwgMjMxLCAwLjMpOwoJb3V0bGluZS1jb2xvcjogIzIyMjsKCWJhY2tncm91bmQtY29sb3I6ICMyMzIzMjM7Cn0KCiN5b3VycyB7CgliYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjIwLCAxMCUsIDIyMCUpOwoJYmFja2dyb3VuZC1jb2xvcjogaHNsYSgyMjAsIDEwJSwgMjIwJSwgMC4zKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/comments.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIENvbW1lbnRzIEhlbGwuCiAqLwpAaW1wb3J0IC8qIE51bWJlciAxICovInNvbWUvdXJsLmNzcyIvKiBOdW1iZXIgMiAqLyBzY3JlZW4vKiBOdW1iZXIgMyAqLzsKCi5mb28sIC8qIE51bWJlciA0ICovICAgICAgICAgICNiYXIvKiBOdW1iZXIgNSAqLyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yLyogTnVtYmVyIDYgKi86ICMwMDAvKiBOdW1iZXIgNyAqLzsKfQoKQG1lZGlhIC8qIE51bWJlciA4ICovc2NyZWVuIC8qIE51bWJlciA5ICovewogICAgLyoqIE51bWJlciAxMCAqKi8KICAgICNmb28uYmFyIHsKICAgICAgICAvKiogTnVtYmVyIDEwYiAqKi8KICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7LyoqLwogICAgfQp9Ci8qKiBOdW1iZXIgMTEgKiov]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/create-shorthands.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgZm9udC1zaXplOiAyZW07IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgYm9yZGVyLXdpZHRoOiAycHg7IGJvcmRlci1jb2xvcjogIzk5OTsgYm9yZGVyLXN0eWxlOiBkb3R0ZWQ7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdmb29iYXIucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteTsKICBtYXJnaW4tdG9wOiAycHg7IG1hcmdpbi1yaWdodDogM3B4OyBtYXJnaW4tYm90dG9tOiA0cHg7IG1hcmdpbi1sZWZ0OiA1cHg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/docuwiki.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2LmRva3V3aWtpIGRpdi5hamF4X3FzZWFyY2h7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MjM3cHg7O3dpZHRoOjIwMHB4O29wYWNpdHk6MC45O2Rpc3BsYXk6bm9uZTtmb250LXNpemU6ODAlO2xpbmUtaGVpZ2h0OjEuMmVtO2JvcmRlcjoxcHggc29saWQgIzhjYWNiYjtiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y5ZmE7dGV4dC1hbGlnbjpsZWZ0O3BhZGRpbmc6NHB4O30=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/empty-grid-linename.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IFtdIDEwMHB4OyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/expand-shorthands.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7CiAgZm9udDogaXRhbGljIDUwMCAxNHB4LzEuNjE4ICJUcmVidWNoZXQgTVMiLCBHZW9yZ2lhLCBzZXJpZjsKICBib3JkZXI6IDJweCBzb2xpZCAjZjBmOwogIGJhY2tncm91bmQ6ICNjY2MgdXJsKCIvaW1hZ2VzL2Zvby5wbmciKSBuby1yZXBlYXQgbGVmdCB0b3A7CiAgbWFyZ2luOiAxZW0gIWltcG9ydGFudDsKICBwYWRkaW5nOiAycHggNnB4IDNweDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/functions.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2Lm1haW4geyBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoIzAwMCwgI2ZmZikgfQouY29sbGFwc2VyOjpiZWZvcmUsCi5jb2xsYXBzZXI6Oi1tb3otYmVmb3JlLAouY29sbGFwc2VyOjotd2Via2l0LWJlZm9yZSB7CiAgICBjb250ZW50OiAiwrsiOwogICAgZm9udC1zaXplOiAxLjJlbTsKICAgIG1hcmdpbi1yaWdodDogLjJlbTsKICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogLW1vei10cmFuc2Zvcm07CiAgICAtbW96LXRyYW5zaXRpb24tZHVyYXRpb246IC4yczsKICAgIC1tb3otdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIDYwJTsKfQouY29sbGFwc2VyLmV4cGFuZGVkOjpiZWZvcmUsCi5jb2xsYXBzZXIuZXhwYW5kZWQ6Oi1tb3otYmVmb3JlLAouY29sbGFwc2VyLmV4cGFuZGVkOjotd2Via2l0LWJlZm9yZSB7IC1tb3otdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpIH0KLmNvbGxhcHNlciArICogewogICAgaGVpZ2h0OiAwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogaGVpZ2h0OwogICAgLW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAuM3M7Cn0KLmNvbGxhcHNlci5leHBhbmRlZCArICogeyBoZWlnaHQ6IGF1dG8gfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/grid-linename.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBbIGxpbmVuYW1lIF0gMTAwcHg7IH0Kc3BhbiB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogWyBsaW5lbmFtZTEgbGluZW5hbWUyIF0gMTAwcHg7IH0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/hex-alpha.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsgYmFja2dyb3VuZDogIzEyMzQ7IH0KZGl2IHsgYmFja2dyb3VuZDogIzExMjIzMzQ0OyB9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/ie-hacks.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cCB7CiAgICBwYWRkaW5nLXJpZ2h0OiAuNzVyZW0gXDk7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lIFw5OwogICAgY29sb3I6cmVkXDlcMDsKICAgIGJhY2tncm91bmQtY29sb3I6cmVkIFw5IFwwOwogICAgYmFja2dyb3VuZC1jb2xvcjpyZWQgXDkgXDAgIWltcG9ydGFudDsKICAgIGNvbnRlbnQ6ICJyZWQgXDlcMCI7CiAgICBjb250ZW50OiAicmVkXDBhYmMiOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/ie.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Lm5hdi10aHVtYi13cmFwcGVyOmhvdmVyIGltZywgYS5hY3RpdmVTbGlkZSBpbWcgew0KCWZpbHRlcjogYWxwaGEob3BhY2l0eT0xMDApOw0KCS1tb3otb3BhY2l0eTogMTsNCgkta2h0bWwtb3BhY2l0eTogMTsNCglvcGFjaXR5OiAxOwp9CQ0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/important.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2LnJhdGluZy1jYW5jZWwsZGl2LnN0YXItcmF0aW5ne2Zsb2F0OmxlZnQ7d2lkdGg6MTdweDtoZWlnaHQ6MTVweDt0ZXh0LWluZGVudDotOTk5ZW07Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O292ZXJmbG93OmhpZGRlbn0KZGl2LnJhdGluZy1jYW5jZWwsZGl2LnJhdGluZy1jYW5jZWwgYXtiYWNrZ3JvdW5kOnVybChpbWFnZXMvZGVsZXRlLmdpZikgbm8tcmVwZWF0IDAgLTE2cHh9CmRpdi5zdGFyLXJhdGluZyxkaXYuc3Rhci1yYXRpbmcgYXtiYWNrZ3JvdW5kOnVybChpbWFnZXMvc3Rhci5naWYpIG5vLXJlcGVhdCAwIDBweH0KZGl2LnJhdGluZy1jYW5jZWwgYSxkaXYuc3Rhci1yYXRpbmcgYXtkaXNwbGF5OmJsb2NrO3dpZHRoOjE2cHg7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZC1wb3NpdGlvbjowIDBweDtib3JkZXI6MH0KZGl2LnN0YXItcmF0aW5nLW9uIGF7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNnB4IWltcG9ydGFudH0KZGl2LnN0YXItcmF0aW5nLWhvdmVyIGF7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0zMnB4fQpkaXYuc3Rhci1yYXRpbmctcmVhZG9ubHkgYXtjdXJzb3I6ZGVmYXVsdCAhaW1wb3J0YW50fQpkaXYuc3Rhci1yYXRpbmd7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7IG92ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnR9]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/inner-color.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGVzdCB7CgliYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCAwLCAwIGJvdHRvbSwgZnJvbSgjMDA2Y2FkKSwgdG8oaHNsKDIwMiwgMTAwJSwgNDklKSkpOwp9]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/line-numbers.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGNoYXJzZXQgInV0Zi04IjsgLyogbGluZSAxICovCgpAbmFtZXNwYWNlICJodHRwOi8vdG90by5leGFtcGxlLm9yZyI7IC8qIGxpbmUgMyAqLwoKQGZvbnQtZmFjZSB7IC8qIGxpbmUgNSAqLwogICAgZm9udC1mYW1pbHk6ICJDcmFzc1Jvb3RzIjsKICAgIHNyYzogdXJsKCJodHRwOi8vZXhhbXBsZS5jb20vbWVkaWEvY3IudHRmIikgLyogbGluZSA3ICovCn0KCgojaGVhZGVyIHsgLyogbGluZSAxMSAqLwogICAgbWFyZ2luOiAxMHB4IDJlbSAxY20gMiU7CiAgICBmb250LWZhbWlseTogVmVyZGFuYSwgSGVsdmV0aWNhLCAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsKICAgIGNvbG9yOiByZWQgIWltcG9ydGFudDsKfQoKQGtleWZyYW1lcyBteW1vdmUgeyAgICAvKiBsaW5lIDE3ICovCiAgICBmcm9tIHsgdG9wOiAwcHg7IH0gLyogbGluZSAxOCAqLwoKICAgIHRvIHsgdG9wOiAyMDBweDsgfSAvKiBsaW5lIDIwICovCn0KCkBJTVBPUlQgdVJMKHRlc3QuY3NzKTsgLyogbGluZSAyMyAqLwoKYm9keSB7CiAgICBiYWNrZ3JvdW5kOiAjRkZGRkZGIHVybCgiaHR0cDovL3NvbWVzaXRlLmNvbS9pbWFnZXMvc29tZWltYWdlLmdpZiIpIHJlcGVhdCB0b3AgY2VudGVyOyAvKiBsaW5lIDI1ICovCiAgICBjb2xvcjogcmdiKCAgIC8qIGxpbmUgMjcgKi8KICAgICAgICAgICAgMjMzLCAgLyogbGluZSAyOCAqLwogICAgICAgICAgICAxMDAsICAvKiBsaW5lIDI5ICovCiAgICAgICAgICAgIDQ1MCAgIC8qIGxpbmUgMzAgKi8KICAgICk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/missing-property-value.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsKCWRpc3BsYXk6IGlubGluZS1ibG9jazsKCWRpc3BsYXk6Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/ms-filter.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3Qge2ZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LmdyYWRpZW50KHN0YXJ0Q29sb3JzdHI9JyM4MDAwMDAwMCcsIGVuZENvbG9yc3RyPScjMDAwMDAwMDAnLCBHcmFkaWVudFR5cGU9MSk7fQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/namespaces.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogRnJvbSB0aGUgc3BlYyBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW5hbWVzcGFjZS8gKi8KCkBuYW1lc3BhY2UgdG90byAiaHR0cDovL3RvdG8uZXhhbXBsZS5vcmciOwpAbmFtZXNwYWNlICJodHRwOi8vZXhhbXBsZS5jb20vZm9vIjsKCgovKiBGcm9tIGFuIGludHJvZHVjdGlvbiBhdCBodHRwOi8vd3d3LmJsb29iZXJyeS5jb20vaW5kZXhkb3QvY3NzL3N5bnRheC9hdHJ1bGVzL25hbWVzcGFjZS5odG0gKi8KQG5hbWVzcGFjZSBmb28gdXJsKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpOwpAbmFtZXNwYWNlIGZvbyB1cmwoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vJyk7CgoKZm9vfHRlc3QgewoJZ2FnYTogMTsKfQoKfHRlc3QgewoJZ2FnYTogMjsKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/nested.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[aHRtbCB7Cglzb21lOiAtdGVzdCh2YWwxKTsKfQoKaHRtbCB7Cglzb21lLW90aGVyOiAtdGVzdCh2YWwxKTsKfQoKQG1lZGlhIHNjcmVlbiB7CglodG1sIHsKCQlzb21lOiAtdGVzdCh2YWwyKTsKCX0KfQoKI3VucmVsYXRlZCB7CglvdGhlcjogeWVzOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/slashed.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewoJZm9udDogMTJweC8xLjUgVmVyZGFuYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cglib3JkZXItcmFkaXVzOiA1cHggMTBweCA1cHggMTBweCAvIDEwcHggNXB4IDEwcHggNXB4Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/specificity.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I3Rlc3QgLmhlbHAsCiNmaWxlLAouaGVscDpob3ZlciwKbGkuZ3JlZW4sCm9sIGxpOjpiZWZvcmUgewoJZm9udC1mYW1pbHk6IEhlbHZldGljYTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/trailing-whitespace.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGl2IHsgd2lkdGg6IDIwMHB4OyB9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/unicode-range.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QGZvbnQtZmFjZSB7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRT8/LTJFRkYsIFUrMjAyRjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/unicode.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QtMSB7IGNvbnRlbnQ6ICJcMjAiOyB9IC8qIFNhbWUgYXMgIiAiICovCi50ZXN0LTIgeyBjb250ZW50OiAiXEU5IjsgfSAvKiBTYW1lIGFzICLDqSIgKi8KLnRlc3QtMyB7IGNvbnRlbnQ6ICJcMDAyMCI7IH0gLyogU2FtZSBhcyAiICIgKi8KLnRlc3QtNSB7IGNvbnRlbnQ6ICJcNkMzNCIgfSAvKiBTYW1lIGFzICLmsLQiICovCi50ZXN0LTYgeyBjb250ZW50OiAiXDAwQTUiIH0gLyogU2FtZSBhcyAiwqUiICovCi50ZXN0LTcgeyBjb250ZW50OiAnXGEnIH0gLyogU2FtZSBhcyAiXEEiIChOZXdsaW5lKSAqLwoudGVzdC04IHsgY29udGVudDogIlwiXDIyIiB9IC8qIFNhbWUgYXMgIlwiXCIiICovCi50ZXN0LTkgeyBjb250ZW50OiAiXCJcMjciIH0gLyogU2FtZSBhcyAiIlwiXCciIiAqLwoudGVzdC0xMCB7IGNvbnRlbnQ6ICJcJ1xcIiB9IC8qIFNhbWUgYXMgIidcIiAqLwoudGVzdC0xMSB7IGNvbnRlbnQ6ICJcdGVzdCIgfSAvKiBTYW1lIGFzICJ0ZXN0IiAqLwoKLnRlc3QtNCB7IGNvbnRlbnQ6ICJcMUQxMUUiIH0gLyogQmV5b25kIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKi8K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/unmatched_braces.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YnV0dG9uLGlucHV0LGNoZWNrYm94LHRleHRhcmVhIHsKICAgIG91dGxpbmU6IDA7CiAgICBtYXJnaW46IDA7Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMS41KSwgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjMvQG1lZGlhIGFsbCBhbmQgKG9yaWVudGF0aW9uOnBvcnRyYWl0KSB7CiAgICAjd3JhcHBlciB7CiAgICAgICAgbWF4LXdpZHRoOjY0MHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQp9CgpAbWVkaWEgYWxsIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkgewogICAgI3dyYXBwZXIgewogICAgICAgIG1heC13aWR0aDo2NDBweDsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/unopened-close-brackets.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[fX19LmJsdWV7CiAgYmFja2dyb3VuZDogIzAwRjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/url.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ym9keSB7IGJhY2tncm91bmQ6ICNGRkZGRkYgdXJsKCJodHRwOi8vc29tZXNpdGUuY29tL2ltYWdlcy9zb21laW1hZ2UuZ2lmIikgcmVwZWF0IHRvcCBjZW50ZXI7IH0KYm9keSB7CgliYWNrZ3JvdW5kLXVybDogdXJsKCJodHRwOi8vc29tZXNpdGUuY29tL2ltYWdlcy9zb21laW1hZ2UuZ2lmIik7Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/values.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2hlYWRlciB7CgltYXJnaW46IDEwcHggMmVtIDFjbSAyJTsKCWZvbnQtZmFtaWx5OiBWZXJkYW5hLCBIZWx2ZXRpY2EsICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxMHB4OwoJY29sb3I6IHJlZCAhaW1wb3J0YW50OwoJYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CgliYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMTI4LDAsMC43KTsKCWZyZXF1ZW5jeTogMzBIejsKfQoKYm9keSB7Cgljb2xvcjogZ3JlZW47Cglmb250OiA3NSUgIkx1Y2lkYSBHcmFuZGUiLCAiVHJlYnVjaGV0IE1TIiwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/webkit.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgeyBiYWNrZ3JvdW5kOi13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCByaWdodCwgd2hpdGUsIGJsYWNrKX0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/files/whitespace.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnRlc3QgewoJYmFja2dyb3VuZC1pbWFnZSA6IHVybCAoIDRweCApIDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/phpunit.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHBocHVuaXQgYm9vdHN0cmFwPSJib290c3RyYXAucGhwIj48L3BocHVuaXQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/quickdump.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2Jpbi9lbnYgcGhwCjw/cGhwCgpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9ib290c3RyYXAucGhwJyk7Cgokc1NvdXJjZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCdwaHA6Ly9zdGRpbicpOwokb1BhcnNlciA9IG5ldyBTYWJiZXJ3b3JtXENTU1xQYXJzZXIoJHNTb3VyY2UpOwoKJG9Eb2MgPSAkb1BhcnNlci0+cGFyc2UoKTsKZWNobyAiXG4iLicjIyMjIElucHV0Jy4iXG5cbmBgYGNzc1xuIjsKcHJpbnQgJHNTb3VyY2U7CgplY2hvICJcbmBgYFxuXG4iLicjIyMjIFN0cnVjdHVyZSAoYHZhcl9kdW1wKClgKScuIlxuXG5gYGBwaHBcbiI7CnZhcl9kdW1wKCRvRG9jKTsKCmVjaG8gIlxuYGBgXG5cbiIuJyMjIyMgT3V0cHV0IChgcmVuZGVyKClgKScuIlxuXG5gYGBjc3NcbiI7CnByaW50ICRvRG9jLT5yZW5kZXIoKTsKCmVjaG8gIlxuYGBgXG4iOwoK]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/CSSList/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/CSSList/AtRuleBlockListTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNlcjsKCmNsYXNzIEF0UnVsZUJsb2NrTGlzdFRlc3QgZXh0ZW5kcyBcUEhQVW5pdF9GcmFtZXdvcmtfVGVzdENhc2UgewoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0TWVkaWFRdWVyaWVzKCkgewoJCSRzQ3NzID0gJ0BtZWRpYShtaW4td2lkdGg6IDc2OHB4KXsuY2xhc3N7Y29sb3I6cmVkfX0nOwoJCSRvUGFyc2VyID0gbmV3IFBhcnNlcigkc0Nzcyk7CgkJJG9Eb2MgPSAkb1BhcnNlci0+cGFyc2UoKTsKCQkkYUNvbnRlbnRzID0gJG9Eb2MtPmdldENvbnRlbnRzKCk7CgkJJG9NZWRpYVF1ZXJ5ID0gJGFDb250ZW50c1swXTsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnbWVkaWEnLCAkb01lZGlhUXVlcnktPmF0UnVsZU5hbWUoKSwgJ0RvZXMgbm90IGludGVycHJldCB0aGUgdHlwZSBhcyBhIGZ1bmN0aW9uJyk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJyhtaW4td2lkdGg6IDc2OHB4KScsICRvTWVkaWFRdWVyeS0+YXRSdWxlQXJncygpLCAnVGhlIG1lZGlhIHF1ZXJ5IGlzIHRoZSB2YWx1ZScpOwoKCQkkc0NzcyA9ICdAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsuY2xhc3N7Y29sb3I6cmVkfX0nOwoJCSRvUGFyc2VyID0gbmV3IFBhcnNlcigkc0Nzcyk7CgkJJG9Eb2MgPSAkb1BhcnNlci0+cGFyc2UoKTsKCQkkYUNvbnRlbnRzID0gJG9Eb2MtPmdldENvbnRlbnRzKCk7CgkJJG9NZWRpYVF1ZXJ5ID0gJGFDb250ZW50c1swXTsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnbWVkaWEnLCAkb01lZGlhUXVlcnktPmF0UnVsZU5hbWUoKSwgJ0RvZXMgbm90IGludGVycHJldCB0aGUgdHlwZSBhcyBhIGZ1bmN0aW9uJyk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJyhtaW4td2lkdGg6IDc2OHB4KScsICRvTWVkaWFRdWVyeS0+YXRSdWxlQXJncygpLCAnVGhlIG1lZGlhIHF1ZXJ5IGlzIHRoZSB2YWx1ZScpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/CSSList/DocumentTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNlcjsKCmNsYXNzIERvY3VtZW50VGVzdCBleHRlbmRzIFxQSFBVbml0X0ZyYW1ld29ya19UZXN0Q2FzZSB7CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RPdmVycmlkZUNvbnRlbnRzKCkgewoJCSRzQ3NzID0gJy50aGluZyB7IGxlZnQ6IDEwcHg7IH0nOwoJCSRvUGFyc2VyID0gbmV3IFBhcnNlcigkc0Nzcyk7CgkJJG9Eb2MgPSAkb1BhcnNlci0+cGFyc2UoKTsKCQkkYUNvbnRlbnRzID0gJG9Eb2MtPmdldENvbnRlbnRzKCk7CgkJJHRoaXMtPmFzc2VydENvdW50KDEsICRhQ29udGVudHMpOwoKCQkkc0NzczIgPSAnLm90aGVydGhpbmcgeyByaWdodDogMTBweDsgfSc7CgkJJG9QYXJzZXIyID0gbmV3IFBhcnNlcigkc0Nzcyk7CgkJJG9Eb2MyID0gJG9QYXJzZXIyLT5wYXJzZSgpOwoJCSRhQ29udGVudHMyID0gJG9Eb2MyLT5nZXRDb250ZW50cygpOwoKCQkkb0RvYy0+c2V0Q29udGVudHMoYXJyYXkoJGFDb250ZW50c1swXSwgJGFDb250ZW50czJbMF0pKTsKCQkkYUZpbmFsQ29udGVudHMgPSAkb0RvYy0+Z2V0Q29udGVudHMoKTsKCQkkdGhpcy0+YXNzZXJ0Q291bnQoMiwgJGFGaW5hbENvbnRlbnRzKTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/OutputFormatTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCnVzZSBTYWJiZXJ3b3JtXENTU1xQYXJzZXI7CnVzZSBTYWJiZXJ3b3JtXENTU1xPdXRwdXRGb3JtYXQ7CgpnbG9iYWwgJFRFU1RfQ1NTOwoKJFRFU1RfQ1NTID0gPDw8RU9UCgoubWFpbiwgLnRlc3QgewoJZm9udDogaXRhbGljIG5vcm1hbCBib2xkIDE2cHgvMS4yICJIZWx2ZXRpY2EiLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwoJYmFja2dyb3VuZDogd2hpdGU7Cn0KCkBtZWRpYSBzY3JlZW4gewoJLm1haW4gewoJCWJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOwoJCWZvbnQtc2l6ZTogMS4zZW07CgkJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKCX0KfQoKRU9UOwoKY2xhc3MgT3V0cHV0Rm9ybWF0VGVzdCBleHRlbmRzIFxQSFBVbml0X0ZyYW1ld29ya19UZXN0Q2FzZSB7Cglwcml2YXRlICRvUGFyc2VyOwoJcHJpdmF0ZSAkb0RvY3VtZW50OwoJCglmdW5jdGlvbiBzZXRVcCgpIHsKCQlnbG9iYWwgJFRFU1RfQ1NTOwoJCSR0aGlzLT5vUGFyc2VyID0gbmV3IFBhcnNlcigkVEVTVF9DU1MpOwoJCSR0aGlzLT5vRG9jdW1lbnQgPSAkdGhpcy0+b1BhcnNlci0+cGFyc2UoKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdFBsYWluKCkgewoJCSR0aGlzLT5hc3NlcnRTYW1lKCcubWFpbiwgLnRlc3Qge2ZvbnQ6IGl0YWxpYyBub3JtYWwgYm9sZCAxNnB4LzEuMiAiSGVsdmV0aWNhIixWZXJkYW5hLHNhbnMtc2VyaWY7YmFja2dyb3VuZDogd2hpdGU7fQpAbWVkaWEgc2NyZWVuIHsubWFpbiB7YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7Zm9udC1zaXplOiAxLjNlbTtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO319JywgJHRoaXMtPm9Eb2N1bWVudC0+cmVuZGVyKCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0Q29tcGFjdCgpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLm1haW4sLnRlc3R7Zm9udDppdGFsaWMgbm9ybWFsIGJvbGQgMTZweC8xLjIgIkhlbHZldGljYSIsVmVyZGFuYSxzYW5zLXNlcmlmO2JhY2tncm91bmQ6d2hpdGU7fUBtZWRpYSBzY3JlZW57Lm1haW57YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtmb250LXNpemU6MS4zZW07YmFja2dyb3VuZC1jb2xvcjojZmZmO319JywgJHRoaXMtPm9Eb2N1bWVudC0+cmVuZGVyKE91dHB1dEZvcm1hdDo6Y3JlYXRlQ29tcGFjdCgpKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RQcmV0dHkoKSB7CgkJZ2xvYmFsICRURVNUX0NTUzsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgkVEVTVF9DU1MsICR0aGlzLT5vRG9jdW1lbnQtPnJlbmRlcihPdXRwdXRGb3JtYXQ6OmNyZWF0ZVByZXR0eSgpKSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0U3BhY2VBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvcigpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLm1haW4sIC50ZXN0IHtmb250OiBpdGFsaWMgICBub3JtYWwgICBib2xkICAgMTZweC8gIDEuMiAgICJIZWx2ZXRpY2EiLCAgVmVyZGFuYSwgIHNhbnMtc2VyaWY7YmFja2dyb3VuZDogd2hpdGU7fQpAbWVkaWEgc2NyZWVuIHsubWFpbiB7YmFja2dyb3VuZC1zaXplOiAxMDAlICAgMTAwJTtmb250LXNpemU6IDEuM2VtO2JhY2tncm91bmQtY29sb3I6ICNmZmY7fX0nLCAkdGhpcy0+b0RvY3VtZW50LT5yZW5kZXIoT3V0cHV0Rm9ybWF0OjpjcmVhdGUoKS0+c2V0U3BhY2VBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvcigiICAiKSkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0U3BhY2VBZnRlckxpc3RBcmd1bWVudFNlcGFyYXRvckNvbXBsZXgoKSB7CgkJJHRoaXMtPmFzc2VydFNhbWUoJy5tYWluLCAudGVzdCB7Zm9udDogaXRhbGljIG5vcm1hbCBib2xkIDE2cHgvMS4yICJIZWx2ZXRpY2EiLAlWZXJkYW5hLAlzYW5zLXNlcmlmO2JhY2tncm91bmQ6IHdoaXRlO30KQG1lZGlhIHNjcmVlbiB7Lm1haW4ge2JhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO2ZvbnQtc2l6ZTogMS4zZW07YmFja2dyb3VuZC1jb2xvcjogI2ZmZjt9fScsICR0aGlzLT5vRG9jdW1lbnQtPnJlbmRlcihPdXRwdXRGb3JtYXQ6OmNyZWF0ZSgpLT5zZXRTcGFjZUFmdGVyTGlzdEFyZ3VtZW50U2VwYXJhdG9yKGFycmF5KCdkZWZhdWx0JyA9PiAnICcsICcsJyA9PiAiXHQiLCAnLycgPT4gJycsICcgJyA9PiAnJykpKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RTcGFjZUFmdGVyU2VsZWN0b3JTZXBhcmF0b3IoKSB7CgkJJHRoaXMtPmFzc2VydFNhbWUoJy5tYWluLAoudGVzdCB7Zm9udDogaXRhbGljIG5vcm1hbCBib2xkIDE2cHgvMS4yICJIZWx2ZXRpY2EiLFZlcmRhbmEsc2Fucy1zZXJpZjtiYWNrZ3JvdW5kOiB3aGl0ZTt9CkBtZWRpYSBzY3JlZW4gey5tYWluIHtiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtmb250LXNpemU6IDEuM2VtO2JhY2tncm91bmQtY29sb3I6ICNmZmY7fX0nLCAkdGhpcy0+b0RvY3VtZW50LT5yZW5kZXIoT3V0cHV0Rm9ybWF0OjpjcmVhdGUoKS0+c2V0U3BhY2VBZnRlclNlbGVjdG9yU2VwYXJhdG9yKCJcbiIpKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RTdHJpbmdRdW90aW5nVHlwZSgpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLm1haW4sIC50ZXN0IHtmb250OiBpdGFsaWMgbm9ybWFsIGJvbGQgMTZweC8xLjIgXCdIZWx2ZXRpY2FcJyxWZXJkYW5hLHNhbnMtc2VyaWY7YmFja2dyb3VuZDogd2hpdGU7fQpAbWVkaWEgc2NyZWVuIHsubWFpbiB7YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7Zm9udC1zaXplOiAxLjNlbTtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO319JywgJHRoaXMtPm9Eb2N1bWVudC0+cmVuZGVyKE91dHB1dEZvcm1hdDo6Y3JlYXRlKCktPnNldFN0cmluZ1F1b3RpbmdUeXBlKCInIikpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdFJHQkhhc2hOb3RhdGlvbigpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLm1haW4sIC50ZXN0IHtmb250OiBpdGFsaWMgbm9ybWFsIGJvbGQgMTZweC8xLjIgIkhlbHZldGljYSIsVmVyZGFuYSxzYW5zLXNlcmlmO2JhY2tncm91bmQ6IHdoaXRlO30KQG1lZGlhIHNjcmVlbiB7Lm1haW4ge2JhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO2ZvbnQtc2l6ZTogMS4zZW07YmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyNTUsMjU1KTt9fScsICR0aGlzLT5vRG9jdW1lbnQtPnJlbmRlcihPdXRwdXRGb3JtYXQ6OmNyZWF0ZSgpLT5zZXRSR0JIYXNoTm90YXRpb24oZmFsc2UpKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RTZW1pY29sb25BZnRlckxhc3RSdWxlKCkgewoJCSR0aGlzLT5hc3NlcnRTYW1lKCcubWFpbiwgLnRlc3Qge2ZvbnQ6IGl0YWxpYyBub3JtYWwgYm9sZCAxNnB4LzEuMiAiSGVsdmV0aWNhIixWZXJkYW5hLHNhbnMtc2VyaWY7YmFja2dyb3VuZDogd2hpdGV9CkBtZWRpYSBzY3JlZW4gey5tYWluIHtiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtmb250LXNpemU6IDEuM2VtO2JhY2tncm91bmQtY29sb3I6ICNmZmZ9fScsICR0aGlzLT5vRG9jdW1lbnQtPnJlbmRlcihPdXRwdXRGb3JtYXQ6OmNyZWF0ZSgpLT5zZXRTZW1pY29sb25BZnRlckxhc3RSdWxlKGZhbHNlKSkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0U3BhY2VBZnRlclJ1bGVOYW1lKCkgewoJCSR0aGlzLT5hc3NlcnRTYW1lKCcubWFpbiwgLnRlc3Qge2ZvbnQ6CWl0YWxpYyBub3JtYWwgYm9sZCAxNnB4LzEuMiAiSGVsdmV0aWNhIixWZXJkYW5hLHNhbnMtc2VyaWY7YmFja2dyb3VuZDoJd2hpdGU7fQpAbWVkaWEgc2NyZWVuIHsubWFpbiB7YmFja2dyb3VuZC1zaXplOgkxMDAlIDEwMCU7Zm9udC1zaXplOgkxLjNlbTtiYWNrZ3JvdW5kLWNvbG9yOgkjZmZmO319JywgJHRoaXMtPm9Eb2N1bWVudC0+cmVuZGVyKE91dHB1dEZvcm1hdDo6Y3JlYXRlKCktPnNldFNwYWNlQWZ0ZXJSdWxlTmFtZSgiXHQiKSkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0U3BhY2VSdWxlcygpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLm1haW4sIC50ZXN0IHsKCWZvbnQ6IGl0YWxpYyBub3JtYWwgYm9sZCAxNnB4LzEuMiAiSGVsdmV0aWNhIixWZXJkYW5hLHNhbnMtc2VyaWY7CgliYWNrZ3JvdW5kOiB3aGl0ZTsKfQpAbWVkaWEgc2NyZWVuIHsubWFpbiB7CgkJYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7CgkJZm9udC1zaXplOiAxLjNlbTsKCQliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJfX0nLCAkdGhpcy0+b0RvY3VtZW50LT5yZW5kZXIoT3V0cHV0Rm9ybWF0OjpjcmVhdGUoKS0+c2V0KCdTcGFjZSpSdWxlcycsICJcbiIpKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RTcGFjZUJsb2NrcygpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnCi5tYWluLCAudGVzdCB7Zm9udDogaXRhbGljIG5vcm1hbCBib2xkIDE2cHgvMS4yICJIZWx2ZXRpY2EiLFZlcmRhbmEsc2Fucy1zZXJpZjtiYWNrZ3JvdW5kOiB3aGl0ZTt9CkBtZWRpYSBzY3JlZW4gewoJLm1haW4ge2JhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO2ZvbnQtc2l6ZTogMS4zZW07YmFja2dyb3VuZC1jb2xvcjogI2ZmZjt9Cn0KJywgJHRoaXMtPm9Eb2N1bWVudC0+cmVuZGVyKE91dHB1dEZvcm1hdDo6Y3JlYXRlKCktPnNldCgnU3BhY2UqQmxvY2tzJywgIlxuIikpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdFNwYWNlQm90aCgpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnCi5tYWluLCAudGVzdCB7Cglmb250OiBpdGFsaWMgbm9ybWFsIGJvbGQgMTZweC8xLjIgIkhlbHZldGljYSIsVmVyZGFuYSxzYW5zLXNlcmlmOwoJYmFja2dyb3VuZDogd2hpdGU7Cn0KQG1lZGlhIHNjcmVlbiB7CgkubWFpbiB7CgkJYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7CgkJZm9udC1zaXplOiAxLjNlbTsKCQliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwoJfQp9CicsICR0aGlzLT5vRG9jdW1lbnQtPnJlbmRlcihPdXRwdXRGb3JtYXQ6OmNyZWF0ZSgpLT5zZXQoJ1NwYWNlKlJ1bGVzJywgIlxuIiktPnNldCgnU3BhY2UqQmxvY2tzJywgIlxuIikpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdFNwYWNlQmV0d2VlbkJsb2NrcygpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLm1haW4sIC50ZXN0IHtmb250OiBpdGFsaWMgbm9ybWFsIGJvbGQgMTZweC8xLjIgIkhlbHZldGljYSIsVmVyZGFuYSxzYW5zLXNlcmlmO2JhY2tncm91bmQ6IHdoaXRlO31AbWVkaWEgc2NyZWVuIHsubWFpbiB7YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7Zm9udC1zaXplOiAxLjNlbTtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO319JywgJHRoaXMtPm9Eb2N1bWVudC0+cmVuZGVyKE91dHB1dEZvcm1hdDo6Y3JlYXRlKCktPnNldFNwYWNlQmV0d2VlbkJsb2NrcygnJykpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdEluZGVudGF0aW9uKCkgewoJCSR0aGlzLT5hc3NlcnRTYW1lKCcKLm1haW4sIC50ZXN0IHsKZm9udDogaXRhbGljIG5vcm1hbCBib2xkIDE2cHgvMS4yICJIZWx2ZXRpY2EiLFZlcmRhbmEsc2Fucy1zZXJpZjsKYmFja2dyb3VuZDogd2hpdGU7Cn0KQG1lZGlhIHNjcmVlbiB7Ci5tYWluIHsKYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7CmZvbnQtc2l6ZTogMS4zZW07CmJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KfQonLCAkdGhpcy0+b0RvY3VtZW50LT5yZW5kZXIoT3V0cHV0Rm9ybWF0OjpjcmVhdGUoKS0+c2V0KCdTcGFjZSpSdWxlcycsICJcbiIpLT5zZXQoJ1NwYWNlKkJsb2NrcycsICJcbiIpLT5zZXRJbmRlbnRhdGlvbignJykpKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHRlc3RTcGFjZUJlZm9yZUJyYWNlcygpIHsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLm1haW4sIC50ZXN0e2ZvbnQ6IGl0YWxpYyBub3JtYWwgYm9sZCAxNnB4LzEuMiAiSGVsdmV0aWNhIixWZXJkYW5hLHNhbnMtc2VyaWY7YmFja2dyb3VuZDogd2hpdGU7fQpAbWVkaWEgc2NyZWVuey5tYWlue2JhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO2ZvbnQtc2l6ZTogMS4zZW07YmFja2dyb3VuZC1jb2xvcjogI2ZmZjt9fScsICR0aGlzLT5vRG9jdW1lbnQtPnJlbmRlcihPdXRwdXRGb3JtYXQ6OmNyZWF0ZSgpLT5zZXRTcGFjZUJlZm9yZU9wZW5pbmdCcmFjZSgnJykpKTsKCX0KCQoJLyoqCgkqIEBleHBlY3RlZEV4Y2VwdGlvbiBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXE91dHB1dEV4Y2VwdGlvbgoJKi8KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0SWdub3JlRXhjZXB0aW9uc09mZigpIHsKCQkkYUJsb2NrcyA9ICR0aGlzLT5vRG9jdW1lbnQtPmdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCk7CgkJJG9GaXJzdEJsb2NrID0gJGFCbG9ja3NbMF07CgkJJG9GaXJzdEJsb2NrLT5yZW1vdmVTZWxlY3RvcignLm1haW4nKTsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLnRlc3Qge2ZvbnQ6IGl0YWxpYyBub3JtYWwgYm9sZCAxNnB4LzEuMiAiSGVsdmV0aWNhIixWZXJkYW5hLHNhbnMtc2VyaWY7YmFja2dyb3VuZDogd2hpdGU7fQpAbWVkaWEgc2NyZWVuIHsubWFpbiB7YmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7Zm9udC1zaXplOiAxLjNlbTtiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO319JywgJHRoaXMtPm9Eb2N1bWVudC0+cmVuZGVyKE91dHB1dEZvcm1hdDo6Y3JlYXRlKCktPnNldElnbm9yZUV4Y2VwdGlvbnMoZmFsc2UpKSk7CgkJJG9GaXJzdEJsb2NrLT5yZW1vdmVTZWxlY3RvcignLnRlc3QnKTsKCQkkdGhpcy0+b0RvY3VtZW50LT5yZW5kZXIoT3V0cHV0Rm9ybWF0OjpjcmVhdGUoKS0+c2V0SWdub3JlRXhjZXB0aW9ucyhmYWxzZSkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0ZXN0SWdub3JlRXhjZXB0aW9uc09uKCkgewoJCSRhQmxvY2tzID0gJHRoaXMtPm9Eb2N1bWVudC0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKTsKCQkkb0ZpcnN0QmxvY2sgPSAkYUJsb2Nrc1swXTsKCQkkb0ZpcnN0QmxvY2stPnJlbW92ZVNlbGVjdG9yKCcubWFpbicpOwoJCSRvRmlyc3RCbG9jay0+cmVtb3ZlU2VsZWN0b3IoJy50ZXN0Jyk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJ0BtZWRpYSBzY3JlZW4gey5tYWluIHtiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTtmb250LXNpemU6IDEuM2VtO2JhY2tncm91bmQtY29sb3I6ICNmZmY7fX0nLCAkdGhpcy0+b0RvY3VtZW50LT5yZW5kZXIoT3V0cHV0Rm9ybWF0OjpjcmVhdGUoKS0+c2V0SWdub3JlRXhjZXB0aW9ucyh0cnVlKSkpOwoJfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/ParserTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTUzsKCnVzZSBTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XEtleUZyYW1lOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcU2l6ZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFByb3BlcnR5XFNlbGVjdG9yOwp1c2UgU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrOwp1c2UgU2FiYmVyd29ybVxDU1NcUHJvcGVydHlcQXRSdWxlOwp1c2UgU2FiYmVyd29ybVxDU1NcVmFsdWVcVVJMOwp1c2UgU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb247CgpjbGFzcyBQYXJzZXJUZXN0IGV4dGVuZHMgXFBIUFVuaXRfRnJhbWV3b3JrX1Rlc3RDYXNlIHsKCglmdW5jdGlvbiB0ZXN0RmlsZXMoKSB7CgkJJHNEaXJlY3RvcnkgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vZmlsZXMnOwoJCWlmICgkckhhbmRsZSA9IG9wZW5kaXIoJHNEaXJlY3RvcnkpKSB7CgkJCS8qIFRoaXMgaXMgdGhlIGNvcnJlY3Qgd2F5IHRvIGxvb3Agb3ZlciB0aGUgZGlyZWN0b3J5LiAqLwoJCQl3aGlsZSAoZmFsc2UgIT09ICgkc0ZpbGVOYW1lID0gcmVhZGRpcigkckhhbmRsZSkpKSB7CgkJCQlpZiAoc3RycG9zKCRzRmlsZU5hbWUsICcuJykgPT09IDApIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCWlmIChzdHJycG9zKCRzRmlsZU5hbWUsICcuY3NzJykgIT09IHN0cmxlbigkc0ZpbGVOYW1lKSAtIHN0cmxlbignLmNzcycpKSB7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCQlpZiAoc3RycG9zKCRzRmlsZU5hbWUsICctJykgPT09IDApIHsKCQkJCQkvL0VpdGhlciBhIGZpbGUgd2hpY2ggU0hPVUxEIGZhaWwgKGF0IGxlYXN0IGluIHN0cmljdCBtb2RlKSBvciBhIGZ1dHVyZSB0ZXN0IG9mIGEgYXMtb2Ytbm93IG1pc3NpbmcgZmVhdHVyZQoJCQkJCWNvbnRpbnVlOwoJCQkJfQoJCQkJJG9QYXJzZXIgPSBuZXcgUGFyc2VyKGZpbGVfZ2V0X2NvbnRlbnRzKCRzRGlyZWN0b3J5IC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRzRmlsZU5hbWUpKTsKCQkJCXRyeSB7CgkJCQkJJHRoaXMtPmFzc2VydE5vdEVxdWFscygnJywgJG9QYXJzZXItPnBhcnNlKCktPnJlbmRlcigpKTsKCQkJCX0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKCQkJCQkkdGhpcy0+ZmFpbCgkZSk7CgkJCQl9CgkJCX0KCQkJY2xvc2VkaXIoJHJIYW5kbGUpOwoJCX0KCX0KCgkvKioKCSAqIEBkZXBlbmRzIHRlc3RGaWxlcwoJICovCglmdW5jdGlvbiB0ZXN0Q29sb3JQYXJzaW5nKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ2NvbG9ydGVzdCcpOwoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxSdWxlU2V0cygpIGFzICRvUnVsZVNldCkgewoJCQlpZiAoISRvUnVsZVNldCBpbnN0YW5jZW9mIERlY2xhcmF0aW9uQmxvY2spIHsKCQkJCWNvbnRpbnVlOwoJCQl9CgkJCSRzU2VsZWN0b3IgPSAkb1J1bGVTZXQtPmdldFNlbGVjdG9ycygpOwoJCQkkc1NlbGVjdG9yID0gJHNTZWxlY3RvclswXS0+Z2V0U2VsZWN0b3IoKTsKCQkJaWYgKCRzU2VsZWN0b3IgPT09ICcjbWluZScpIHsKCQkJCSRhQ29sb3JSdWxlID0gJG9SdWxlU2V0LT5nZXRSdWxlcygnY29sb3InKTsKCQkJCSRvQ29sb3IgPSAkYUNvbG9yUnVsZVswXS0+Z2V0VmFsdWUoKTsKCQkJCSR0aGlzLT5hc3NlcnRTYW1lKCdyZWQnLCAkb0NvbG9yKTsKCQkJCSRhQ29sb3JSdWxlID0gJG9SdWxlU2V0LT5nZXRSdWxlcygnYmFja2dyb3VuZC0nKTsKCQkJCSRvQ29sb3IgPSAkYUNvbG9yUnVsZVswXS0+Z2V0VmFsdWUoKTsKCQkJCSR0aGlzLT5hc3NlcnRFcXVhbHMoYXJyYXkoJ3InID0+IG5ldyBTaXplKDM1LjAsIG51bGwsIHRydWUsICRvQ29sb3ItPmdldExpbmVObygpKSwgJ2cnID0+IG5ldyBTaXplKDM1LjAsIG51bGwsIHRydWUsICRvQ29sb3ItPmdldExpbmVObygpKSwgJ2InID0+IG5ldyBTaXplKDM1LjAsIG51bGwsIHRydWUsICRvQ29sb3ItPmdldExpbmVObygpKSksICRvQ29sb3ItPmdldENvbG9yKCkpOwoJCQkJJGFDb2xvclJ1bGUgPSAkb1J1bGVTZXQtPmdldFJ1bGVzKCdib3JkZXItY29sb3InKTsKCQkJCSRvQ29sb3IgPSAkYUNvbG9yUnVsZVswXS0+Z2V0VmFsdWUoKTsKCQkJCSR0aGlzLT5hc3NlcnRFcXVhbHMoYXJyYXkoJ3InID0+IG5ldyBTaXplKDEwLjAsIG51bGwsIHRydWUsICRvQ29sb3ItPmdldExpbmVObygpKSwgJ2cnID0+IG5ldyBTaXplKDEwMC4wLCBudWxsLCB0cnVlLCAkb0NvbG9yLT5nZXRMaW5lTm8oKSksICdiJyA9PiBuZXcgU2l6ZSgyMzAuMCwgbnVsbCwgdHJ1ZSwgJG9Db2xvci0+Z2V0TGluZU5vKCkpKSwgJG9Db2xvci0+Z2V0Q29sb3IoKSk7CgkJCQkkb0NvbG9yID0gJGFDb2xvclJ1bGVbMV0tPmdldFZhbHVlKCk7CgkJCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKGFycmF5KCdyJyA9PiBuZXcgU2l6ZSgxMC4wLCBudWxsLCB0cnVlLCAkb0NvbG9yLT5nZXRMaW5lTm8oKSksICdnJyA9PiBuZXcgU2l6ZSgxMDAuMCwgbnVsbCwgdHJ1ZSwgJG9Db2xvci0+Z2V0TGluZU5vKCkpLCAnYicgPT4gbmV3IFNpemUoMjMxLjAsIG51bGwsIHRydWUsICRvQ29sb3ItPmdldExpbmVObygpKSwgJ2EnID0+IG5ldyBTaXplKCIwMDAwLjMiLCBudWxsLCB0cnVlLCAkb0NvbG9yLT5nZXRMaW5lTm8oKSkpLCAkb0NvbG9yLT5nZXRDb2xvcigpKTsKCQkJCSRhQ29sb3JSdWxlID0gJG9SdWxlU2V0LT5nZXRSdWxlcygnb3V0bGluZS1jb2xvcicpOwoJCQkJJG9Db2xvciA9ICRhQ29sb3JSdWxlWzBdLT5nZXRWYWx1ZSgpOwoJCQkJJHRoaXMtPmFzc2VydEVxdWFscyhhcnJheSgncicgPT4gbmV3IFNpemUoMzQuMCwgbnVsbCwgdHJ1ZSwgJG9Db2xvci0+Z2V0TGluZU5vKCkpLCAnZycgPT4gbmV3IFNpemUoMzQuMCwgbnVsbCwgdHJ1ZSwgJG9Db2xvci0+Z2V0TGluZU5vKCkpLCAnYicgPT4gbmV3IFNpemUoMzQuMCwgbnVsbCwgdHJ1ZSwgJG9Db2xvci0+Z2V0TGluZU5vKCkpKSwgJG9Db2xvci0+Z2V0Q29sb3IoKSk7CgkJCX0gZWxzZSBpZigkc1NlbGVjdG9yID09PSAnI3lvdXJzJykgewoJCQkJJGFDb2xvclJ1bGUgPSAkb1J1bGVTZXQtPmdldFJ1bGVzKCdiYWNrZ3JvdW5kLWNvbG9yJyk7CgkJCQkkb0NvbG9yID0gJGFDb2xvclJ1bGVbMF0tPmdldFZhbHVlKCk7CgkJCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKGFycmF5KCdoJyA9PiBuZXcgU2l6ZSgyMjAuMCwgbnVsbCwgdHJ1ZSwgJG9Db2xvci0+Z2V0TGluZU5vKCkpLCAncycgPT4gbmV3IFNpemUoMTAuMCwgJyUnLCB0cnVlLCAkb0NvbG9yLT5nZXRMaW5lTm8oKSksICdsJyA9PiBuZXcgU2l6ZSgyMjAuMCwgJyUnLCB0cnVlLCAkb0NvbG9yLT5nZXRMaW5lTm8oKSkpLCAkb0NvbG9yLT5nZXRDb2xvcigpKTsKCQkJCSRvQ29sb3IgPSAkYUNvbG9yUnVsZVsxXS0+Z2V0VmFsdWUoKTsKCQkJCSR0aGlzLT5hc3NlcnRFcXVhbHMoYXJyYXkoJ2gnID0+IG5ldyBTaXplKDIyMC4wLCBudWxsLCB0cnVlLCAkb0NvbG9yLT5nZXRMaW5lTm8oKSksICdzJyA9PiBuZXcgU2l6ZSgxMC4wLCAnJScsIHRydWUsICRvQ29sb3ItPmdldExpbmVObygpKSwgJ2wnID0+IG5ldyBTaXplKDIyMC4wLCAnJScsIHRydWUsICRvQ29sb3ItPmdldExpbmVObygpKSwgJ2EnID0+IG5ldyBTaXplKDAwMDAuMywgbnVsbCwgdHJ1ZSwgJG9Db2xvci0+Z2V0TGluZU5vKCkpKSwgJG9Db2xvci0+Z2V0Q29sb3IoKSk7CgkJCX0KCQl9CgkJZm9yZWFjaCAoJG9Eb2MtPmdldEFsbFZhbHVlcygnY29sb3InKSBhcyAkc0NvbG9yKSB7CgkJCSR0aGlzLT5hc3NlcnRTYW1lKCdyZWQnLCAkc0NvbG9yKTsKCQl9CgkJJHRoaXMtPmFzc2VydFNhbWUoJyNtaW5lIHtjb2xvcjogcmVkO2JvcmRlci1jb2xvcjogIzBhNjRlNjtib3JkZXItY29sb3I6IHJnYmEoMTAsMTAwLDIzMSwuMyk7b3V0bGluZS1jb2xvcjogIzIyMjtiYWNrZ3JvdW5kLWNvbG9yOiAjMjMyMzIzO30KI3lvdXJzIHtiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjIwLDEwJSwyMjAlKTtiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIyMCwxMCUsMjIwJSwuMyk7fScsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdFVuaWNvZGVQYXJzaW5nKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ3VuaWNvZGUnKTsKCQlmb3JlYWNoICgkb0RvYy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKSBhcyAkb1J1bGVTZXQpIHsKCQkJJHNTZWxlY3RvciA9ICRvUnVsZVNldC0+Z2V0U2VsZWN0b3JzKCk7CgkJCSRzU2VsZWN0b3IgPSAkc1NlbGVjdG9yWzBdLT5nZXRTZWxlY3RvcigpOwoJCQlpZiAoc3Vic3RyKCRzU2VsZWN0b3IsIDAsIHN0cmxlbignLnRlc3QtJykpICE9PSAnLnRlc3QtJykgewoJCQkJY29udGludWU7CgkJCX0KCQkJJGFDb250ZW50UnVsZXMgPSAkb1J1bGVTZXQtPmdldFJ1bGVzKCdjb250ZW50Jyk7CgkJCSRhQ29udGVudHMgPSAkYUNvbnRlbnRSdWxlc1swXS0+Z2V0VmFsdWVzKCk7CgkJCSRzU3RyaW5nID0gJGFDb250ZW50c1swXVswXS0+X190b1N0cmluZygpOwoJCQlpZiAoJHNTZWxlY3RvciA9PSAnLnRlc3QtMScpIHsKCQkJCSR0aGlzLT5hc3NlcnRTYW1lKCciICInLCAkc1N0cmluZyk7CgkJCX0KCQkJaWYgKCRzU2VsZWN0b3IgPT0gJy50ZXN0LTInKSB7CgkJCQkkdGhpcy0+YXNzZXJ0U2FtZSgnIsOpIicsICRzU3RyaW5nKTsKCQkJfQoJCQlpZiAoJHNTZWxlY3RvciA9PSAnLnRlc3QtMycpIHsKCQkJCSR0aGlzLT5hc3NlcnRTYW1lKCciICInLCAkc1N0cmluZyk7CgkJCX0KCQkJaWYgKCRzU2VsZWN0b3IgPT0gJy50ZXN0LTQnKSB7CgkJCQkkdGhpcy0+YXNzZXJ0U2FtZSgnIvCdhJ4iJywgJHNTdHJpbmcpOwoJCQl9CgkJCWlmICgkc1NlbGVjdG9yID09ICcudGVzdC01JykgewoJCQkJJHRoaXMtPmFzc2VydFNhbWUoJyLmsLQiJywgJHNTdHJpbmcpOwoJCQl9CgkJCWlmICgkc1NlbGVjdG9yID09ICcudGVzdC02JykgewoJCQkJJHRoaXMtPmFzc2VydFNhbWUoJyLCpSInLCAkc1N0cmluZyk7CgkJCX0KCQkJaWYgKCRzU2VsZWN0b3IgPT0gJy50ZXN0LTcnKSB7CgkJCQkkdGhpcy0+YXNzZXJ0U2FtZSgnIlxBIicsICRzU3RyaW5nKTsKCQkJfQoJCQlpZiAoJHNTZWxlY3RvciA9PSAnLnRlc3QtOCcpIHsKCQkJCSR0aGlzLT5hc3NlcnRTYW1lKCciXCJcIiInLCAkc1N0cmluZyk7CgkJCX0KCQkJaWYgKCRzU2VsZWN0b3IgPT0gJy50ZXN0LTknKSB7CgkJCQkkdGhpcy0+YXNzZXJ0U2FtZSgnIlwiXFxcJyInLCAkc1N0cmluZyk7CgkJCX0KCQkJaWYgKCRzU2VsZWN0b3IgPT0gJy50ZXN0LTEwJykgewoJCQkJJHRoaXMtPmFzc2VydFNhbWUoJyJcXFwnXFxcXCInLCAkc1N0cmluZyk7CgkJCX0KCQkJaWYgKCRzU2VsZWN0b3IgPT0gJy50ZXN0LTExJykgewoJCQkJJHRoaXMtPmFzc2VydFNhbWUoJyJ0ZXN0IicsICRzU3RyaW5nKTsKCQkJfQoJCX0KCX0KCglmdW5jdGlvbiB0ZXN0VW5pY29kZVJhbmdlUGFyc2luZygpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCd1bmljb2RlLXJhbmdlJyk7CgkJJHNFeHBlY3RlZCA9ICJAZm9udC1mYWNlIHt1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RixVKzAyNTksVSsxRT8/LTJFRkYsVSsyMDJGO30iOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdFNwZWNpZmljaXR5KCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ3NwZWNpZmljaXR5Jyk7CgkJJG9EZWNsYXJhdGlvbkJsb2NrID0gJG9Eb2MtPmdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCk7CgkJJG9EZWNsYXJhdGlvbkJsb2NrID0gJG9EZWNsYXJhdGlvbkJsb2NrWzBdOwoJCSRhU2VsZWN0b3JzID0gJG9EZWNsYXJhdGlvbkJsb2NrLT5nZXRTZWxlY3RvcnMoKTsKCQlmb3JlYWNoICgkYVNlbGVjdG9ycyBhcyAkb1NlbGVjdG9yKSB7CgkJCXN3aXRjaCAoJG9TZWxlY3Rvci0+Z2V0U2VsZWN0b3IoKSkgewoJCQkJY2FzZSAiI3Rlc3QgLmhlbHAiOgoJCQkJCSR0aGlzLT5hc3NlcnRTYW1lKDExMCwgJG9TZWxlY3Rvci0+Z2V0U3BlY2lmaWNpdHkoKSk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICIjZmlsZSI6CgkJCQkJJHRoaXMtPmFzc2VydFNhbWUoMTAwLCAkb1NlbGVjdG9yLT5nZXRTcGVjaWZpY2l0eSgpKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgIi5oZWxwOmhvdmVyIjoKCQkJCQkkdGhpcy0+YXNzZXJ0U2FtZSgyMCwgJG9TZWxlY3Rvci0+Z2V0U3BlY2lmaWNpdHkoKSk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICJvbCBsaTo6YmVmb3JlIjoKCQkJCQkkdGhpcy0+YXNzZXJ0U2FtZSgzLCAkb1NlbGVjdG9yLT5nZXRTcGVjaWZpY2l0eSgpKTsKCQkJCQlicmVhazsKCQkJCWNhc2UgImxpLmdyZWVuIjoKCQkJCQkkdGhpcy0+YXNzZXJ0U2FtZSgxMSwgJG9TZWxlY3Rvci0+Z2V0U3BlY2lmaWNpdHkoKSk7CgkJCQkJYnJlYWs7CgkJCQlkZWZhdWx0OgoJCQkJCSR0aGlzLT5mYWlsKCJzcGVjaWZpY2l0eTogdW50ZXN0ZWQgc2VsZWN0b3IgIiAuICRvU2VsZWN0b3ItPmdldFNlbGVjdG9yKCkpOwoJCQl9CgkJfQoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoYXJyYXkobmV3IFNlbGVjdG9yKCcjdGVzdCAuaGVscCcsIHRydWUpKSwgJG9Eb2MtPmdldFNlbGVjdG9yc0J5U3BlY2lmaWNpdHkoJz4gMTAwJykpOwoJfQoKCWZ1bmN0aW9uIHRlc3RNYW5pcHVsYXRpb24oKSB7CgkJJG9Eb2MgPSAkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnYXRydWxlcycpOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCdAY2hhcnNldCAidXRmLTgiOwpAZm9udC1mYWNlIHtmb250LWZhbWlseTogIkNyYXNzUm9vdHMiO3NyYzogdXJsKCIuLi9tZWRpYS9jci50dGYiKTt9Cmh0bWwsIGJvZHkge2ZvbnQtc2l6ZTogLS42ZW07fQpAa2V5ZnJhbWVzIG15bW92ZSB7ZnJvbSB7dG9wOiAwcHg7fQoJdG8ge3RvcDogMjAwcHg7fX0KQC1tb3ota2V5ZnJhbWVzIHNvbWUtbW92ZSB7ZnJvbSB7dG9wOiAwcHg7fQoJdG8ge3RvcDogMjAwcHg7fX0KQHN1cHBvcnRzICggKHBlcnNwZWN0aXZlOiAxMHB4KSBvciAoLW1vei1wZXJzcGVjdGl2ZTogMTBweCkgb3IgKC13ZWJraXQtcGVyc3BlY3RpdmU6IDEwcHgpIG9yICgtbXMtcGVyc3BlY3RpdmU6IDEwcHgpIG9yICgtby1wZXJzcGVjdGl2ZTogMTBweCkgKSB7Ym9keSB7Zm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EiO319CkBwYWdlIDpwc2V1ZG8tY2xhc3Mge21hcmdpbjogMmluO30KQC1tb3otZG9jdW1lbnQgdXJsKGh0dHA6Ly93d3cudzMub3JnLyksCiAgICAgICAgICAgICAgIHVybC1wcmVmaXgoaHR0cDovL3d3dy53My5vcmcvU3R5bGUvKSwKICAgICAgICAgICAgICAgZG9tYWluKG1vemlsbGEub3JnKSwKICAgICAgICAgICAgICAgcmVnZXhwKCJodHRwczouKiIpIHtib2R5IHtjb2xvcjogcHVycGxlO2JhY2tncm91bmQ6IHllbGxvdzt9fQpAbWVkaWEgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkge0AtbXMtdmlld3BvcnQge3dpZHRoOiAxMDI0cHg7aGVpZ2h0OiA3NjhweDt9fQpAcmVnaW9uLXN0eWxlICNpbnRybyB7cCB7Y29sb3I6IGJsdWU7fX0nLCAkb0RvYy0+cmVuZGVyKCkpOwoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxEZWNsYXJhdGlvbkJsb2NrcygpIGFzICRvQmxvY2spIHsKCQkJZm9yZWFjaCAoJG9CbG9jay0+Z2V0U2VsZWN0b3JzKCkgYXMgJG9TZWxlY3RvcikgewoJCQkJLy9Mb29wIG92ZXIgYWxsIHNlbGVjdG9yIHBhcnRzICh0aGUgY29tbWEtc2VwYXJhdGVkIHN0cmluZ3MgaW4gYSBzZWxlY3RvcikgYW5kIHByZXBlbmQgdGhlIGlkCgkJCQkkb1NlbGVjdG9yLT5zZXRTZWxlY3RvcignI215X2lkICcgLiAkb1NlbGVjdG9yLT5nZXRTZWxlY3RvcigpKTsKCQkJfQoJCX0KCQkkdGhpcy0+YXNzZXJ0U2FtZSgnQGNoYXJzZXQgInV0Zi04IjsKQGZvbnQtZmFjZSB7Zm9udC1mYW1pbHk6ICJDcmFzc1Jvb3RzIjtzcmM6IHVybCgiLi4vbWVkaWEvY3IudHRmIik7fQojbXlfaWQgaHRtbCwgI215X2lkIGJvZHkge2ZvbnQtc2l6ZTogLS42ZW07fQpAa2V5ZnJhbWVzIG15bW92ZSB7ZnJvbSB7dG9wOiAwcHg7fQoJdG8ge3RvcDogMjAwcHg7fX0KQC1tb3ota2V5ZnJhbWVzIHNvbWUtbW92ZSB7ZnJvbSB7dG9wOiAwcHg7fQoJdG8ge3RvcDogMjAwcHg7fX0KQHN1cHBvcnRzICggKHBlcnNwZWN0aXZlOiAxMHB4KSBvciAoLW1vei1wZXJzcGVjdGl2ZTogMTBweCkgb3IgKC13ZWJraXQtcGVyc3BlY3RpdmU6IDEwcHgpIG9yICgtbXMtcGVyc3BlY3RpdmU6IDEwcHgpIG9yICgtby1wZXJzcGVjdGl2ZTogMTBweCkgKSB7I215X2lkIGJvZHkge2ZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIjt9fQpAcGFnZSA6cHNldWRvLWNsYXNzIHttYXJnaW46IDJpbjt9CkAtbW96LWRvY3VtZW50IHVybChodHRwOi8vd3d3LnczLm9yZy8pLAogICAgICAgICAgICAgICB1cmwtcHJlZml4KGh0dHA6Ly93d3cudzMub3JnL1N0eWxlLyksCiAgICAgICAgICAgICAgIGRvbWFpbihtb3ppbGxhLm9yZyksCiAgICAgICAgICAgICAgIHJlZ2V4cCgiaHR0cHM6LioiKSB7I215X2lkIGJvZHkge2NvbG9yOiBwdXJwbGU7YmFja2dyb3VuZDogeWVsbG93O319CkBtZWRpYSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSB7QC1tcy12aWV3cG9ydCB7d2lkdGg6IDEwMjRweDtoZWlnaHQ6IDc2OHB4O319CkByZWdpb24tc3R5bGUgI2ludHJvIHsjbXlfaWQgcCB7Y29sb3I6IGJsdWU7fX0nLCAkb0RvYy0+cmVuZGVyKCkpOwoKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCd2YWx1ZXMnKTsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnI2hlYWRlciB7bWFyZ2luOiAxMHB4IDJlbSAxY20gMiU7Zm9udC1mYW1pbHk6IFZlcmRhbmEsSGVsdmV0aWNhLCJHaWxsIFNhbnMiLHNhbnMtc2VyaWY7Zm9udC1zaXplOiAxMHB4O2NvbG9yOiByZWQgIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMTI4LDAsLjcpO2ZyZXF1ZW5jeTogMzBIejt9CmJvZHkge2NvbG9yOiBncmVlbjtmb250OiA3NSUgIkx1Y2lkYSBHcmFuZGUiLCJUcmVidWNoZXQgTVMiLFZlcmRhbmEsc2Fucy1zZXJpZjt9JywgJG9Eb2MtPnJlbmRlcigpKTsKCQlmb3JlYWNoICgkb0RvYy0+Z2V0QWxsUnVsZVNldHMoKSBhcyAkb1J1bGVTZXQpIHsKCQkJJG9SdWxlU2V0LT5yZW1vdmVSdWxlKCdmb250LScpOwoJCX0KCQkkdGhpcy0+YXNzZXJ0U2FtZSgnI2hlYWRlciB7bWFyZ2luOiAxMHB4IDJlbSAxY20gMiU7Y29sb3I6IHJlZCAhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6IGdyZWVuO2JhY2tncm91bmQtY29sb3I6IHJnYmEoMCwxMjgsMCwuNyk7ZnJlcXVlbmN5OiAzMEh6O30KYm9keSB7Y29sb3I6IGdyZWVuO30nLCAkb0RvYy0+cmVuZGVyKCkpOwoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxSdWxlU2V0cygpIGFzICRvUnVsZVNldCkgewoJCQkkb1J1bGVTZXQtPnJlbW92ZVJ1bGUoJ2JhY2tncm91bmQtJyk7CgkJfQoJCSR0aGlzLT5hc3NlcnRTYW1lKCcjaGVhZGVyIHttYXJnaW46IDEwcHggMmVtIDFjbSAyJTtjb2xvcjogcmVkICFpbXBvcnRhbnQ7ZnJlcXVlbmN5OiAzMEh6O30KYm9keSB7Y29sb3I6IGdyZWVuO30nLCAkb0RvYy0+cmVuZGVyKCkpOwoJfQoJCglmdW5jdGlvbiB0ZXN0UnVsZUdldHRlcnMoKSB7CgkJJG9Eb2MgPSAkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgndmFsdWVzJyk7CgkJJGFCbG9ja3MgPSAkb0RvYy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKTsKCQkkb0hlYWRlckJsb2NrID0gJGFCbG9ja3NbMF07CgkJJG9Cb2R5QmxvY2sgPSAkYUJsb2Nrc1sxXTsKCQkkYUhlYWRlclJ1bGVzID0gJG9IZWFkZXJCbG9jay0+Z2V0UnVsZXMoJ2JhY2tncm91bmQtJyk7CgkJJHRoaXMtPmFzc2VydFNhbWUoMiwgY291bnQoJGFIZWFkZXJSdWxlcykpOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCdiYWNrZ3JvdW5kLWNvbG9yJywgJGFIZWFkZXJSdWxlc1swXS0+Z2V0UnVsZSgpKTsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgnYmFja2dyb3VuZC1jb2xvcicsICRhSGVhZGVyUnVsZXNbMV0tPmdldFJ1bGUoKSk7CgkJJGFIZWFkZXJSdWxlcyA9ICRvSGVhZGVyQmxvY2stPmdldFJ1bGVzQXNzb2MoJ2JhY2tncm91bmQtJyk7CgkJJHRoaXMtPmFzc2VydFNhbWUoMSwgY291bnQoJGFIZWFkZXJSdWxlcykpOwoJCSR0aGlzLT5hc3NlcnRTYW1lKHRydWUsICRhSGVhZGVyUnVsZXNbJ2JhY2tncm91bmQtY29sb3InXS0+Z2V0VmFsdWUoKSBpbnN0YW5jZW9mIFxTYWJiZXJ3b3JtXENTU1xWYWx1ZVxDb2xvcik7CgkJJHRoaXMtPmFzc2VydFNhbWUoJ3JnYmEnLCAkYUhlYWRlclJ1bGVzWydiYWNrZ3JvdW5kLWNvbG9yJ10tPmdldFZhbHVlKCktPmdldENvbG9yRGVzY3JpcHRpb24oKSk7CgkJJG9IZWFkZXJCbG9jay0+cmVtb3ZlUnVsZSgkYUhlYWRlclJ1bGVzWydiYWNrZ3JvdW5kLWNvbG9yJ10pOwoJCSRhSGVhZGVyUnVsZXMgPSAkb0hlYWRlckJsb2NrLT5nZXRSdWxlcygnYmFja2dyb3VuZC0nKTsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgxLCBjb3VudCgkYUhlYWRlclJ1bGVzKSk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJ2dyZWVuJywgJGFIZWFkZXJSdWxlc1swXS0+Z2V0VmFsdWUoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdFNsYXNoZWRWYWx1ZXMoKSB7CgkJJG9Eb2MgPSAkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnc2xhc2hlZCcpOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCcudGVzdCB7Zm9udDogMTJweC8xLjUgVmVyZGFuYSxBcmlhbCxzYW5zLXNlcmlmO2JvcmRlci1yYWRpdXM6IDVweCAxMHB4IDVweCAxMHB4LzEwcHggNXB4IDEwcHggNXB4O30nLCAkb0RvYy0+cmVuZGVyKCkpOwoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxWYWx1ZXMobnVsbCkgYXMgJG1WYWx1ZSkgewoJCQlpZiAoJG1WYWx1ZSBpbnN0YW5jZW9mIFNpemUgJiYgJG1WYWx1ZS0+aXNTaXplKCkgJiYgISRtVmFsdWUtPmlzUmVsYXRpdmUoKSkgewoJCQkJJG1WYWx1ZS0+c2V0U2l6ZSgkbVZhbHVlLT5nZXRTaXplKCkgKiAzKTsKCQkJfQoJCX0KCQlmb3JlYWNoICgkb0RvYy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKSBhcyAkb0Jsb2NrKSB7CgkJCSRvUnVsZSA9ICRvQmxvY2stPmdldFJ1bGVzKCdmb250Jyk7CgkJCSRvUnVsZSA9ICRvUnVsZVswXTsKCQkJJG9TcGFjZUxpc3QgPSAkb1J1bGUtPmdldFZhbHVlKCk7CgkJCSR0aGlzLT5hc3NlcnRFcXVhbHMoJyAnLCAkb1NwYWNlTGlzdC0+Z2V0TGlzdFNlcGFyYXRvcigpKTsKCQkJJG9TbGFzaExpc3QgPSAkb1NwYWNlTGlzdC0+Z2V0TGlzdENvbXBvbmVudHMoKTsKCQkJJG9Db21tYUxpc3QgPSAkb1NsYXNoTGlzdFsxXTsKCQkJJG9TbGFzaExpc3QgPSAkb1NsYXNoTGlzdFswXTsKCQkJJHRoaXMtPmFzc2VydEVxdWFscygnLCcsICRvQ29tbWFMaXN0LT5nZXRMaXN0U2VwYXJhdG9yKCkpOwoJCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCcvJywgJG9TbGFzaExpc3QtPmdldExpc3RTZXBhcmF0b3IoKSk7CgkJCSRvUnVsZSA9ICRvQmxvY2stPmdldFJ1bGVzKCdib3JkZXItcmFkaXVzJyk7CgkJCSRvUnVsZSA9ICRvUnVsZVswXTsKCQkJJG9TbGFzaExpc3QgPSAkb1J1bGUtPmdldFZhbHVlKCk7CgkJCSR0aGlzLT5hc3NlcnRFcXVhbHMoJy8nLCAkb1NsYXNoTGlzdC0+Z2V0TGlzdFNlcGFyYXRvcigpKTsKCQkJJG9TcGFjZUxpc3QxID0gJG9TbGFzaExpc3QtPmdldExpc3RDb21wb25lbnRzKCk7CgkJCSRvU3BhY2VMaXN0MiA9ICRvU3BhY2VMaXN0MVsxXTsKCQkJJG9TcGFjZUxpc3QxID0gJG9TcGFjZUxpc3QxWzBdOwoJCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCcgJywgJG9TcGFjZUxpc3QxLT5nZXRMaXN0U2VwYXJhdG9yKCkpOwoJCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCcgJywgJG9TcGFjZUxpc3QyLT5nZXRMaXN0U2VwYXJhdG9yKCkpOwoJCX0KCQkkdGhpcy0+YXNzZXJ0U2FtZSgnLnRlc3Qge2ZvbnQ6IDM2cHgvMS41IFZlcmRhbmEsQXJpYWwsc2Fucy1zZXJpZjtib3JkZXItcmFkaXVzOiAxNXB4IDMwcHggMTVweCAzMHB4LzMwcHggMTVweCAzMHB4IDE1cHg7fScsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdEZ1bmN0aW9uU3ludGF4KCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ2Z1bmN0aW9ucycpOwoJCSRzRXhwZWN0ZWQgPSAnZGl2Lm1haW4ge2JhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgjMDAwLCNmZmYpO30KLmNvbGxhcHNlcjo6YmVmb3JlLCAuY29sbGFwc2VyOjotbW96LWJlZm9yZSwgLmNvbGxhcHNlcjo6LXdlYmtpdC1iZWZvcmUge2NvbnRlbnQ6ICLCuyI7Zm9udC1zaXplOiAxLjJlbTttYXJnaW4tcmlnaHQ6IC4yZW07LW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiAtbW96LXRyYW5zZm9ybTstbW96LXRyYW5zaXRpb24tZHVyYXRpb246IC4yczstbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciA2MCU7fQouY29sbGFwc2VyLmV4cGFuZGVkOjpiZWZvcmUsIC5jb2xsYXBzZXIuZXhwYW5kZWQ6Oi1tb3otYmVmb3JlLCAuY29sbGFwc2VyLmV4cGFuZGVkOjotd2Via2l0LWJlZm9yZSB7LW1vei10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7fQouY29sbGFwc2VyICsgKiB7aGVpZ2h0OiAwO292ZXJmbG93OiBoaWRkZW47LW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiBoZWlnaHQ7LW1vei10cmFuc2l0aW9uLWR1cmF0aW9uOiAuM3M7fQouY29sbGFwc2VyLmV4cGFuZGVkICsgKiB7aGVpZ2h0OiBhdXRvO30nOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7CgoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxWYWx1ZXMobnVsbCwgdHJ1ZSkgYXMgJG1WYWx1ZSkgewoJCQlpZiAoJG1WYWx1ZSBpbnN0YW5jZW9mIFNpemUgJiYgJG1WYWx1ZS0+aXNTaXplKCkpIHsKCQkJCSRtVmFsdWUtPnNldFNpemUoJG1WYWx1ZS0+Z2V0U2l6ZSgpICogMyk7CgkJCX0KCQl9CgkJJHNFeHBlY3RlZCA9IHN0cl9yZXBsYWNlKGFycmF5KCcxLjJlbScsICcuMmVtJywgJzYwJScpLCBhcnJheSgnMy42ZW0nLCAnLjZlbScsICcxODAlJyksICRzRXhwZWN0ZWQpOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7CgoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxWYWx1ZXMobnVsbCwgdHJ1ZSkgYXMgJG1WYWx1ZSkgewoJCQlpZiAoJG1WYWx1ZSBpbnN0YW5jZW9mIFNpemUgJiYgISRtVmFsdWUtPmlzUmVsYXRpdmUoKSAmJiAhJG1WYWx1ZS0+aXNDb2xvckNvbXBvbmVudCgpKSB7CgkJCQkkbVZhbHVlLT5zZXRTaXplKCRtVmFsdWUtPmdldFNpemUoKSAqIDIpOwoJCQl9CgkJfQoJCSRzRXhwZWN0ZWQgPSBzdHJfcmVwbGFjZShhcnJheSgnLjJzJywgJy4zcycsICc5MGRlZycpLCBhcnJheSgnLjRzJywgJy42cycsICcxODBkZWcnKSwgJHNFeHBlY3RlZCk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCglmdW5jdGlvbiB0ZXN0RXhwYW5kU2hvcnRoYW5kcygpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCdleHBhbmQtc2hvcnRoYW5kcycpOwoJCSRzRXhwZWN0ZWQgPSAnYm9keSB7Zm9udDogaXRhbGljIDUwMCAxNHB4LzEuNjE4ICJUcmVidWNoZXQgTVMiLEdlb3JnaWEsc2VyaWY7Ym9yZGVyOiAycHggc29saWQgI2YwZjtiYWNrZ3JvdW5kOiAjY2NjIHVybCgiL2ltYWdlcy9mb28ucG5nIikgbm8tcmVwZWF0IGxlZnQgdG9wO21hcmdpbjogMWVtICFpbXBvcnRhbnQ7cGFkZGluZzogMnB4IDZweCAzcHg7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCQkkb0RvYy0+ZXhwYW5kU2hvcnRoYW5kcygpOwoJCSRzRXhwZWN0ZWQgPSAnYm9keSB7bWFyZ2luLXRvcDogMWVtICFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OiAxZW0gIWltcG9ydGFudDttYXJnaW4tYm90dG9tOiAxZW0gIWltcG9ydGFudDttYXJnaW4tbGVmdDogMWVtICFpbXBvcnRhbnQ7cGFkZGluZy10b3A6IDJweDtwYWRkaW5nLXJpZ2h0OiA2cHg7cGFkZGluZy1ib3R0b206IDNweDtwYWRkaW5nLWxlZnQ6IDZweDtib3JkZXItdG9wLWNvbG9yOiAjZjBmO2JvcmRlci1yaWdodC1jb2xvcjogI2YwZjtib3JkZXItYm90dG9tLWNvbG9yOiAjZjBmO2JvcmRlci1sZWZ0LWNvbG9yOiAjZjBmO2JvcmRlci10b3Atc3R5bGU6IHNvbGlkO2JvcmRlci1yaWdodC1zdHlsZTogc29saWQ7Ym9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7Ym9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO2JvcmRlci10b3Atd2lkdGg6IDJweDtib3JkZXItcmlnaHQtd2lkdGg6IDJweDtib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Ym9yZGVyLWxlZnQtd2lkdGg6IDJweDtmb250LXN0eWxlOiBpdGFsaWM7Zm9udC12YXJpYW50OiBub3JtYWw7Zm9udC13ZWlnaHQ6IDUwMDtmb250LXNpemU6IDE0cHg7bGluZS1oZWlnaHQ6IDEuNjE4O2ZvbnQtZmFtaWx5OiAiVHJlYnVjaGV0IE1TIixHZW9yZ2lhLHNlcmlmO2JhY2tncm91bmQtY29sb3I6ICNjY2M7YmFja2dyb3VuZC1pbWFnZTogdXJsKCIvaW1hZ2VzL2Zvby5wbmciKTtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O2JhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsO2JhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO30nOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdENyZWF0ZVNob3J0aGFuZHMoKSB7CgkJJG9Eb2MgPSAkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnY3JlYXRlLXNob3J0aGFuZHMnKTsKCQkkc0V4cGVjdGVkID0gJ2JvZHkge2ZvbnQtc2l6ZTogMmVtO2ZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtmb250LXdlaWdodDogYm9sZDtib3JkZXItd2lkdGg6IDJweDtib3JkZXItY29sb3I6ICM5OTk7Ym9yZGVyLXN0eWxlOiBkb3R0ZWQ7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZvb2Jhci5wbmciKTtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXk7bWFyZ2luLXRvcDogMnB4O21hcmdpbi1yaWdodDogM3B4O21hcmdpbi1ib3R0b206IDRweDttYXJnaW4tbGVmdDogNXB4O30nOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7CgkJJG9Eb2MtPmNyZWF0ZVNob3J0aGFuZHMoKTsKCQkkc0V4cGVjdGVkID0gJ2JvZHkge2JhY2tncm91bmQ6ICNmZmYgdXJsKCJmb29iYXIucG5nIikgcmVwZWF0LXk7bWFyZ2luOiAycHggNXB4IDRweCAzcHg7Ym9yZGVyOiAycHggZG90dGVkICM5OTk7Zm9udDogYm9sZCAyZW0gSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCglmdW5jdGlvbiB0ZXN0TmFtZXNwYWNlcygpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCduYW1lc3BhY2VzJyk7CgkJJHNFeHBlY3RlZCA9ICdAbmFtZXNwYWNlIHRvdG8gImh0dHA6Ly90b3RvLmV4YW1wbGUub3JnIjsKQG5hbWVzcGFjZSAiaHR0cDovL2V4YW1wbGUuY29tL2ZvbyI7CkBuYW1lc3BhY2UgZm9vIHVybCgiaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iKTsKQG5hbWVzcGFjZSBmb28gdXJsKCJodHRwOi8vd3d3LmV4YW1wbGUuY29tLyIpOwpmb298dGVzdCB7Z2FnYTogMTt9Cnx0ZXN0IHtnYWdhOiAyO30nOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgkKCWZ1bmN0aW9uIHRlc3RJbm5lckNvbG9ycygpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCdpbm5lci1jb2xvcicpOwoJCSRzRXhwZWN0ZWQgPSAndGVzdCB7YmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsMCAwLDAgYm90dG9tLGZyb20oIzAwNmNhZCksdG8oaHNsKDIwMiwxMDAlLDQ5JSkpKTt9JzsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgkc0V4cGVjdGVkLCAkb0RvYy0+cmVuZGVyKCkpOwoJfQoKCWZ1bmN0aW9uIHRlc3RQcmVmaXhlZEdyYWRpZW50KCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ3dlYmtpdCcpOwoJCSRzRXhwZWN0ZWQgPSAnLnRlc3Qge2JhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCByaWdodCx3aGl0ZSxibGFjayk7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCglmdW5jdGlvbiB0ZXN0TGlzdFZhbHVlUmVtb3ZhbCgpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCdhdHJ1bGVzJyk7CgkJZm9yZWFjaCAoJG9Eb2MtPmdldENvbnRlbnRzKCkgYXMgJG9JdGVtKSB7CgkJCWlmICgkb0l0ZW0gaW5zdGFuY2VvZiBBdFJ1bGUpIHsKCQkJCSRvRG9jLT5yZW1vdmUoJG9JdGVtKTsKCQkJCWNvbnRpbnVlOwoJCQl9CgkJfQoJCSR0aGlzLT5hc3NlcnRTYW1lKCdodG1sLCBib2R5IHtmb250LXNpemU6IC0uNmVtO30nLCAkb0RvYy0+cmVuZGVyKCkpOwoKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCduZXN0ZWQnKTsKCQlmb3JlYWNoICgkb0RvYy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKSBhcyAkb0Jsb2NrKSB7CgkJCSRvRG9jLT5yZW1vdmVEZWNsYXJhdGlvbkJsb2NrQnlTZWxlY3Rvcigkb0Jsb2NrLCBmYWxzZSk7CgkJCWJyZWFrOwoJCX0KCQkkdGhpcy0+YXNzZXJ0U2FtZSgnaHRtbCB7c29tZS1vdGhlcjogLXRlc3QodmFsMSk7fQpAbWVkaWEgc2NyZWVuIHtodG1sIHtzb21lOiAtdGVzdCh2YWwyKTt9fQojdW5yZWxhdGVkIHtvdGhlcjogeWVzO30nLCAkb0RvYy0+cmVuZGVyKCkpOwoKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCduZXN0ZWQnKTsKCQlmb3JlYWNoICgkb0RvYy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKSBhcyAkb0Jsb2NrKSB7CgkJCSRvRG9jLT5yZW1vdmVEZWNsYXJhdGlvbkJsb2NrQnlTZWxlY3Rvcigkb0Jsb2NrLCB0cnVlKTsKCQkJYnJlYWs7CgkJfQoJCSR0aGlzLT5hc3NlcnRTYW1lKCdAbWVkaWEgc2NyZWVuIHtodG1sIHtzb21lOiAtdGVzdCh2YWwyKTt9fQojdW5yZWxhdGVkIHtvdGhlcjogeWVzO30nLCAkb0RvYy0+cmVuZGVyKCkpOwoJfQoJCgkvKioKCSogQGV4cGVjdGVkRXhjZXB0aW9uIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcT3V0cHV0RXhjZXB0aW9uCgkqLwoJZnVuY3Rpb24gdGVzdFNlbGVjdG9yUmVtb3ZhbCgpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCcxcmVhZG1lJyk7CgkJJGFCbG9ja3MgPSAkb0RvYy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKTsKCQkkb0Jsb2NrMSA9ICRhQmxvY2tzWzBdOwoJCSR0aGlzLT5hc3NlcnRTYW1lKHRydWUsICRvQmxvY2sxLT5yZW1vdmVTZWxlY3RvcignaHRtbCcpKTsKCQkkc0V4cGVjdGVkID0gJ0BjaGFyc2V0ICJ1dGYtOCI7CkBmb250LWZhY2Uge2ZvbnQtZmFtaWx5OiAiQ3Jhc3NSb290cyI7c3JjOiB1cmwoIi4uL21lZGlhL2NyLnR0ZiIpO30KYm9keSB7Zm9udC1zaXplOiAxLjZlbTt9JzsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgkc0V4cGVjdGVkLCAkb0RvYy0+cmVuZGVyKCkpOwoJCSR0aGlzLT5hc3NlcnRTYW1lKGZhbHNlLCAkb0Jsb2NrMS0+cmVtb3ZlU2VsZWN0b3IoJ2h0bWwnKSk7CgkJJHRoaXMtPmFzc2VydFNhbWUodHJ1ZSwgJG9CbG9jazEtPnJlbW92ZVNlbGVjdG9yKCdib2R5JykpOwoJCS8vIFRoaXMgdHJpZXMgdG8gb3V0cHV0IGEgZGVjbGFyYXRpb24gYmxvY2sgd2l0aG91dCBhIHNlbGVjdG9yIGFuZCB0aHJvd3MuCgkJJG9Eb2MtPnJlbmRlcigpOwoJfQoKCWZ1bmN0aW9uIHRlc3RDb21tZW50cygpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCdjb21tZW50cycpOwoJCSRzRXhwZWN0ZWQgPSAnQGltcG9ydCB1cmwoInNvbWUvdXJsLmNzcyIpIHNjcmVlbjsKLmZvbywgI2JhciB7YmFja2dyb3VuZC1jb2xvcjogIzAwMDt9CkBtZWRpYSBzY3JlZW4geyNmb28uYmFyIHtwb3NpdGlvbjogYWJzb2x1dGU7fX0nOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdFVybEluRmlsZSgpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCd1cmwnLCBTZXR0aW5nczo6Y3JlYXRlKCktPndpdGhNdWx0aWJ5dGVTdXBwb3J0KHRydWUpKTsKCQkkc0V4cGVjdGVkID0gJ2JvZHkge2JhY2tncm91bmQ6ICNmZmYgdXJsKCJodHRwOi8vc29tZXNpdGUuY29tL2ltYWdlcy9zb21laW1hZ2UuZ2lmIikgcmVwZWF0IHRvcCBjZW50ZXI7fQpib2R5IHtiYWNrZ3JvdW5kLXVybDogdXJsKCJodHRwOi8vc29tZXNpdGUuY29tL2ltYWdlcy9zb21laW1hZ2UuZ2lmIik7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCglmdW5jdGlvbiB0ZXN0SGV4QWxwaGFJbkZpbGUoKSB7CgkJJG9Eb2MgPSAkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnaGV4LWFscGhhJywgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTXVsdGlieXRlU3VwcG9ydCh0cnVlKSk7CgkJJHNFeHBlY3RlZCA9ICdkaXYge2JhY2tncm91bmQ6IHJnYmEoMTcsMzQsNTEsLjI3KTt9CmRpdiB7YmFja2dyb3VuZDogcmdiYSgxNywzNCw1MSwuMjcpO30nOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdENhbGNJbkZpbGUoKSB7CgkJJG9Eb2MgPSAkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnY2FsYycsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aE11bHRpYnl0ZVN1cHBvcnQodHJ1ZSkpOwoJCSRzRXhwZWN0ZWQgPSAnZGl2IHt3aWR0aDogY2FsYygxMDAlIC8gNCk7fQpkaXYge21hcmdpbi10b3A6IGNhbGMoLTEyMCUgLSA0cHgpO30KZGl2IHtoZWlnaHQ6IC13ZWJraXQtY2FsYyg5IC8gMTYgKiAxMDAlKSAhaW1wb3J0YW50O3dpZHRoOiAtbW96LWNhbGMoKCA1MHB4IC0gNTAlICkgKiAyKTt9JzsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgkc0V4cGVjdGVkLCAkb0RvYy0+cmVuZGVyKCkpOwoJfQoKCWZ1bmN0aW9uIHRlc3RDYWxjTmVzdGVkSW5GaWxlKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ2NhbGMtbmVzdGVkJywgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTXVsdGlieXRlU3VwcG9ydCh0cnVlKSk7CgkJJHNFeHBlY3RlZCA9ICcudGVzdCB7Zm9udC1zaXplOiBjYWxjKCggMyAqIDRweCApICsgLTJweCk7dG9wOiBjYWxjKDIwMHB4IC0gY2FsYygyMCAqIDNweCkpO30nOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdEdyaWRMaW5lTmFtZUluRmlsZSgpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCdncmlkLWxpbmVuYW1lJywgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTXVsdGlieXRlU3VwcG9ydCh0cnVlKSk7CgkJJHNFeHBlY3RlZCA9ICJkaXYge2dyaWQtdGVtcGxhdGUtY29sdW1uczogW2xpbmVuYW1lXSAxMDBweDt9XG5zcGFuIHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6IFtsaW5lbmFtZTEgbGluZW5hbWUyXSAxMDBweDt9IjsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgkc0V4cGVjdGVkLCAkb0RvYy0+cmVuZGVyKCkpOwoJfQoKCWZ1bmN0aW9uIHRlc3RFbXB0eUdyaWRMaW5lTmFtZUxlbmllbnRJbkZpbGUoKSB7CgkJJG9Eb2MgPSAkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnZW1wdHktZ3JpZC1saW5lbmFtZScpOwoJCSRzRXhwZWN0ZWQgPSAnLnRlc3Qge2dyaWQtdGVtcGxhdGUtY29sdW1uczogW10gMTAwcHg7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCglmdW5jdGlvbiB0ZXN0VW5tYXRjaGVkQnJhY2VzSW5GaWxlKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ3VubWF0Y2hlZF9icmFjZXMnLCBTZXR0aW5nczo6Y3JlYXRlKCktPndpdGhNdWx0aWJ5dGVTdXBwb3J0KHRydWUpKTsKCQkkc0V4cGVjdGVkID0gJ2J1dHRvbiwgaW5wdXQsIGNoZWNrYm94LCB0ZXh0YXJlYSB7b3V0bGluZTogMDttYXJnaW46IDA7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCgkvKioKCSogQGV4cGVjdGVkRXhjZXB0aW9uIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCgkqLwoJZnVuY3Rpb24gdGVzdExpbmVOYW1lRmFpbHVyZSgpIHsKCQkkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnLWVtcHR5LWdyaWQtbGluZW5hbWUnLCBTZXR0aW5nczo6Y3JlYXRlKCktPndpdGhMZW5pZW50UGFyc2luZyhmYWxzZSkpOwoJfQoKCS8qKgoJKiBAZXhwZWN0ZWRFeGNlcHRpb24gU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24KCSovCglmdW5jdGlvbiB0ZXN0Q2FsY0ZhaWx1cmUoKSB7CgkJJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJy1jYWxjLW5vLXNwYWNlLWFyb3VuZC1taW51cycsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aExlbmllbnRQYXJzaW5nKGZhbHNlKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdFVybEluRmlsZU1iT2ZmKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ3VybCcsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aE11bHRpYnl0ZVN1cHBvcnQoZmFsc2UpKTsKCQkkc0V4cGVjdGVkID0gJ2JvZHkge2JhY2tncm91bmQ6ICNmZmYgdXJsKCJodHRwOi8vc29tZXNpdGUuY29tL2ltYWdlcy9zb21laW1hZ2UuZ2lmIikgcmVwZWF0IHRvcCBjZW50ZXI7fQpib2R5IHtiYWNrZ3JvdW5kLXVybDogdXJsKCJodHRwOi8vc29tZXNpdGUuY29tL2ltYWdlcy9zb21laW1hZ2UuZ2lmIik7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCglmdW5jdGlvbiB0ZXN0RW1wdHlGaWxlKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJy1lbXB0eScsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aE11bHRpYnl0ZVN1cHBvcnQodHJ1ZSkpOwoJCSRzRXhwZWN0ZWQgPSAnJzsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgkc0V4cGVjdGVkLCAkb0RvYy0+cmVuZGVyKCkpOwoJfQoKCWZ1bmN0aW9uIHRlc3RFbXB0eUZpbGVNYk9mZigpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCctZW1wdHknLCBTZXR0aW5nczo6Y3JlYXRlKCktPndpdGhNdWx0aWJ5dGVTdXBwb3J0KGZhbHNlKSk7CgkJJHNFeHBlY3RlZCA9ICcnOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdENoYXJzZXRMZW5pZW50MSgpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCctY2hhcnNldC1hZnRlci1ydWxlJywgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTGVuaWVudFBhcnNpbmcodHJ1ZSkpOwoJCSRzRXhwZWN0ZWQgPSAnI2lkIHtwcm9wOiB2YXIoLS12YWwpO30nOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdENoYXJzZXRMZW5pZW50MigpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCctY2hhcnNldC1pbi1ibG9jaycsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aExlbmllbnRQYXJzaW5nKHRydWUpKTsKCQkkc0V4cGVjdGVkID0gJ0BtZWRpYSBwcmludCB7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCglmdW5jdGlvbiB0ZXN0VHJhaWxpbmdXaGl0ZXNwYWNlKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ3RyYWlsaW5nLXdoaXRlc3BhY2UnLCBTZXR0aW5nczo6Y3JlYXRlKCktPndpdGhMZW5pZW50UGFyc2luZyhmYWxzZSkpOwoJCSRzRXhwZWN0ZWQgPSAnZGl2IHt3aWR0aDogMjAwcHg7fSc7CgkJJHRoaXMtPmFzc2VydFNhbWUoJHNFeHBlY3RlZCwgJG9Eb2MtPnJlbmRlcigpKTsKCX0KCgkvKioKCSAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24KCSAqLwoJZnVuY3Rpb24gdGVzdENoYXJzZXRGYWlsdXJlMSgpIHsKCQkkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnLWNoYXJzZXQtYWZ0ZXItcnVsZScsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aExlbmllbnRQYXJzaW5nKGZhbHNlKSk7Cgl9CgoJLyoqCgkgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCgkgKi8KCWZ1bmN0aW9uIHRlc3RDaGFyc2V0RmFpbHVyZTIoKSB7CgkJJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJy1jaGFyc2V0LWluLWJsb2NrJywgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTGVuaWVudFBhcnNpbmcoZmFsc2UpKTsKCX0KCgkvKioKCSAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xTb3VyY2VFeGNlcHRpb24KCSAqLwoJZnVuY3Rpb24gdGVzdFVub3BlbmVkQ2xvc2luZ0JyYWNrZXRGYWlsdXJlKCkgewoJCSR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCd1bm9wZW5lZC1jbG9zZS1icmFja2V0cycsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aExlbmllbnRQYXJzaW5nKGZhbHNlKSk7Cgl9CgoJLyoqCgkgKiBFbnN1cmUgdGhhdCBhIG1pc3NpbmcgcHJvcGVydHkgdmFsdWUgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KCSAqCgkgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCgkgKiBAY292ZXJzIFxTYWJiZXJ3b3JtXENTU1xWYWx1ZVxWYWx1ZTo6cGFyc2VWYWx1ZSgpCgkgKi8KCWZ1bmN0aW9uIHRlc3RNaXNzaW5nUHJvcGVydHlWYWx1ZVN0cmljdCgpIHsKCQkkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnbWlzc2luZy1wcm9wZXJ0eS12YWx1ZScsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aExlbmllbnRQYXJzaW5nKGZhbHNlKSk7Cgl9CgoJLyoqCgkgKiBFbnN1cmUgdGhhdCBhIG1pc3NpbmcgcHJvcGVydHkgdmFsdWUgaXMgaWdub3JlZCB3aGVuIGluIGxlbmllbnQgcGFyc2luZyBtb2RlLgoJICoKCSAqIEBjb3ZlcnMgXFNhYmJlcndvcm1cQ1NTXFZhbHVlXFZhbHVlOjpwYXJzZVZhbHVlKCkKCSAqLwoJZnVuY3Rpb24gdGVzdE1pc3NpbmdQcm9wZXJ0eVZhbHVlTGVuaWVudCgpIHsKCQkkcGFyc2VkID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ21pc3NpbmctcHJvcGVydHktdmFsdWUnLCBTZXR0aW5nczo6Y3JlYXRlKCktPndpdGhMZW5pZW50UGFyc2luZyh0cnVlKSk7CgkJJHJ1bGVzZXRzID0gJHBhcnNlZC0+Z2V0QWxsUnVsZVNldHMoKTsKCQkkdGhpcy0+YXNzZXJ0Q291bnQoIDEsICRydWxlc2V0cyApOwoJCSRibG9jayA9ICRydWxlc2V0c1swXTsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSggJGJsb2NrIGluc3RhbmNlb2YgRGVjbGFyYXRpb25CbG9jayApOwoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoIGFycmF5KCAnZGl2JyApLCAkYmxvY2stPmdldFNlbGVjdG9ycygpICk7CgkJJHJ1bGVzID0gJGJsb2NrLT5nZXRSdWxlcygpOwoJCSR0aGlzLT5hc3NlcnRDb3VudCggMSwgJHJ1bGVzICk7CgkJJHJ1bGUgPSAkcnVsZXNbMF07CgkJJHRoaXMtPmFzc2VydEVxdWFscyggJ2Rpc3BsYXknLCAkcnVsZS0+Z2V0UnVsZSgpICk7CgkJJHRoaXMtPmFzc2VydEVxdWFscyggJ2lubGluZS1ibG9jaycsICRydWxlLT5nZXRWYWx1ZSgpICk7Cgl9CgoJLyoqCgkgKiBQYXJzZSBzdHJ1Y3R1cmUgZm9yIGZpbGUuCgkgKgoJICogQHBhcmFtIHN0cmluZyAgICAgICRzRmlsZU5hbWUgRmlsZW5hbWUuCgkgKiBAcGFyYW0gbnVsbHxvYkplQ3QgJG9TZXR0aW5ncyBTZXR0aW5ncy4KCSAqCgkgKiBAcmV0dXJuIENTU0xpc3RcRG9jdW1lbnQgUGFyc2VkIGRvY3VtZW50LgoJICovCglmdW5jdGlvbiBwYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCRzRmlsZU5hbWUsICRvU2V0dGluZ3MgPSBudWxsKSB7CgkJJHNGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uLy4uL2ZpbGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAiJHNGaWxlTmFtZS5jc3MiOwoJCSRvUGFyc2VyID0gbmV3IFBhcnNlcihmaWxlX2dldF9jb250ZW50cygkc0ZpbGUpLCAkb1NldHRpbmdzKTsKCQlyZXR1cm4gJG9QYXJzZXItPnBhcnNlKCk7Cgl9CgoJLyoqCgkgKiBAZGVwZW5kcyB0ZXN0RmlsZXMKCSAqLwoJZnVuY3Rpb24gdGVzdExpbmVOdW1iZXJzUGFyc2luZygpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCdsaW5lLW51bWJlcnMnKTsKCQkvLyBhcnJheSBrZXkgaXMgdGhlIGV4cGVjdGVkIGxpbmUgbnVtYmVyCgkJJGFFeHBlY3RlZCA9IGFycmF5KAoJCQkxID0+IGFycmF5KCdTYWJiZXJ3b3JtXENTU1xQcm9wZXJ0eVxDaGFyc2V0JyksCgkJCTMgPT4gYXJyYXkoJ1NhYmJlcndvcm1cQ1NTXFByb3BlcnR5XENTU05hbWVzcGFjZScpLAoJCQk1ID0+IGFycmF5KCdTYWJiZXJ3b3JtXENTU1xSdWxlU2V0XEF0UnVsZVNldCcpLAoJCQkxMSA9PiBhcnJheSgnU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrJyksCgkJCS8vIExpbmUgTnVtYmVycyBvZiB0aGUgaW5uZXIgZGVjbGFyYXRpb24gYmxvY2tzCgkJCTE3ID0+IGFycmF5KCdTYWJiZXJ3b3JtXENTU1xDU1NMaXN0XEtleUZyYW1lJywgMTgsIDIwKSwKCQkJMjMgPT4gYXJyYXkoJ1NhYmJlcndvcm1cQ1NTXFByb3BlcnR5XEltcG9ydCcpLAoJCQkyNSA9PiBhcnJheSgnU2FiYmVyd29ybVxDU1NcUnVsZVNldFxEZWNsYXJhdGlvbkJsb2NrJykKCQkpOwoKCQkkYUFjdHVhbCA9IGFycmF5KCk7CgkJZm9yZWFjaCAoJG9Eb2MtPmdldENvbnRlbnRzKCkgYXMgJG9Db250ZW50KSB7CgkJCSRhQWN0dWFsWyRvQ29udGVudC0+Z2V0TGluZU5vKCldID0gYXJyYXkoZ2V0X2NsYXNzKCRvQ29udGVudCkpOwoJCQlpZiAoJG9Db250ZW50IGluc3RhbmNlb2YgS2V5RnJhbWUpIHsKCQkJCWZvcmVhY2ggKCRvQ29udGVudC0+Z2V0Q29udGVudHMoKSBhcyAkYmxvY2spIHsKCQkJCQkkYUFjdHVhbFskb0NvbnRlbnQtPmdldExpbmVObygpXVtdID0gJGJsb2NrLT5nZXRMaW5lTm8oKTsKCQkJCX0KCQkJfQoJCX0KCgkJJGFVcmxFeHBlY3RlZCA9IGFycmF5KDcsIDI2KTsgLy8gZXhwZWN0ZWQgbGluZSBudW1iZXJzCgkJJGFVcmxBY3R1YWwgPSBhcnJheSgpOwoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxWYWx1ZXMoKSBhcyAkb1ZhbHVlKSB7CgkJCWlmICgkb1ZhbHVlIGluc3RhbmNlb2YgVVJMKSB7CgkJCQkkYVVybEFjdHVhbFtdID0gJG9WYWx1ZS0+Z2V0TGluZU5vKCk7CgkJCX0KCQl9CgoJCS8vIENoZWNraW5nIGZvciB0aGUgbXVsdGlsaW5lIGNvbG9yIHJ1bGUgbGluZXMgMjctMzEKCQkkYUV4cGVjdGVkQ29sb3JMaW5lcyA9IGFycmF5KDI4LCAyOSwgMzApOwoJCSRhRGVjbEJsb2NrcyA9ICRvRG9jLT5nZXRBbGxEZWNsYXJhdGlvbkJsb2NrcygpOwoJCS8vIENob29zZSB0aGUgMm5kIG9uZQoJCSRvRGVjbEJsb2NrID0gJGFEZWNsQmxvY2tzWzFdOwoJCSRhUnVsZXMgPSAkb0RlY2xCbG9jay0+Z2V0UnVsZXMoKTsKCQkvLyBDaG9vc2UgdGhlIDJuZCBvbmUKCQkkb0NvbG9yID0gJGFSdWxlc1sxXS0+Z2V0VmFsdWUoKTsKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKDI3LCAkYVJ1bGVzWzFdLT5nZXRMaW5lTm8oKSk7CgoJCWZvcmVhY2ggKCRvQ29sb3ItPmdldENvbG9yKCkgYXMgJG9TaXplKSB7CgkJCSRhQWN0dWFsQ29sb3JMaW5lc1tdID0gJG9TaXplLT5nZXRMaW5lTm8oKTsKCQl9CgoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoJGFFeHBlY3RlZENvbG9yTGluZXMsICRhQWN0dWFsQ29sb3JMaW5lcyk7CgkJJHRoaXMtPmFzc2VydEVxdWFscygkYVVybEV4cGVjdGVkLCAkYVVybEFjdHVhbCk7CgkJJHRoaXMtPmFzc2VydEVxdWFscygkYUV4cGVjdGVkLCAkYUFjdHVhbCk7Cgl9CgoJLyoqCgkgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCgkgKiBDcmVkaXQ6IFRoaXMgdGVzdCBieSBAc2FiYmVyd29ybSAoZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc2FiYmVyd29ybS9QSFAtQ1NTLVBhcnNlci9wdWxsLzEwNSNpc3N1ZWNvbW1lbnQtMjI5NjQzOTEwICkKCSAqLwoJZnVuY3Rpb24gdGVzdFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbkxpbmVObygpIHsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoIlxudGVzdDogMTsiLCBTZXR0aW5nczo6Y3JlYXRlKCktPmJlU3RyaWN0KCkpOwoJCXRyeSB7CgkJCSRvUGFyc2VyLT5wYXJzZSgpOwoJCX0gY2F0Y2ggKFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbiAkZSkgewoJCQkkdGhpcy0+YXNzZXJ0U2FtZSgyLCAkZS0+Z2V0TGluZU5vKCkpOwoJCQl0aHJvdyAkZTsKCQl9Cgl9CgoJLyoqCgkqIEBleHBlY3RlZEV4Y2VwdGlvbiBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgoJKi8KCWZ1bmN0aW9uIHRlc3RJZUhhY2tzU3RyaWN0UGFyc2luZygpIHsKCQkvLyBXZSBjYW4ndCBzdHJpY3RseSBwYXJzZSBJRSBoYWNrcy4KCQkkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnaWUtaGFja3MnLCBTZXR0aW5nczo6Y3JlYXRlKCktPmJlU3RyaWN0KCkpOwoJfQoKCWZ1bmN0aW9uIHRlc3RJZUhhY2tzUGFyc2luZygpIHsKCQkkb0RvYyA9ICR0aGlzLT5wYXJzZWRTdHJ1Y3R1cmVGb3JGaWxlKCdpZS1oYWNrcycsIFNldHRpbmdzOjpjcmVhdGUoKS0+d2l0aExlbmllbnRQYXJzaW5nKHRydWUpKTsKCQkkc0V4cGVjdGVkID0gJ3Age3BhZGRpbmctcmlnaHQ6IC43NXJlbSBcOTtiYWNrZ3JvdW5kLWltYWdlOiBub25lIFw5O2NvbG9yOiByZWQgXDlcMDtiYWNrZ3JvdW5kLWNvbG9yOiByZWQgXDlcMDtiYWNrZ3JvdW5kLWNvbG9yOiByZWQgXDlcMCAhaW1wb3J0YW50O2NvbnRlbnQ6ICJyZWQgCVwwIjtjb250ZW50OiAicmVk4Kq8Ijt9JzsKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9CgoJLyoqCgkgKiBAZGVwZW5kcyB0ZXN0RmlsZXMKCSAqLwoJZnVuY3Rpb24gdGVzdENvbW1lbnRFeHRyYWN0aW5nKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ2NvbW1lbnRzJyk7CgkJJGFOb2RlcyA9ICRvRG9jLT5nZXRDb250ZW50cygpOwoKCQkvLyBJbXBvcnQgcHJvcGVydHkuCgkJJGltcG9ydENvbW1lbnRzID0gJGFOb2Rlc1swXS0+Z2V0Q29tbWVudHMoKTsKCQkkdGhpcy0+YXNzZXJ0Q291bnQoMSwgJGltcG9ydENvbW1lbnRzKTsKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCIqXG4gKiBDb21tZW50cyBIZWxsLlxuICIsICRpbXBvcnRDb21tZW50c1swXS0+Z2V0Q29tbWVudCgpKTsKCgkJLy8gRGVjbGFyYXRpb24gYmxvY2suCgkJJGZvb0JhckJsb2NrID0gJGFOb2Rlc1sxXTsKCQkkZm9vQmFyQmxvY2tDb21tZW50cyA9ICRmb29CYXJCbG9jay0+Z2V0Q29tbWVudHMoKTsKCQkvLyBUT0RPIFN1cHBvcnQgY29tbWVudHMgaW4gc2VsZWN0b3JzLgoJCS8vICR0aGlzLT5hc3NlcnRDb3VudCgyLCAkZm9vQmFyQmxvY2tDb21tZW50cyk7CgkJLy8gJHRoaXMtPmFzc2VydEVxdWFscygiKiBOdW1iZXIgNCAqIiwgJGZvb0JhckJsb2NrQ29tbWVudHNbMF0tPmdldENvbW1lbnQoKSk7CgkJLy8gJHRoaXMtPmFzc2VydEVxdWFscygiKiBOdW1iZXIgNSAqIiwgJGZvb0JhckJsb2NrQ29tbWVudHNbMV0tPmdldENvbW1lbnQoKSk7CgoJCS8vIERlY2xhcmF0aW9uIHJ1bGVzLgoJCSRmb29CYXJSdWxlcyA9ICRmb29CYXJCbG9jay0+Z2V0UnVsZXMoKTsKCQkkZm9vQmFyUnVsZSA9ICRmb29CYXJSdWxlc1swXTsKCQkkZm9vQmFyUnVsZUNvbW1lbnRzID0gJGZvb0JhclJ1bGUtPmdldENvbW1lbnRzKCk7CgkJJHRoaXMtPmFzc2VydENvdW50KDEsICRmb29CYXJSdWxlQ29tbWVudHMpOwoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoIiBOdW1iZXIgNiAiLCAkZm9vQmFyUnVsZUNvbW1lbnRzWzBdLT5nZXRDb21tZW50KCkpOwoKCQkvLyBNZWRpYSBwcm9wZXJ0eS4KCQkkbWVkaWFDb21tZW50cyA9ICRhTm9kZXNbMl0tPmdldENvbW1lbnRzKCk7CgkJJHRoaXMtPmFzc2VydENvdW50KDAsICRtZWRpYUNvbW1lbnRzKTsKCgkJLy8gTWVkaWEgY2hpbGRyZW4uCgkJJG1lZGlhUnVsZXMgPSAkYU5vZGVzWzJdLT5nZXRDb250ZW50cygpOwoJCSRmb29CYXJDb21tZW50cyA9ICRtZWRpYVJ1bGVzWzBdLT5nZXRDb21tZW50cygpOwoJCSR0aGlzLT5hc3NlcnRDb3VudCgxLCAkZm9vQmFyQ29tbWVudHMpOwoJCSR0aGlzLT5hc3NlcnRFcXVhbHMoIiogTnVtYmVyIDEwICoiLCAkZm9vQmFyQ29tbWVudHNbMF0tPmdldENvbW1lbnQoKSk7CgoJCS8vIE1lZGlhIC0+IGRlY2xhcmF0aW9uIC0+IHJ1bGUuCgkJJGZvb0JhclJ1bGVzID0gJG1lZGlhUnVsZXNbMF0tPmdldFJ1bGVzKCk7CgkJJGZvb0JhckNoaWxkQ29tbWVudHMgPSAkZm9vQmFyUnVsZXNbMF0tPmdldENvbW1lbnRzKCk7CgkJJHRoaXMtPmFzc2VydENvdW50KDEsICRmb29CYXJDaGlsZENvbW1lbnRzKTsKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCIqIE51bWJlciAxMGIgKiIsICRmb29CYXJDaGlsZENvbW1lbnRzWzBdLT5nZXRDb21tZW50KCkpOwoJfQoKCWZ1bmN0aW9uIHRlc3RGbGF0Q29tbWVudEV4dHJhY3RpbmcoKSB7CgkJJHBhcnNlciA9IG5ldyBQYXJzZXIoJ2RpdiB7LypGaW5kIE1lISovbGVmdDoxMHB4OyB0ZXh0LWFsaWduOmxlZnQ7fScpOwoJCSRkb2MgPSAkcGFyc2VyLT5wYXJzZSgpOwoJCSRjb250ZW50cyA9ICRkb2MtPmdldENvbnRlbnRzKCk7CgkJJGRpdlJ1bGVzID0gJGNvbnRlbnRzWzBdLT5nZXRSdWxlcygpOwoJCSRjb21tZW50cyA9ICRkaXZSdWxlc1swXS0+Z2V0Q29tbWVudHMoKTsKCQkkdGhpcy0+YXNzZXJ0Q291bnQoMSwgJGNvbW1lbnRzKTsKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCJGaW5kIE1lISIsICRjb21tZW50c1swXS0+Z2V0Q29tbWVudCgpKTsKCX0KCglmdW5jdGlvbiB0ZXN0VG9wTGV2ZWxDb21tZW50RXh0cmFjdGluZygpIHsKCQkkcGFyc2VyID0gbmV3IFBhcnNlcignLypGaW5kIE1lISovZGl2IHtsZWZ0OjEwcHg7IHRleHQtYWxpZ246bGVmdDt9Jyk7CgkJJGRvYyA9ICRwYXJzZXItPnBhcnNlKCk7CgkJJGNvbnRlbnRzID0gJGRvYy0+Z2V0Q29udGVudHMoKTsKCQkkY29tbWVudHMgPSAkY29udGVudHNbMF0tPmdldENvbW1lbnRzKCk7CgkJJHRoaXMtPmFzc2VydENvdW50KDEsICRjb21tZW50cyk7CgkJJHRoaXMtPmFzc2VydEVxdWFscygiRmluZCBNZSEiLCAkY29tbWVudHNbMF0tPmdldENvbW1lbnQoKSk7Cgl9CgoJLyoqCgkqIEBleHBlY3RlZEV4Y2VwdGlvbiBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgoJKi8KCWZ1bmN0aW9uIHRlc3RNaWNyb3NvZnRGaWx0ZXJTdHJpY3RQYXJzaW5nKCkgewoJCSRvRG9jID0gJHRoaXMtPnBhcnNlZFN0cnVjdHVyZUZvckZpbGUoJ21zLWZpbHRlcicsIFNldHRpbmdzOjpjcmVhdGUoKS0+YmVTdHJpY3QoKSk7Cgl9CgoJZnVuY3Rpb24gdGVzdE1pY3Jvc29mdEZpbHRlclBhcnNpbmcoKSB7CgkJJG9Eb2MgPSAkdGhpcy0+cGFyc2VkU3RydWN0dXJlRm9yRmlsZSgnbXMtZmlsdGVyJyk7CgkJJHNFeHBlY3RlZCA9ICIudGVzdCB7ZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoc3RhcnRDb2xvcnN0cj1cIiM4MDAwMDAwMFwiLGVuZENvbG9yc3RyPVwiIzAwMDAwMDAwXCIsR3JhZGllbnRUeXBlPTEpO30iOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRzRXhwZWN0ZWQsICRvRG9jLT5yZW5kZXIoKSk7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/RuleSet/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/RuleSet/DeclarationBlockTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNlcjsKdXNlIFNhYmJlcndvcm1cQ1NTXFJ1bGVcUnVsZTsKdXNlIFNhYmJlcndvcm1cQ1NTXFZhbHVlXFNpemU7CgpjbGFzcyBEZWNsYXJhdGlvbkJsb2NrVGVzdCBleHRlbmRzIFxQSFBVbml0X0ZyYW1ld29ya19UZXN0Q2FzZSB7CgoJLyoqCgkgKiBAZGF0YVByb3ZpZGVyIGV4cGFuZEJvcmRlclNob3J0aGFuZFByb3ZpZGVyCgkgKiAqLwoJcHVibGljIGZ1bmN0aW9uIHRlc3RFeHBhbmRCb3JkZXJTaG9ydGhhbmQoJHNDc3MsICRzRXhwZWN0ZWQpIHsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoJHNDc3MpOwoJCSRvRG9jID0gJG9QYXJzZXItPnBhcnNlKCk7CgkJZm9yZWFjaCAoJG9Eb2MtPmdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCkgYXMgJG9EZWNsYXJhdGlvbikgewoJCQkkb0RlY2xhcmF0aW9uLT5leHBhbmRCb3JkZXJTaG9ydGhhbmQoKTsKCQl9CgkJJHRoaXMtPmFzc2VydFNhbWUodHJpbSgoc3RyaW5nKSAkb0RvYyksICRzRXhwZWN0ZWQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBleHBhbmRCb3JkZXJTaG9ydGhhbmRQcm92aWRlcigpIHsKCQlyZXR1cm4gYXJyYXkoCgkJCWFycmF5KCdib2R5eyBib3JkZXI6IDJweCBzb2xpZCAjMDAwIH0nLCAnYm9keSB7Ym9yZGVyLXdpZHRoOiAycHg7Ym9yZGVyLXN0eWxlOiBzb2xpZDtib3JkZXItY29sb3I6ICMwMDA7fScpLAoJCQlhcnJheSgnYm9keXsgYm9yZGVyOiBub25lIH0nLCAnYm9keSB7Ym9yZGVyLXN0eWxlOiBub25lO30nKSwKCQkJYXJyYXkoJ2JvZHl7IGJvcmRlcjogMnB4IH0nLCAnYm9keSB7Ym9yZGVyLXdpZHRoOiAycHg7fScpLAoJCQlhcnJheSgnYm9keXsgYm9yZGVyOiAjZjAwIH0nLCAnYm9keSB7Ym9yZGVyLWNvbG9yOiAjZjAwO30nKSwKCQkJYXJyYXkoJ2JvZHl7IGJvcmRlcjogMWVtIHNvbGlkIH0nLCAnYm9keSB7Ym9yZGVyLXdpZHRoOiAxZW07Ym9yZGVyLXN0eWxlOiBzb2xpZDt9JyksCgkJCWFycmF5KCdib2R5eyBtYXJnaW46IDFlbTsgfScsICdib2R5IHttYXJnaW46IDFlbTt9JykKCQkpOwoJfQoKCS8qKgoJICogQGRhdGFQcm92aWRlciBleHBhbmRGb250U2hvcnRoYW5kUHJvdmlkZXIKCSAqICovCglwdWJsaWMgZnVuY3Rpb24gdGVzdEV4cGFuZEZvbnRTaG9ydGhhbmQoJHNDc3MsICRzRXhwZWN0ZWQpIHsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoJHNDc3MpOwoJCSRvRG9jID0gJG9QYXJzZXItPnBhcnNlKCk7CgkJZm9yZWFjaCAoJG9Eb2MtPmdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCkgYXMgJG9EZWNsYXJhdGlvbikgewoJCQkkb0RlY2xhcmF0aW9uLT5leHBhbmRGb250U2hvcnRoYW5kKCk7CgkJfQoJCSR0aGlzLT5hc3NlcnRTYW1lKHRyaW0oKHN0cmluZykgJG9Eb2MpLCAkc0V4cGVjdGVkKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZXhwYW5kRm9udFNob3J0aGFuZFByb3ZpZGVyKCkgewoJCXJldHVybiBhcnJheSgKCQkJYXJyYXkoCgkJCQknYm9keXsgbWFyZ2luOiAxZW07IH0nLAoJCQkJJ2JvZHkge21hcmdpbjogMWVtO30nCgkJCSksCgkJCWFycmF5KAoJCQkJJ2JvZHkge2ZvbnQ6IDEycHggc2VyaWY7fScsCgkJCQknYm9keSB7Zm9udC1zdHlsZTogbm9ybWFsO2ZvbnQtdmFyaWFudDogbm9ybWFsO2ZvbnQtd2VpZ2h0OiBub3JtYWw7Zm9udC1zaXplOiAxMnB4O2xpbmUtaGVpZ2h0OiBub3JtYWw7Zm9udC1mYW1pbHk6IHNlcmlmO30nCgkJCSksCgkJCWFycmF5KAoJCQkJJ2JvZHkge2ZvbnQ6IGl0YWxpYyAxMnB4IHNlcmlmO30nLAoJCQkJJ2JvZHkge2ZvbnQtc3R5bGU6IGl0YWxpYztmb250LXZhcmlhbnQ6IG5vcm1hbDtmb250LXdlaWdodDogbm9ybWFsO2ZvbnQtc2l6ZTogMTJweDtsaW5lLWhlaWdodDogbm9ybWFsO2ZvbnQtZmFtaWx5OiBzZXJpZjt9JwoJCQkpLAoJCQlhcnJheSgKCQkJCSdib2R5IHtmb250OiBpdGFsaWMgYm9sZCAxMnB4IHNlcmlmO30nLAoJCQkJJ2JvZHkge2ZvbnQtc3R5bGU6IGl0YWxpYztmb250LXZhcmlhbnQ6IG5vcm1hbDtmb250LXdlaWdodDogYm9sZDtmb250LXNpemU6IDEycHg7bGluZS1oZWlnaHQ6IG5vcm1hbDtmb250LWZhbWlseTogc2VyaWY7fScKCQkJKSwKCQkJYXJyYXkoCgkJCQknYm9keSB7Zm9udDogaXRhbGljIGJvbGQgMTJweC8xLjYgc2VyaWY7fScsCgkJCQknYm9keSB7Zm9udC1zdHlsZTogaXRhbGljO2ZvbnQtdmFyaWFudDogbm9ybWFsO2ZvbnQtd2VpZ2h0OiBib2xkO2ZvbnQtc2l6ZTogMTJweDtsaW5lLWhlaWdodDogMS42O2ZvbnQtZmFtaWx5OiBzZXJpZjt9JwoJCQkpLAoJCQlhcnJheSgKCQkJCSdib2R5IHtmb250OiBpdGFsaWMgc21hbGwtY2FwcyBib2xkIDEycHgvMS42IHNlcmlmO30nLAoJCQkJJ2JvZHkge2ZvbnQtc3R5bGU6IGl0YWxpYztmb250LXZhcmlhbnQ6IHNtYWxsLWNhcHM7Zm9udC13ZWlnaHQ6IGJvbGQ7Zm9udC1zaXplOiAxMnB4O2xpbmUtaGVpZ2h0OiAxLjY7Zm9udC1mYW1pbHk6IHNlcmlmO30nCgkJCSksCgkJKTsKCX0KCgkvKioKCSAqIEBkYXRhUHJvdmlkZXIgZXhwYW5kQmFja2dyb3VuZFNob3J0aGFuZFByb3ZpZGVyCgkgKiAqLwoJcHVibGljIGZ1bmN0aW9uIHRlc3RFeHBhbmRCYWNrZ3JvdW5kU2hvcnRoYW5kKCRzQ3NzLCAkc0V4cGVjdGVkKSB7CgkJJG9QYXJzZXIgPSBuZXcgUGFyc2VyKCRzQ3NzKTsKCQkkb0RvYyA9ICRvUGFyc2VyLT5wYXJzZSgpOwoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxEZWNsYXJhdGlvbkJsb2NrcygpIGFzICRvRGVjbGFyYXRpb24pIHsKCQkJJG9EZWNsYXJhdGlvbi0+ZXhwYW5kQmFja2dyb3VuZFNob3J0aGFuZCgpOwoJCX0KCQkkdGhpcy0+YXNzZXJ0U2FtZSh0cmltKChzdHJpbmcpICRvRG9jKSwgJHNFeHBlY3RlZCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGV4cGFuZEJhY2tncm91bmRTaG9ydGhhbmRQcm92aWRlcigpIHsKCQlyZXR1cm4gYXJyYXkoCgkJCWFycmF5KCdib2R5IHtib3JkZXI6IDFweDt9JywgJ2JvZHkge2JvcmRlcjogMXB4O30nKSwKCQkJYXJyYXkoJ2JvZHkge2JhY2tncm91bmQ6ICNmMDA7fScsICdib2R5IHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO2JhY2tncm91bmQtaW1hZ2U6IG5vbmU7YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDtiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IHNjcm9sbDtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTt9JyksCgkJCWFycmF5KCdib2R5IHtiYWNrZ3JvdW5kOiAjZjAwIHVybCgiZm9vYmFyLnBuZyIpO30nLCAnYm9keSB7YmFja2dyb3VuZC1jb2xvcjogI2YwMDtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZvb2Jhci5wbmciKTtiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O2JhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsO2JhY2tncm91bmQtcG9zaXRpb246IDAlIDAlO30nKSwKCQkJYXJyYXkoJ2JvZHkge2JhY2tncm91bmQ6ICNmMDAgdXJsKCJmb29iYXIucG5nIikgbm8tcmVwZWF0O30nLCAnYm9keSB7YmFja2dyb3VuZC1jb2xvcjogI2YwMDtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZvb2Jhci5wbmciKTtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O2JhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsO2JhY2tncm91bmQtcG9zaXRpb246IDAlIDAlO30nKSwKCQkJYXJyYXkoJ2JvZHkge2JhY2tncm91bmQ6ICNmMDAgdXJsKCJmb29iYXIucG5nIikgbm8tcmVwZWF0IGNlbnRlcjt9JywgJ2JvZHkge2JhY2tncm91bmQtY29sb3I6ICNmMDA7YmFja2dyb3VuZC1pbWFnZTogdXJsKCJmb29iYXIucG5nIik7YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IHNjcm9sbDtiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO30nKSwKCQkJYXJyYXkoJ2JvZHkge2JhY2tncm91bmQ6ICNmMDAgdXJsKCJmb29iYXIucG5nIikgbm8tcmVwZWF0IHRvcCBsZWZ0O30nLCAnYm9keSB7YmFja2dyb3VuZC1jb2xvcjogI2YwMDtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZvb2Jhci5wbmciKTtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O2JhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsO2JhY2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0O30nKSwKCQkpOwoJfQoKCS8qKgoJICogQGRhdGFQcm92aWRlciBleHBhbmREaW1lbnNpb25zU2hvcnRoYW5kUHJvdmlkZXIKCSAqICovCglwdWJsaWMgZnVuY3Rpb24gdGVzdEV4cGFuZERpbWVuc2lvbnNTaG9ydGhhbmQoJHNDc3MsICRzRXhwZWN0ZWQpIHsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoJHNDc3MpOwoJCSRvRG9jID0gJG9QYXJzZXItPnBhcnNlKCk7CgkJZm9yZWFjaCAoJG9Eb2MtPmdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCkgYXMgJG9EZWNsYXJhdGlvbikgewoJCQkkb0RlY2xhcmF0aW9uLT5leHBhbmREaW1lbnNpb25zU2hvcnRoYW5kKCk7CgkJfQoJCSR0aGlzLT5hc3NlcnRTYW1lKHRyaW0oKHN0cmluZykgJG9Eb2MpLCAkc0V4cGVjdGVkKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZXhwYW5kRGltZW5zaW9uc1Nob3J0aGFuZFByb3ZpZGVyKCkgewoJCXJldHVybiBhcnJheSgKCQkJYXJyYXkoJ2JvZHkge2JvcmRlcjogMXB4O30nLCAnYm9keSB7Ym9yZGVyOiAxcHg7fScpLAoJCQlhcnJheSgnYm9keSB7bWFyZ2luLXRvcDogMXB4O30nLCAnYm9keSB7bWFyZ2luLXRvcDogMXB4O30nKSwKCQkJYXJyYXkoJ2JvZHkge21hcmdpbjogMWVtO30nLCAnYm9keSB7bWFyZ2luLXRvcDogMWVtO21hcmdpbi1yaWdodDogMWVtO21hcmdpbi1ib3R0b206IDFlbTttYXJnaW4tbGVmdDogMWVtO30nKSwKCQkJYXJyYXkoJ2JvZHkge21hcmdpbjogMWVtIDJlbTt9JywgJ2JvZHkge21hcmdpbi10b3A6IDFlbTttYXJnaW4tcmlnaHQ6IDJlbTttYXJnaW4tYm90dG9tOiAxZW07bWFyZ2luLWxlZnQ6IDJlbTt9JyksCgkJCWFycmF5KCdib2R5IHttYXJnaW46IDFlbSAyZW0gM2VtO30nLCAnYm9keSB7bWFyZ2luLXRvcDogMWVtO21hcmdpbi1yaWdodDogMmVtO21hcmdpbi1ib3R0b206IDNlbTttYXJnaW4tbGVmdDogMmVtO30nKSwKCQkpOwoJfQoKCS8qKgoJICogQGRhdGFQcm92aWRlciBjcmVhdGVCb3JkZXJTaG9ydGhhbmRQcm92aWRlcgoJICogKi8KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0Q3JlYXRlQm9yZGVyU2hvcnRoYW5kKCRzQ3NzLCAkc0V4cGVjdGVkKSB7CgkJJG9QYXJzZXIgPSBuZXcgUGFyc2VyKCRzQ3NzKTsKCQkkb0RvYyA9ICRvUGFyc2VyLT5wYXJzZSgpOwoJCWZvcmVhY2ggKCRvRG9jLT5nZXRBbGxEZWNsYXJhdGlvbkJsb2NrcygpIGFzICRvRGVjbGFyYXRpb24pIHsKCQkJJG9EZWNsYXJhdGlvbi0+Y3JlYXRlQm9yZGVyU2hvcnRoYW5kKCk7CgkJfQoJCSR0aGlzLT5hc3NlcnRTYW1lKHRyaW0oKHN0cmluZykgJG9Eb2MpLCAkc0V4cGVjdGVkKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY3JlYXRlQm9yZGVyU2hvcnRoYW5kUHJvdmlkZXIoKSB7CgkJcmV0dXJuIGFycmF5KAoJCQlhcnJheSgnYm9keSB7Ym9yZGVyLXdpZHRoOiAycHg7Ym9yZGVyLXN0eWxlOiBzb2xpZDtib3JkZXItY29sb3I6ICMwMDA7fScsICdib2R5IHtib3JkZXI6IDJweCBzb2xpZCAjMDAwO30nKSwKCQkJYXJyYXkoJ2JvZHkge2JvcmRlci1zdHlsZTogbm9uZTt9JywgJ2JvZHkge2JvcmRlcjogbm9uZTt9JyksCgkJCWFycmF5KCdib2R5IHtib3JkZXItd2lkdGg6IDFlbTtib3JkZXItc3R5bGU6IHNvbGlkO30nLCAnYm9keSB7Ym9yZGVyOiAxZW0gc29saWQ7fScpLAoJCQlhcnJheSgnYm9keSB7bWFyZ2luOiAxZW07fScsICdib2R5IHttYXJnaW46IDFlbTt9JykKCQkpOwoJfQoKCS8qKgoJICogQGRhdGFQcm92aWRlciBjcmVhdGVGb250U2hvcnRoYW5kUHJvdmlkZXIKCSAqICovCglwdWJsaWMgZnVuY3Rpb24gdGVzdENyZWF0ZUZvbnRTaG9ydGhhbmQoJHNDc3MsICRzRXhwZWN0ZWQpIHsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoJHNDc3MpOwoJCSRvRG9jID0gJG9QYXJzZXItPnBhcnNlKCk7CgkJZm9yZWFjaCAoJG9Eb2MtPmdldEFsbERlY2xhcmF0aW9uQmxvY2tzKCkgYXMgJG9EZWNsYXJhdGlvbikgewoJCQkkb0RlY2xhcmF0aW9uLT5jcmVhdGVGb250U2hvcnRoYW5kKCk7CgkJfQoJCSR0aGlzLT5hc3NlcnRTYW1lKHRyaW0oKHN0cmluZykgJG9Eb2MpLCAkc0V4cGVjdGVkKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY3JlYXRlRm9udFNob3J0aGFuZFByb3ZpZGVyKCkgewoJCXJldHVybiBhcnJheSgKCQkJYXJyYXkoJ2JvZHkge2ZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IHNlcmlmfScsICdib2R5IHtmb250OiAxMnB4IHNlcmlmO30nKSwKCQkJYXJyYXkoJ2JvZHkge2ZvbnQtc2l6ZTogMTJweDsgZm9udC1mYW1pbHk6IHNlcmlmOyBmb250LXN0eWxlOiBpdGFsaWM7fScsICdib2R5IHtmb250OiBpdGFsaWMgMTJweCBzZXJpZjt9JyksCgkJCWFycmF5KCdib2R5IHtmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBzZXJpZjsgZm9udC1zdHlsZTogaXRhbGljOyBmb250LXdlaWdodDogYm9sZDt9JywgJ2JvZHkge2ZvbnQ6IGl0YWxpYyBib2xkIDEycHggc2VyaWY7fScpLAoJCQlhcnJheSgnYm9keSB7Zm9udC1zaXplOiAxMnB4OyBmb250LWZhbWlseTogc2VyaWY7IGZvbnQtc3R5bGU6IGl0YWxpYzsgZm9udC13ZWlnaHQ6IGJvbGQ7IGxpbmUtaGVpZ2h0OiAxLjY7fScsICdib2R5IHtmb250OiBpdGFsaWMgYm9sZCAxMnB4LzEuNiBzZXJpZjt9JyksCgkJCWFycmF5KCdib2R5IHtmb250LXNpemU6IDEycHg7IGZvbnQtZmFtaWx5OiBzZXJpZjsgZm9udC1zdHlsZTogaXRhbGljOyBmb250LXdlaWdodDogYm9sZDsgbGluZS1oZWlnaHQ6IDEuNjsgZm9udC12YXJpYW50OiBzbWFsbC1jYXBzO30nLCAnYm9keSB7Zm9udDogaXRhbGljIHNtYWxsLWNhcHMgYm9sZCAxMnB4LzEuNiBzZXJpZjt9JyksCgkJCWFycmF5KCdib2R5IHttYXJnaW46IDFlbTt9JywgJ2JvZHkge21hcmdpbjogMWVtO30nKQoJCSk7Cgl9CgoJLyoqCgkgKiBAZGF0YVByb3ZpZGVyIGNyZWF0ZURpbWVuc2lvbnNTaG9ydGhhbmRQcm92aWRlcgoJICogKi8KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0Q3JlYXRlRGltZW5zaW9uc1Nob3J0aGFuZCgkc0NzcywgJHNFeHBlY3RlZCkgewoJCSRvUGFyc2VyID0gbmV3IFBhcnNlcigkc0Nzcyk7CgkJJG9Eb2MgPSAkb1BhcnNlci0+cGFyc2UoKTsKCQlmb3JlYWNoICgkb0RvYy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKSBhcyAkb0RlY2xhcmF0aW9uKSB7CgkJCSRvRGVjbGFyYXRpb24tPmNyZWF0ZURpbWVuc2lvbnNTaG9ydGhhbmQoKTsKCQl9CgkJJHRoaXMtPmFzc2VydFNhbWUodHJpbSgoc3RyaW5nKSAkb0RvYyksICRzRXhwZWN0ZWQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjcmVhdGVEaW1lbnNpb25zU2hvcnRoYW5kUHJvdmlkZXIoKSB7CgkJcmV0dXJuIGFycmF5KAoJCQlhcnJheSgnYm9keSB7Ym9yZGVyOiAxcHg7fScsICdib2R5IHtib3JkZXI6IDFweDt9JyksCgkJCWFycmF5KCdib2R5IHttYXJnaW4tdG9wOiAxcHg7fScsICdib2R5IHttYXJnaW4tdG9wOiAxcHg7fScpLAoJCQlhcnJheSgnYm9keSB7bWFyZ2luLXRvcDogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBtYXJnaW4tbGVmdDogMWVtO30nLCAnYm9keSB7bWFyZ2luOiAxZW07fScpLAoJCQlhcnJheSgnYm9keSB7bWFyZ2luLXRvcDogMWVtOyBtYXJnaW4tcmlnaHQ6IDJlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBtYXJnaW4tbGVmdDogMmVtO30nLCAnYm9keSB7bWFyZ2luOiAxZW0gMmVtO30nKSwKCQkJYXJyYXkoJ2JvZHkge21hcmdpbi10b3A6IDFlbTsgbWFyZ2luLXJpZ2h0OiAyZW07IG1hcmdpbi1ib3R0b206IDNlbTsgbWFyZ2luLWxlZnQ6IDJlbTt9JywgJ2JvZHkge21hcmdpbjogMWVtIDJlbSAzZW07fScpLAoJCSk7Cgl9CgoJLyoqCgkgKiBAZGF0YVByb3ZpZGVyIGNyZWF0ZUJhY2tncm91bmRTaG9ydGhhbmRQcm92aWRlcgoJICogKi8KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0Q3JlYXRlQmFja2dyb3VuZFNob3J0aGFuZCgkc0NzcywgJHNFeHBlY3RlZCkgewoJCSRvUGFyc2VyID0gbmV3IFBhcnNlcigkc0Nzcyk7CgkJJG9Eb2MgPSAkb1BhcnNlci0+cGFyc2UoKTsKCQlmb3JlYWNoICgkb0RvYy0+Z2V0QWxsRGVjbGFyYXRpb25CbG9ja3MoKSBhcyAkb0RlY2xhcmF0aW9uKSB7CgkJCSRvRGVjbGFyYXRpb24tPmNyZWF0ZUJhY2tncm91bmRTaG9ydGhhbmQoKTsKCQl9CgkJJHRoaXMtPmFzc2VydFNhbWUodHJpbSgoc3RyaW5nKSAkb0RvYyksICRzRXhwZWN0ZWQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjcmVhdGVCYWNrZ3JvdW5kU2hvcnRoYW5kUHJvdmlkZXIoKSB7CgkJcmV0dXJuIGFycmF5KAoJCQlhcnJheSgnYm9keSB7Ym9yZGVyOiAxcHg7fScsICdib2R5IHtib3JkZXI6IDFweDt9JyksCgkJCWFycmF5KCdib2R5IHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO30nLCAnYm9keSB7YmFja2dyb3VuZDogI2YwMDt9JyksCgkJCWFycmF5KCdib2R5IHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO2JhY2tncm91bmQtaW1hZ2U6IHVybChmb29iYXIucG5nKTt9JywgJ2JvZHkge2JhY2tncm91bmQ6ICNmMDAgdXJsKCJmb29iYXIucG5nIik7fScpLAoJCQlhcnJheSgnYm9keSB7YmFja2dyb3VuZC1jb2xvcjogI2YwMDtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoZm9vYmFyLnBuZyk7YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDt9JywgJ2JvZHkge2JhY2tncm91bmQ6ICNmMDAgdXJsKCJmb29iYXIucG5nIikgbm8tcmVwZWF0O30nKSwKCQkJYXJyYXkoJ2JvZHkge2JhY2tncm91bmQtY29sb3I6ICNmMDA7YmFja2dyb3VuZC1pbWFnZTogdXJsKGZvb2Jhci5wbmcpO2JhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7fScsICdib2R5IHtiYWNrZ3JvdW5kOiAjZjAwIHVybCgiZm9vYmFyLnBuZyIpIG5vLXJlcGVhdDt9JyksCgkJCWFycmF5KCdib2R5IHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO2JhY2tncm91bmQtaW1hZ2U6IHVybChmb29iYXIucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjt9JywgJ2JvZHkge2JhY2tncm91bmQ6ICNmMDAgdXJsKCJmb29iYXIucG5nIikgbm8tcmVwZWF0IGNlbnRlcjt9JyksCgkJCWFycmF5KCdib2R5IHtiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO2JhY2tncm91bmQtaW1hZ2U6IHVybChmb29iYXIucG5nKTtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0O30nLCAnYm9keSB7YmFja2dyb3VuZDogI2YwMCB1cmwoImZvb2Jhci5wbmciKSBuby1yZXBlYXQgdG9wIGxlZnQ7fScpLAoJCSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RPdmVycmlkZVJ1bGVzKCkgewoJCSRzQ3NzID0gJy53cmFwcGVyIHsgbGVmdDogMTBweDsgdGV4dC1hbGlnbjogbGVmdDsgfSc7CgkJJG9QYXJzZXIgPSBuZXcgUGFyc2VyKCRzQ3NzKTsKCQkkb0RvYyA9ICRvUGFyc2VyLT5wYXJzZSgpOwoJCSRvUnVsZSA9IG5ldyBSdWxlKCdyaWdodCcpOwoJCSRvUnVsZS0+c2V0VmFsdWUoJy0xMHB4Jyk7CgkJJGFDb250ZW50cyA9ICRvRG9jLT5nZXRDb250ZW50cygpOwoJCSRvV3JhcHBlciA9ICRhQ29udGVudHNbMF07CgoJCSR0aGlzLT5hc3NlcnRDb3VudCgyLCAkb1dyYXBwZXItPmdldFJ1bGVzKCkpOwoJCSRhQ29udGVudHNbMF0tPnNldFJ1bGVzKGFycmF5KCRvUnVsZSkpOwoKCQkkYVJ1bGVzID0gJG9XcmFwcGVyLT5nZXRSdWxlcygpOwoJCSR0aGlzLT5hc3NlcnRDb3VudCgxLCAkYVJ1bGVzKTsKCQkkdGhpcy0+YXNzZXJ0RXF1YWxzKCdyaWdodCcsICRhUnVsZXNbMF0tPmdldFJ1bGUoKSk7CgkJJHRoaXMtPmFzc2VydEVxdWFscygnLTEwcHgnLCAkYVJ1bGVzWzBdLT5nZXRWYWx1ZSgpKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHRlc3RSdWxlSW5zZXJ0aW9uKCkgewoJCSRzQ3NzID0gJy53cmFwcGVyIHsgbGVmdDogMTBweDsgdGV4dC1hbGlnbjogbGVmdDsgfSc7CgkJJG9QYXJzZXIgPSBuZXcgUGFyc2VyKCRzQ3NzKTsKCQkkb0RvYyA9ICRvUGFyc2VyLT5wYXJzZSgpOwoJCSRhQ29udGVudHMgPSAkb0RvYy0+Z2V0Q29udGVudHMoKTsKCQkkb1dyYXBwZXIgPSAkYUNvbnRlbnRzWzBdOwoKCQkkb0ZpcnN0ID0gJG9XcmFwcGVyLT5nZXRSdWxlcygnbGVmdCcpOwoJCSR0aGlzLT5hc3NlcnRDb3VudCgxLCAkb0ZpcnN0KTsKCQkkb0ZpcnN0ID0gJG9GaXJzdFswXTsKCgkJJG9TZWNvbmQgPSAkb1dyYXBwZXItPmdldFJ1bGVzKCd0ZXh0LScpOwoJCSR0aGlzLT5hc3NlcnRDb3VudCgxLCAkb1NlY29uZCk7CgkJJG9TZWNvbmQgPSAkb1NlY29uZFswXTsKCgkJJG9CZWZvcmUgPSBuZXcgUnVsZSgnbGVmdCcpOwoJCSRvQmVmb3JlLT5zZXRWYWx1ZShuZXcgU2l6ZSgxNiwgJ2VtJykpOwoKCQkkb01pZGRsZSA9IG5ldyBSdWxlKCd0ZXh0LWFsaWduJyk7CgkJJG9NaWRkbGUtPnNldFZhbHVlKG5ldyBTaXplKDEpKTsKCgkJJG9BZnRlciA9IG5ldyBSdWxlKCdib3JkZXItYm90dG9tLXdpZHRoJyk7CgkJJG9BZnRlci0+c2V0VmFsdWUobmV3IFNpemUoMSwgJ3B4JykpOwoKCQkkb1dyYXBwZXItPmFkZFJ1bGUoJG9BZnRlcik7CgkJJG9XcmFwcGVyLT5hZGRSdWxlKCRvQmVmb3JlLCAkb0ZpcnN0KTsKCQkkb1dyYXBwZXItPmFkZFJ1bGUoJG9NaWRkbGUsICRvU2Vjb25kKTsKCgkJJGFSdWxlcyA9ICRvV3JhcHBlci0+Z2V0UnVsZXMoKTsKCgkJJHRoaXMtPmFzc2VydFNhbWUoJG9CZWZvcmUsICRhUnVsZXNbMF0pOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRvRmlyc3QsICRhUnVsZXNbMV0pOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCRvTWlkZGxlLCAkYVJ1bGVzWzJdKTsKCQkkdGhpcy0+YXNzZXJ0U2FtZSgkb1NlY29uZCwgJGFSdWxlc1szXSk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJG9BZnRlciwgJGFSdWxlc1s0XSk7CgoJCSR0aGlzLT5hc3NlcnRTYW1lKCcud3JhcHBlciB7bGVmdDogMTZlbTtsZWZ0OiAxMHB4O3RleHQtYWxpZ246IDE7dGV4dC1hbGlnbjogbGVmdDtib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7fScsICRvRG9jLT5yZW5kZXIoKSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/vendor/sabberworm/php-css-parser/tests/Sabberworm/CSS/RuleSet/LenientParsingTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBTYWJiZXJ3b3JtXENTU1xSdWxlU2V0OwoKdXNlIFNhYmJlcndvcm1cQ1NTXFBhcnNlcjsKdXNlIFNhYmJlcndvcm1cQ1NTXFNldHRpbmdzOwoKY2xhc3MgTGVuaWVudFBhcnNpbmdUZXN0IGV4dGVuZHMgXFBIUFVuaXRfRnJhbWV3b3JrX1Rlc3RDYXNlIHsKCgkvKioKCSogQGV4cGVjdGVkRXhjZXB0aW9uIFNhYmJlcndvcm1cQ1NTXFBhcnNpbmdcVW5leHBlY3RlZFRva2VuRXhjZXB0aW9uCgkqLwoJcHVibGljIGZ1bmN0aW9uIHRlc3RGYXVsdFRvbGVyYW5jZU9mZigpIHsKCQkkc0ZpbGUgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vLi4vZmlsZXMnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICItZmF1bHQtdG9sZXJhbmNlLmNzcyI7CgkJJG9QYXJzZXIgPSBuZXcgUGFyc2VyKGZpbGVfZ2V0X2NvbnRlbnRzKCRzRmlsZSksIFNldHRpbmdzOjpjcmVhdGUoKS0+YmVTdHJpY3QoKSk7CgkJJG9QYXJzZXItPnBhcnNlKCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RGYXVsdFRvbGVyYW5jZU9uKCkgewoJCSRzRmlsZSA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi8uLi9maWxlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gIi1mYXVsdC10b2xlcmFuY2UuY3NzIjsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoZmlsZV9nZXRfY29udGVudHMoJHNGaWxlKSwgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTGVuaWVudFBhcnNpbmcodHJ1ZSkpOwoJCSRvUmVzdWx0ID0gJG9QYXJzZXItPnBhcnNlKCk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJy50ZXN0MSB7fScuIlxuIi4nLnRlc3QyIHtoZWxsbzogMi4yO2hlbGxvOiAyMDAwMDAwMDAwMDAwLjI7fScuIlxuIi4nI3Rlc3Qge30nLiJcbiIuJyN0ZXN0MiB7aGVscDogbm9uZTt9JywgJG9SZXN1bHQtPnJlbmRlcigpKTsKCX0KCQoJLyoqCgkqIEBleHBlY3RlZEV4Y2VwdGlvbiBTYWJiZXJ3b3JtXENTU1xQYXJzaW5nXFVuZXhwZWN0ZWRUb2tlbkV4Y2VwdGlvbgoJKi8KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0RW5kVG9rZW4oKSB7CgkJJHNGaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnLy4uLy4uLy4uL2ZpbGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAiLWVuZC10b2tlbi5jc3MiOwoJCSRvUGFyc2VyID0gbmV3IFBhcnNlcihmaWxlX2dldF9jb250ZW50cygkc0ZpbGUpLCBTZXR0aW5nczo6Y3JlYXRlKCktPmJlU3RyaWN0KCkpOwoJCSRvUGFyc2VyLT5wYXJzZSgpOwoJfQoKCS8qKgoJKiBAZXhwZWN0ZWRFeGNlcHRpb24gU2FiYmVyd29ybVxDU1NcUGFyc2luZ1xVbmV4cGVjdGVkVG9rZW5FeGNlcHRpb24KCSovCglwdWJsaWMgZnVuY3Rpb24gdGVzdEVuZFRva2VuMigpIHsKCQkkc0ZpbGUgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vLi4vZmlsZXMnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICItZW5kLXRva2VuLTIuY3NzIjsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoZmlsZV9nZXRfY29udGVudHMoJHNGaWxlKSwgU2V0dGluZ3M6OmNyZWF0ZSgpLT5iZVN0cmljdCgpKTsKCQkkb1BhcnNlci0+cGFyc2UoKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHRlc3RFbmRUb2tlblBvc2l0aXZlKCkgewoJCSRzRmlsZSA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi8uLi9maWxlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gIi1lbmQtdG9rZW4uY3NzIjsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoZmlsZV9nZXRfY29udGVudHMoJHNGaWxlKSwgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTGVuaWVudFBhcnNpbmcodHJ1ZSkpOwoJCSRvUmVzdWx0ID0gJG9QYXJzZXItPnBhcnNlKCk7CgkJJHRoaXMtPmFzc2VydFNhbWUoIiIsICRvUmVzdWx0LT5yZW5kZXIoKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RFbmRUb2tlbjJQb3NpdGl2ZSgpIHsKCQkkc0ZpbGUgPSBkaXJuYW1lKF9fRklMRV9fKSAuICcvLi4vLi4vLi4vZmlsZXMnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICItZW5kLXRva2VuLTIuY3NzIjsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoZmlsZV9nZXRfY29udGVudHMoJHNGaWxlKSwgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTGVuaWVudFBhcnNpbmcodHJ1ZSkpOwoJCSRvUmVzdWx0ID0gJG9QYXJzZXItPnBhcnNlKCk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJyNob21lIC5iZy1sYXlvdXQge2JhY2tncm91bmQtaW1hZ2U6IHVybCgiL2J1bmRsZXMvbWFpbi9pbWcvYmcxLnBuZz81Iik7fScsICRvUmVzdWx0LT5yZW5kZXIoKSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRlc3RMb2NhbGVUcmFwKCkgewoJCXNldGxvY2FsZShMQ19BTEwsICJwdF9QVCIsICJubyIpOwoJCSRzRmlsZSA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi8uLi9maWxlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gIi1mYXVsdC10b2xlcmFuY2UuY3NzIjsKCQkkb1BhcnNlciA9IG5ldyBQYXJzZXIoZmlsZV9nZXRfY29udGVudHMoJHNGaWxlKSwgU2V0dGluZ3M6OmNyZWF0ZSgpLT53aXRoTGVuaWVudFBhcnNpbmcodHJ1ZSkpOwoJCSRvUmVzdWx0ID0gJG9QYXJzZXItPnBhcnNlKCk7CgkJJHRoaXMtPmFzc2VydFNhbWUoJy50ZXN0MSB7fScuIlxuIi4nLnRlc3QyIHtoZWxsbzogMi4yO2hlbGxvOiAyMDAwMDAwMDAwMDAwLjI7fScuIlxuIi4nI3Rlc3Qge30nLiJcbiIuJyN0ZXN0MiB7aGVscDogbm9uZTt9JywgJG9SZXN1bHQtPnJlbmRlcigpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGVzdENhc2VJbnNlbnNpdGl2aXR5KCkgewoJCSRzRmlsZSA9IGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi8uLi8uLi9maWxlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gImNhc2UtaW5zZW5zaXRpdml0eS5jc3MiOwoJCSRvUGFyc2VyID0gbmV3IFBhcnNlcihmaWxlX2dldF9jb250ZW50cygkc0ZpbGUpKTsKCQkkb1Jlc3VsdCA9ICRvUGFyc2VyLT5wYXJzZSgpOwoJCSR0aGlzLT5hc3NlcnRTYW1lKCdAY2hhcnNldCAidXRmLTgiOwpAaW1wb3J0IHVybCgidGVzdC5jc3MiKTsKQG1lZGlhIHNjcmVlbiB7fQojbXlpZCB7Y2FzZTogaW5zZW5zaXRpdmUgIWltcG9ydGFudDtmcmVxdWVuY3k6IDMwSHo7Zm9udC1zaXplOiAxZW07Y29sb3I6ICNmZjA7Y29sb3I6IGhzbCg0MCw0MCUsMzAlKTtmb250LWZhbWlseTogQXJpYWw7fScsICRvUmVzdWx0LT5yZW5kZXIoKSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQoKIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDxodHRwOi8vZnNmLm9yZy8+CiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCiBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQpzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcwpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uJ3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1dGhvcnMgY29tbWl0IHRvCnVzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KeW91ciBwcm9ncmFtcywgdG9vLgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKaWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKaW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UKZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAp5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQpzb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRoZWlyCnJpZ2h0cy4KCiAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAooMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LApkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgoKICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgp0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQpzb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKd2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKYXV0aG9ycycgcmVwdXRhdGlvbnMuCgogIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCnBhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQpwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKbW9kaWZpY2F0aW9uIGZvbGxvdy4KCiAgICAgICAgICAgICAgICAgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LApyZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbgp0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KCkFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQppcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgpXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCnNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQpjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCmNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OwphbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCmFsb25nIHdpdGggdGhlIFByb2dyYW0uCgpZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQogICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5CiAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCiAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCiAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQogICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgogICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CiAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCiAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKClRoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKaWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCnRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKdGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgoKVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0CnlvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwpleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KCkluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0Kd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCmEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCnRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAp1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwogICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCiAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCiAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAoKICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCiAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcwogICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQoKVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgptYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQpjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQphc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQpzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUKb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKaXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgoKSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZwphY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50CmFjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcwpkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCmV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCnZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgoKICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bwp0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCnRoaXMgTGljZW5zZS4KCiAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQphbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpyZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCmFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgoKICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQptYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcKdGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZwpjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKdGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCm9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbApiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCgpFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtCnNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55CmxhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgp0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24uCgogIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgp0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCm1ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzCm9mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTk8gV0FSUkFOVFkKCiAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCkZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgpPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTClBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VECk9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCk1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQpQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKUkVQQUlSIE9SIENPUlJFQ1RJT04uCgogIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgpSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLApJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRApUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwoKICAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1zCgogIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdApmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KCiAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICB7ZGVzY3JpcHRpb259CiAgICBDb3B5cmlnaHQgKEMpIHt5ZWFyfSAge2Z1bGxuYW1lfQoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIHtzaWduYXR1cmUgb2YgVHkgQ29vbn0sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovLyBWZXJzaW9uIDEuMQppZiggdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCcxLjEnKSA8IDAgKQp7CgkvLyBTd2l0Y2ggZnJvbSBwb3N0IHRvIHByZWNvbXBpbGUgaW4gb3JkZXIgdG8gbWFrZSBTbWFydHkgd29yawoJJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdTbWFydHlQb3N0Q29tcGlsZScpOwoJJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdTbWFydHlQcmVDb21waWxlJywgZmFsc2UpOwp9CgoKCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzEuNCcpIDwgMCApCnsKCS8vIFN3aXRjaCBmcm9tIHRoZSBnZW5lcmFsIFNtYXJ0eVByZUNvbXBpbGUgdG8gZGVkaWNhdGVkIFN0eWxlc2hlZXRQcmVDb21waWxlCgkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ1NtYXJ0eVByZUNvbXBpbGUnKTsKCSR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnU3R5bGVzaGVldFByZUNvbXBpbGUnLCBmYWxzZSk7Cn0KCgppZiAodmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCAnMy4wJykgPCAwKQp7CgkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ1N0eWxlc2hlZXRQcmVDb21waWxlJyk7Cn0KCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDU1NQcmVwcm9jZXNzb3IiCnZlcnNpb24gPSAiMy4wLWJldGEzIgphdXRob3IgPSAiQWlyZSBsaWJyZSAtIE1hdGhpZXUgTXV0aHMiCmF1dGhvcmVtYWlsID0gImNvbnRhY3RAYWlyZWxpYnJlLmZyIgptaW5jbXN2ZXJzaW9uID0gIjIuMi45IgpsYXp5bG9hZGFkbWluID0gMApsYXp5bG9hZGZyb250ZW5kID0gMApbbWV0YV0KZ2VuZXJhdGVkID0gMTU2NTcwMDg0NApjbXNfdmVyID0gMi4zLWJldGE2Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessCommand/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessCommand/class.Preprocessor_LessCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9MZXNzQ29tbWFuZCBleHRlbmRzIFByZXByb2Nlc3NvciB7CgoJY29uc3QgRlJJRU5ETFlfTkFNRSA9ICdMZXNzIGNvbXBpbGVyIGZyb20gY29tbWFuZCBsaW5lJzsKCWNvbnN0IERFU0NSSVBUSU9OID0gJ1RoZSBvZmZpY2lhbCBjb21tYW5kIGxpbmUgTEVTUyBjb21waWxhdG9yJzsKCWNvbnN0IEFVVEhPUiA9ICdDb3JlIExFU1MgdGVhbSc7Cgljb25zdCBXRUJTSVRFID0gJ2h0dHA6Ly9sZXNzY3NzLm9yZyc7Cgljb25zdCBOT1RFID0gJ0Zhc3QsIGJ1dCB5b3UgTkVFRCB0aGUgbGVzc2MgY29tbWFuZCBsaW5lIHRvb2wgKHYuIDEuNyBvciBuZXdlcikgaW5zdGFsbGVkIG9uIHlvdXIgc2VydmVyIHRvIHVzZSBpdCAtIGNoZWNrIHRoZSBvZmZpY2lhbCB3ZWJzaXRlIGZvciBtb3JlIGluZm9ybWF0aW9ucy4gU3VwcG9ydHMgc291cmNlbWFwcyc7Cgljb25zdCBMT0dPID0gJ2xvZ28ucG5nJzsKCWNvbnN0IFBSSU9SSVRZID0gNTU7CgoKCgkvLyBOb3RlIDogJGNzcyBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIC0gbm8gbmVlZCB0byByZXR1cm4KCXB1YmxpYyBmdW5jdGlvbiBDb21waWxlQ1NTKCYkY3NzPScnKQoJewoJCS8vIFB1dCBpbiBhIGNhY2hlIGZpbGUKCQkkZmlsZSA9IGNtc19qb2luX3BhdGgoVE1QX0NBQ0hFX0xPQ0FUSU9OLCAnY3NzcHJlcHJvY2Vzc29yLmNzcycpOwoJCWZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlLCAkY3NzKTsKCgkJJGZpbGVfb3V0cHV0ID0gY21zX2pvaW5fcGF0aChUTVBfQ0FDSEVfTE9DQVRJT04sICdjc3NwcmVwcm9jZXNzb3Jfb3V0LmNzcycpOwoKCQkvLyBFWEVDICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkJLy8gQ29tcGlsZQoJCSRjb21tYW5kID0gJ2xlc3NjICc7CgogCQkvKmlmICgkdGhpcy0+bWluaWZ5KQogCQl7CiAJCQkvLyRjb21tYW5kIC49ICcteCAtLWNsZWFuLWNzcyAnOyAvLyBub3RlOiBjbGVhbi1jc3MgZG9lcyBub3Qgd29yayB3aXRoIHNvdXJjZSBtYXBzCiAJCQkkY29tbWFuZCAuPSAnLXggJzsKCQl9Ki8KCgkJLy8gU291cmNlbWFwCgkJaWYgKCR0aGlzLT5nZW5lcmF0ZV9zb3VyY2VtYXApCgkJewoJCQkkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CgoJCQkkY29tbWFuZCAuPSAnLS1zb3VyY2UtbWFwPScgLiAkdGhpcy0+c291cmNlX21hcF9maWxlIC4gJyAtLXNvdXJjZS1tYXAtdXJsPScgLiAkdGhpcy0+c291cmNlX21hcF91cmwgLiAnIC0tc291cmNlLW1hcC1iYXNlcGF0aD0nIC4gJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiAnIC0tc291cmNlLW1hcC1yb290cGF0aD0nIC4gJGNvbmZpZ1sncm9vdF91cmwnXSAuICcgJzsKCQl9CgoJCWlmICghZW1wdHkoJHRoaXMtPmltcG9ydF9kaXJzKSkKCQl7CgkJCS8vIENoZWNrIGlmIHdlIGFyZSBvbiBMaW51eCBvciBXaW5kb3dzIC0gbmVlZCB0ZXN0aW5nCgkJCS8vIFNlZSBodHRwOi8vbGVzc2Nzcy5vcmcvdXNhZ2UvI2NvbW1hbmQtbGluZS11c2FnZS1pbmNsdWRlLXBhdGhzCgkJCSRwaHBvcyA9IHN0cnRvbG93ZXIoUEhQX09TKTsKCQkJJHNlcGFyYXRvcj0gJzonOwoJCQlpZiAoc3RycG9zKCRwaHBvcywgJ3dpbicpKQoJCQkJJHNlcGFyYXRvcj0gJzsnOwoKCQkJJGNvbW1hbmQgLj0gJyAtLWluY2x1ZGUtcGF0aD0nIC4gaW1wbG9kZSgkc2VwYXJhdG9yLCAkdGhpcy0+aW1wb3J0X2RpcnMpOwoJCX0KCgkJCgkJJGNvbW1hbmQgLj0gJyAnIC4gJGZpbGUgLiAnICcgLiRmaWxlX291dHB1dDsKCgkJLy8gQXNrIGZvciBjb21tYW5kIHRvIHN5c3RlbQoJCSRyZXN1bHQgPSBleGVjKCRjb21tYW5kKTsKCgkJaWYgKCFlbXB0eSgkcmVzdWx0KSkKCQkJZGVidWdfdG9fbG9nKCdDU1NQcmVwcm9jZXNzb3I6ICcgLiAkcmVzdWx0KTsKCgkJJGNzcyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlX291dHB1dCk7CgoJCS8vIFJlbW92ZSBjYWNoZSBmaWxlCgkJLy91bmxpbmsoJGZpbGUpOwoKCQlyZXR1cm4gdHJ1ZTsKCX0KCgp9CgoKCgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessCommand/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessCommand/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/class.Preprocessor_LessPHPOyejorge.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9MZXNzUEhQT3llam9yZ2UgZXh0ZW5kcyBQcmVwcm9jZXNzb3IgewoKCWNvbnN0IEZSSUVORExZX05BTUUgPSAnTGVzc1BIUCAoT3llam9yZ2UpJzsKCWNvbnN0IERFU0NSSVBUSU9OID0gJ0EgUEhQIC8gTEVTU0NTUyBwcmUtcHJvY2Vzc29yJzsKCWNvbnN0IEFVVEhPUiA9ICdveWVqb3JnZSAtIEpvc2ggU2NobWlkdCc7Cgljb25zdCBXRUJTSVRFID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9veWVqb3JnZS9sZXNzLnBocCc7Cgljb25zdCBOT1RFID0gJ1Nob3VsZCBzdXBwb3J0IHNvdXJjZW1hcHMnOwoJY29uc3QgTE9HTyA9ICdsb2dvLnBuZyc7Cgljb25zdCBQUklPUklUWSA9IDUwOwoJCgkKCS8vIEZvciBMZXNzUEhQT3llam9yZ2UKCXB1YmxpYyAkcGFyc2VyOwoJCgoJcHVibGljIGZ1bmN0aW9uIExvYWQoKQoJewoJCXBhcmVudDo6TG9hZCgpOwoJCQoJCXJlcXVpcmVfb25jZShjbXNfam9pbl9wYXRoKF9fRElSX18sICdMZXNzJywgJ0F1dG9sb2FkZXIucGhwJykpOwoJCUxlc3NfQXV0b2xvYWRlcjo6cmVnaXN0ZXIoKTsKCQkKCQkvLyBPcHRpb25zCgkJJG9wdGlvbnNbJ2NvbXByZXNzJ10gPSAkdGhpcy0+bWluaWZ5OwoJCQoJCWlmICgkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKQoJCXsKCQkJJG9wdGlvbnNbJ3NvdXJjZU1hcCddID0gdHJ1ZTsKCQkJJG9wdGlvbnNbJ3NvdXJjZU1hcFdyaXRlVG8nXSA9ICR0aGlzLT5zb3VyY2VfbWFwX2ZpbGU7CgkJCSRvcHRpb25zWydzb3VyY2VNYXBVUkwnXSA9ICR0aGlzLT5zb3VyY2VfbWFwX3VybDsKCQkJCgkJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCQkJJG9wdGlvbnNbJ3NvdXJjZU1hcEJhc2VwYXRoJ10gPSAkY29uZmlnWydyb290X3BhdGgnXTsKCQl9CgkJCgkJJHRoaXMtPnBhcnNlciA9IG5ldyBMZXNzX1BhcnNlcigkb3B0aW9ucyk7CgkJCgkJLy8gSW1wb3J0IGRpcnMKCQkkdGhpcy0+cGFyc2VyLT5TZXRJbXBvcnREaXJzKCR0aGlzLT5pbXBvcnRfZGlycyk7Cgl9CgkKCS8vIE5vdGUgOiAkY3NzIGlzIHBhc3NlZCBieSByZWZlcmVuY2UgLSBubyBuZWVkIHRvIHJldHVybgoJcHVibGljIGZ1bmN0aW9uIENvbXBpbGVDU1MoJiRjc3M9JycpCgl7CgkJdHJ5IHsKCQkJJHRoaXMtPnBhcnNlci0+cGFyc2UoJGNzcyk7CgkJCSRjc3MgPSAkdGhpcy0+cGFyc2VyLT5nZXRDc3MoKTsKCQl9CgkJY2F0Y2ggKGV4Y2VwdGlvbiAkZSkgewoJCQkkZXJyb3JfbWVzc2FnZSA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCWRlYnVnX3RvX2xvZygkZXJyb3JfbWVzc2FnZSk7CgkJfQoJCQoJCXJldHVybiB0cnVlOwoJfQoKfQoKCgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Autoloader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBdXRvbG9hZGVyCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgYXV0b2xvYWQKICovCmNsYXNzIExlc3NfQXV0b2xvYWRlciB7CgoJLyoqCgkgKiBSZWdpc3RlcmVkIGZsYWcKCSAqCgkgKiBAdmFyIGJvb2xlYW4KCSAqLwoJcHJvdGVjdGVkIHN0YXRpYyAkcmVnaXN0ZXJlZCA9IGZhbHNlOwoKCS8qKgoJICogTGlicmFyeSBkaXJlY3RvcnkKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcm90ZWN0ZWQgc3RhdGljICRsaWJEaXI7CgoJLyoqCgkgKiBSZWdpc3RlciB0aGUgYXV0b2xvYWRlciBpbiB0aGUgc3BsIGF1dG9sb2FkZXIKCSAqCgkgKiBAcmV0dXJuIHZvaWQKCSAqIEB0aHJvd3MgRXhjZXB0aW9uIElmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiByZWdpc3RyYXRpb24KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWdpc3RlcigpewoJCWlmKCBzZWxmOjokcmVnaXN0ZXJlZCApewoJCQlyZXR1cm47CgkJfQoKCQlzZWxmOjokbGliRGlyID0gZGlybmFtZShfX0ZJTEVfXyk7CgoJCWlmKGZhbHNlID09PSBzcGxfYXV0b2xvYWRfcmVnaXN0ZXIoYXJyYXkoJ0xlc3NfQXV0b2xvYWRlcicsICdsb2FkQ2xhc3MnKSkpewoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmFibGUgdG8gcmVnaXN0ZXIgTGVzc19BdXRvbG9hZGVyOjpsb2FkQ2xhc3MgYXMgYW4gYXV0b2xvYWRpbmcgbWV0aG9kLicpOwoJCX0KCgkJc2VsZjo6JHJlZ2lzdGVyZWQgPSB0cnVlOwoJfQoKCS8qKgoJICogVW5yZWdpc3RlcnMgdGhlIGF1dG9sb2FkZXIKCSAqCgkgKiBAcmV0dXJuIHZvaWQKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1bnJlZ2lzdGVyKCl7CgkJc3BsX2F1dG9sb2FkX3VucmVnaXN0ZXIoYXJyYXkoJ0xlc3NfQXV0b2xvYWRlcicsICdsb2FkQ2xhc3MnKSk7CgkJc2VsZjo6JHJlZ2lzdGVyZWQgPSBmYWxzZTsKCX0KCgkvKioKCSAqIExvYWRzIHRoZSBjbGFzcwoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGNsYXNzTmFtZSBUaGUgY2xhc3MgdG8gbG9hZAoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRDbGFzcygkY2xhc3NOYW1lKXsKCgoJCS8vIGhhbmRsZSBvbmx5IHBhY2thZ2UgY2xhc3NlcwoJCWlmKHN0cnBvcygkY2xhc3NOYW1lLCAnTGVzc18nKSAhPT0gMCl7CgkJCXJldHVybjsKCQl9CgoJCSRjbGFzc05hbWUgPSBzdWJzdHIoJGNsYXNzTmFtZSw1KTsKCQkkZmlsZU5hbWUgPSBzZWxmOjokbGliRGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN0cl9yZXBsYWNlKCdfJywgRElSRUNUT1JZX1NFUEFSQVRPUiwgJGNsYXNzTmFtZSkgLiAnLnBocCc7CgoJCWlmKGZpbGVfZXhpc3RzKCRmaWxlTmFtZSkpewoJCQlyZXF1aXJlICRmaWxlTmFtZTsKCQkJcmV0dXJuIHRydWU7CgkJfWVsc2V7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oJ2ZpbGUgbm90IGxvYWRhYmxlICcuJGZpbGVOYW1lKTsKCQl9Cgl9Cgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Cache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZSggZGlybmFtZShfX0ZJTEVfXykuJy9WZXJzaW9uLnBocCcpOwoKLyoqCiAqIFV0aWxpdHkgZm9yIGhhbmRsaW5nIHRoZSBnZW5lcmF0aW9uIGFuZCBjYWNoaW5nIG9mIGNzcyBmaWxlcwogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIGNhY2hlCiAqCiAqLwpjbGFzcyBMZXNzX0NhY2hlewoKCS8vIGRpcmVjdG9yeSBsZXNzLnBocCBjYW4gdXNlIGZvciBzdG9yaW5nIGRhdGEKCXB1YmxpYyBzdGF0aWMgJGNhY2hlX2Rpcgk9IGZhbHNlOwoKCS8vIHByZWZpeCBmb3IgdGhlIHN0b3JpbmcgZGF0YQoJcHVibGljIHN0YXRpYyAkcHJlZml4CQk9ICdsZXNzcGhwXyc7CgoJLy8gcHJlZml4IGZvciB0aGUgc3RvcmluZyB2YXJzCglwdWJsaWMgc3RhdGljICRwcmVmaXhfdmFycwk9ICdsZXNzcGhwdmFyc18nOwoKCS8vIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYWZ0ZXIgd2hpY2ggZGF0YSBjcmVhdGVkIGJ5IGxlc3MucGhwIHdpbGwgYmUgc2VlbiBhcyAnZ2FyYmFnZScgYW5kIHBvdGVudGlhbGx5IGNsZWFuZWQgdXAKCXB1YmxpYyBzdGF0aWMgJGdjX2xpZmV0aW1lCT0gNjA0ODAwOwoKCgkvKioKCSAqIFNhdmUgYW5kIHJldXNlIHRoZSByZXN1bHRzIG9mIGNvbXBpbGVkIGxlc3MgZmlsZXMuCgkgKiBUaGUgZmlyc3QgY2FsbCB0byBHZXQoKSB3aWxsIGdlbmVyYXRlIGNzcyBhbmQgc2F2ZSBpdC4KCSAqIFN1YnNlcXVlbnQgY2FsbHMgdG8gR2V0KCkgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgY3NzIGZpbGVuYW1lCgkgKgoJICogQHBhcmFtIGFycmF5ICRsZXNzX2ZpbGVzIEFycmF5IG9mIC5sZXNzIGZpbGVzIHRvIGNvbXBpbGUKCSAqIEBwYXJhbSBhcnJheSAkcGFyc2VyX29wdGlvbnMgQXJyYXkgb2YgY29tcGlsZXIgb3B0aW9ucwoJICogQHBhcmFtIGFycmF5ICRtb2RpZnlfdmFycyBBcnJheSBvZiB2YXJpYWJsZXMKCSAqIEByZXR1cm4gc3RyaW5nIE5hbWUgb2YgdGhlIGNzcyBmaWxlCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gR2V0KCAkbGVzc19maWxlcywgJHBhcnNlcl9vcHRpb25zID0gYXJyYXkoKSwgJG1vZGlmeV92YXJzID0gYXJyYXkoKSApewoKCgkJLy9jaGVjayAkY2FjaGVfZGlyCgkJaWYoIGlzc2V0KCRwYXJzZXJfb3B0aW9uc1snY2FjaGVfZGlyJ10pICl7CgkJCUxlc3NfQ2FjaGU6OiRjYWNoZV9kaXIgPSAkcGFyc2VyX29wdGlvbnNbJ2NhY2hlX2RpciddOwoJCX0KCgkJaWYoIGVtcHR5KExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpICl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oJ2NhY2hlX2RpciBub3Qgc2V0Jyk7CgkJfQoKCQlpZiggaXNzZXQoJHBhcnNlcl9vcHRpb25zWydwcmVmaXgnXSkgKXsKCQkJTGVzc19DYWNoZTo6JHByZWZpeCA9ICRwYXJzZXJfb3B0aW9uc1sncHJlZml4J107CgkJfQoKCQlpZiggZW1wdHkoTGVzc19DYWNoZTo6JHByZWZpeCkgKXsKCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigncHJlZml4IG5vdCBzZXQnKTsKCQl9CgoJCWlmKCBpc3NldCgkcGFyc2VyX29wdGlvbnNbJ3ByZWZpeF92YXJzJ10pICl7CgkJCUxlc3NfQ2FjaGU6OiRwcmVmaXhfdmFycyA9ICRwYXJzZXJfb3B0aW9uc1sncHJlZml4X3ZhcnMnXTsKCQl9CgoJCWlmKCBlbXB0eShMZXNzX0NhY2hlOjokcHJlZml4X3ZhcnMpICl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oJ3ByZWZpeF92YXJzIG5vdCBzZXQnKTsKCQl9CgoJCXNlbGY6OkNoZWNrQ2FjaGVEaXIoKTsKCQkkbGVzc19maWxlcyA9IChhcnJheSkkbGVzc19maWxlczsKCgoJCS8vY3JlYXRlIGEgZmlsZSBmb3IgdmFyaWFibGVzCgkJaWYoICFlbXB0eSgkbW9kaWZ5X3ZhcnMpICl7CgkJCSRsZXNzdmFycyA9IExlc3NfUGFyc2VyOjpzZXJpYWxpemVWYXJzKCRtb2RpZnlfdmFycyk7CgkJCSR2YXJzX2ZpbGUgPSBMZXNzX0NhY2hlOjokY2FjaGVfZGlyIC4gTGVzc19DYWNoZTo6JHByZWZpeF92YXJzIC4gc2hhMSgkbGVzc3ZhcnMpIC4gJy5sZXNzJzsKCgkJCWlmKCAhZmlsZV9leGlzdHMoJHZhcnNfZmlsZSkgKXsKCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCR2YXJzX2ZpbGUsICRsZXNzdmFycyk7CgkJCX0KCgkJCSRsZXNzX2ZpbGVzICs9IGFycmF5KCR2YXJzX2ZpbGUgPT4gJy8nKTsKCQl9CgoKCQkvLyBnZW5lcmF0ZSBuYW1lIGZvciBjb21waWxlZCBjc3MgZmlsZQoJCSRoYXNoID0gbWQ1KGpzb25fZW5jb2RlKCRsZXNzX2ZpbGVzKSk7CiAJCSRsaXN0X2ZpbGUgPSBMZXNzX0NhY2hlOjokY2FjaGVfZGlyIC4gTGVzc19DYWNoZTo6JHByZWZpeCAuICRoYXNoIC4gJy5saXN0JzsKCiAJCS8vIGNoZWNrIGNhY2hlZCBjb250ZW50CiAJCWlmKCAhaXNzZXQoJHBhcnNlcl9vcHRpb25zWyd1c2VfY2FjaGUnXSkgfHwgJHBhcnNlcl9vcHRpb25zWyd1c2VfY2FjaGUnXSA9PT0gdHJ1ZSApewoJCQlpZiggZmlsZV9leGlzdHMoJGxpc3RfZmlsZSkgKXsKCgkJCQlzZWxmOjpMaXN0RmlsZXMoJGxpc3RfZmlsZSwgJGxpc3QsICRjYWNoZWRfbmFtZSk7CgkJCQkkY29tcGlsZWRfbmFtZSA9IHNlbGY6OkNvbXBpbGVkTmFtZSgkbGlzdCwgJGhhc2gpOwoKCQkJCS8vIGlmICRjYWNoZWRfbmFtZSBpcyB0aGUgc2FtZSBhcyB0aGUgJGNvbXBpbGVkIG5hbWUsIGRvbid0IHJlZ2VuZXJhdGUKCQkJCWlmKCAhJGNhY2hlZF9uYW1lIHx8ICRjYWNoZWRfbmFtZSA9PT0gJGNvbXBpbGVkX25hbWUgKXsKCgkJCQkJJG91dHB1dF9maWxlID0gc2VsZjo6T3V0cHV0RmlsZSgkY29tcGlsZWRfbmFtZSwgJHBhcnNlcl9vcHRpb25zICk7CgoJCQkJCWlmKCAkb3V0cHV0X2ZpbGUgJiYgZmlsZV9leGlzdHMoJG91dHB1dF9maWxlKSApewoJCQkJCQlAdG91Y2goJGxpc3RfZmlsZSk7CgkJCQkJCXJldHVybiBiYXNlbmFtZSgkb3V0cHV0X2ZpbGUpOyAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGp1c3QgcmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaWxlCgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQkkY29tcGlsZWQgPSBzZWxmOjpDYWNoZSggJGxlc3NfZmlsZXMsICRwYXJzZXJfb3B0aW9ucyApOwoJCWlmKCAhJGNvbXBpbGVkICl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRjb21waWxlZF9uYW1lID0gc2VsZjo6Q29tcGlsZWROYW1lKCAkbGVzc19maWxlcywgJGhhc2ggKTsKCQkkb3V0cHV0X2ZpbGUgPSBzZWxmOjpPdXRwdXRGaWxlKCRjb21waWxlZF9uYW1lLCAkcGFyc2VyX29wdGlvbnMgKTsKCgoJCS8vc2F2ZSB0aGUgZmlsZSBsaXN0CgkJJGxpc3QgPSAkbGVzc19maWxlczsKCQkkbGlzdFtdID0gJGNvbXBpbGVkX25hbWU7CgkJJGNhY2hlID0gaW1wbG9kZSgiXG4iLCRsaXN0KTsKCQlmaWxlX3B1dF9jb250ZW50cyggJGxpc3RfZmlsZSwgJGNhY2hlICk7CgoKCQkvL3NhdmUgdGhlIGNzcwoJCWZpbGVfcHV0X2NvbnRlbnRzKCAkb3V0cHV0X2ZpbGUsICRjb21waWxlZCApOwoKCgkJLy9jbGVhbiB1cAoJCXNlbGY6OkNsZWFuQ2FjaGUoKTsKCgkJcmV0dXJuIGJhc2VuYW1lKCRvdXRwdXRfZmlsZSk7Cgl9CgoJLyoqCgkgKiBGb3JjZSB0aGUgY29tcGlsZXIgdG8gcmVnZW5lcmF0ZSB0aGUgY2FjaGVkIGNzcyBmaWxlCgkgKgoJICogQHBhcmFtIGFycmF5ICRsZXNzX2ZpbGVzIEFycmF5IG9mIC5sZXNzIGZpbGVzIHRvIGNvbXBpbGUKCSAqIEBwYXJhbSBhcnJheSAkcGFyc2VyX29wdGlvbnMgQXJyYXkgb2YgY29tcGlsZXIgb3B0aW9ucwoJICogQHBhcmFtIGFycmF5ICRtb2RpZnlfdmFycyBBcnJheSBvZiB2YXJpYWJsZXMKCSAqIEByZXR1cm4gc3RyaW5nIE5hbWUgb2YgdGhlIGNzcyBmaWxlCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gUmVnZW4oICRsZXNzX2ZpbGVzLCAkcGFyc2VyX29wdGlvbnMgPSBhcnJheSgpLCAkbW9kaWZ5X3ZhcnMgPSBhcnJheSgpICl7CgkJJHBhcnNlcl9vcHRpb25zWyd1c2VfY2FjaGUnXSA9IGZhbHNlOwoJCXJldHVybiBzZWxmOjpHZXQoICRsZXNzX2ZpbGVzLCAkcGFyc2VyX29wdGlvbnMsICRtb2RpZnlfdmFycyApOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ2FjaGUoICYkbGVzc19maWxlcywgJHBhcnNlcl9vcHRpb25zID0gYXJyYXkoKSApewoKCgkJLy8gZ2V0IGxlc3MucGhwIGlmIGl0IGV4aXN0cwoJCSRmaWxlID0gZGlybmFtZShfX0ZJTEVfXykgLiAnL0xlc3MucGhwJzsKCQlpZiggZmlsZV9leGlzdHMoJGZpbGUpICYmICFjbGFzc19leGlzdHMoJ0xlc3NfUGFyc2VyJykgKXsKCQkJcmVxdWlyZV9vbmNlKCRmaWxlKTsKCQl9CgoJCSRwYXJzZXJfb3B0aW9uc1snY2FjaGVfZGlyJ10gPSBMZXNzX0NhY2hlOjokY2FjaGVfZGlyOwoJCSRwYXJzZXIgPSBuZXcgTGVzc19QYXJzZXIoJHBhcnNlcl9vcHRpb25zKTsKCgoJCS8vIGNvbWJpbmUgZmlsZXMKCQlmb3JlYWNoKCRsZXNzX2ZpbGVzIGFzICRmaWxlX3BhdGggPT4gJHVyaV9vcl9sZXNzICl7CgoJCQkvL3RyZWF0IGFzIGxlc3MgbWFya3VwIGlmIHRoZXJlIGFyZSBuZXdsaW5lIGNoYXJhY3RlcnMKCQkJaWYoIHN0cnBvcygkdXJpX29yX2xlc3MsIlxuIikgIT09IGZhbHNlICl7CgkJCQkkcGFyc2VyLT5QYXJzZSggJHVyaV9vcl9sZXNzICk7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJHBhcnNlci0+UGFyc2VGaWxlKCAkZmlsZV9wYXRoLCAkdXJpX29yX2xlc3MgKTsKCQl9CgoJCSRjb21waWxlZCA9ICRwYXJzZXItPmdldENzcygpOwoKCgkJJGxlc3NfZmlsZXMgPSAkcGFyc2VyLT5hbGxQYXJzZWRGaWxlcygpOwoKCQlyZXR1cm4gJGNvbXBpbGVkOwoJfQoKCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBPdXRwdXRGaWxlKCAkY29tcGlsZWRfbmFtZSwgJHBhcnNlcl9vcHRpb25zICl7CgoJCS8vY3VzdG9tIG91dHB1dCBmaWxlCgkJaWYoICFlbXB0eSgkcGFyc2VyX29wdGlvbnNbJ291dHB1dCddKSApewoKCQkJLy9yZWxhdGl2ZSB0byBjYWNoZSBkaXJlY3Rvcnk/CgkJCWlmKCBwcmVnX21hdGNoKCcjW1xcXFwvXSMnLCRwYXJzZXJfb3B0aW9uc1snb3V0cHV0J10pICl7CgkJCQlyZXR1cm4gJHBhcnNlcl9vcHRpb25zWydvdXRwdXQnXTsKCQkJfQoKCQkJcmV0dXJuIExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIuJHBhcnNlcl9vcHRpb25zWydvdXRwdXQnXTsKCQl9CgoJCXJldHVybiBMZXNzX0NhY2hlOjokY2FjaGVfZGlyLiRjb21waWxlZF9uYW1lOwoJfQoKCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBDb21waWxlZE5hbWUoICRmaWxlcywgJGV4dHJhaGFzaCApewoKCQkvL3NhdmUgdGhlIGZpbGUgbGlzdAoJCSR0ZW1wID0gYXJyYXkoTGVzc19WZXJzaW9uOjpjYWNoZV92ZXJzaW9uKTsKCQlmb3JlYWNoKCRmaWxlcyBhcyAkZmlsZSl7CgkJCSR0ZW1wW10gPSBmaWxlbXRpbWUoJGZpbGUpLiJcdCIuZmlsZXNpemUoJGZpbGUpLiJcdCIuJGZpbGU7CgkJfQoKCQlyZXR1cm4gTGVzc19DYWNoZTo6JHByZWZpeC5zaGExKGpzb25fZW5jb2RlKCR0ZW1wKS4kZXh0cmFoYXNoKS4nLmNzcyc7Cgl9CgoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gU2V0Q2FjaGVEaXIoICRkaXIgKXsKCQlMZXNzX0NhY2hlOjokY2FjaGVfZGlyID0gJGRpcjsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENoZWNrQ2FjaGVEaXIoKXsKCgkJTGVzc19DYWNoZTo6JGNhY2hlX2RpciA9IHN0cl9yZXBsYWNlKCdcXCcsJy8nLExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpOwoJCUxlc3NfQ2FjaGU6OiRjYWNoZV9kaXIgPSBydHJpbShMZXNzX0NhY2hlOjokY2FjaGVfZGlyLCcvJykuJy8nOwoKCQlpZiggIWZpbGVfZXhpc3RzKExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpICl7CgkJCWlmKCAhbWtkaXIoTGVzc19DYWNoZTo6JGNhY2hlX2RpcikgKXsKCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBjb3VsZG5cJ3QgYmUgY3JlYXRlZDogJy5MZXNzX0NhY2hlOjokY2FjaGVfZGlyKTsKCQkJfQoKCQl9ZWxzZWlmKCAhaXNfZGlyKExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBkb2VzblwndCBleGlzdDogJy5MZXNzX0NhY2hlOjokY2FjaGVfZGlyKTsKCgkJfWVsc2VpZiggIWlzX3dyaXRhYmxlKExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIpICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIoJ0xlc3MucGhwIGNhY2hlIGRpcmVjdG9yeSBpc25cJ3Qgd3JpdGFibGU6ICcuTGVzc19DYWNoZTo6JGNhY2hlX2Rpcik7CgoJCX0KCgl9CgoKCS8qKgoJICogRGVsZXRlIHVudXNlZCBsZXNzLnBocCBmaWxlcwoJICoKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDbGVhbkNhY2hlKCl7CgkJc3RhdGljICRjbGVhbiA9IGZhbHNlOwoKCQlpZiggJGNsZWFuICl7CgkJCXJldHVybjsKCQl9CgoJCSRmaWxlcyA9IHNjYW5kaXIoTGVzc19DYWNoZTo6JGNhY2hlX2Rpcik7CgkJaWYoICRmaWxlcyApewoJCQkkY2hlY2tfdGltZSA9IHRpbWUoKSAtIHNlbGY6OiRnY19saWZldGltZTsKCQkJZm9yZWFjaCgkZmlsZXMgYXMgJGZpbGUpewoKCQkJCS8vIGRvbid0IGRlbGV0ZSBpZiB0aGUgZmlsZSB3YXNuJ3QgY3JlYXRlZCB3aXRoIGxlc3MucGhwCgkJCQlpZiggc3RycG9zKCRmaWxlLExlc3NfQ2FjaGU6OiRwcmVmaXgpICE9PSAwICl7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJJGZ1bGxfcGF0aCA9IExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIgLiAkZmlsZTsKCgkJCQkvLyBtYWtlIHN1cmUgdGhlIGZpbGUgc3RpbGwgZXhpc3RzCgkJCQkvLyBjc3MgZmlsZXMgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGRlbGV0ZWQKCQkJCWlmKCAhZmlsZV9leGlzdHMoJGZ1bGxfcGF0aCkgKXsKCQkJCQljb250aW51ZTsKCQkJCX0KCQkJCSRtdGltZSA9IGZpbGVtdGltZSgkZnVsbF9wYXRoKTsKCgkJCQkvLyBkb24ndCBkZWxldGUgaWYgaXQncyBhIHJlbGF0aXZlbHkgbmV3IGZpbGUKCQkJCWlmKCAkbXRpbWUgPiAkY2hlY2tfdGltZSApewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCSRwYXJ0cyA9IGV4cGxvZGUoJy4nLCRmaWxlKTsKCQkJCSR0eXBlID0gYXJyYXlfcG9wKCRwYXJ0cyk7CgoKCQkJCS8vIGRlbGV0ZSBjc3MgZmlsZXMgYmFzZWQgb24gdGhlIGxpc3QgZmlsZXMKCQkJCWlmKCAkdHlwZSA9PT0gJ2NzcycgKXsKCQkJCQljb250aW51ZTsKCQkJCX0KCgoJCQkJLy8gZGVsZXRlIHRoZSBsaXN0IGZpbGUgYW5kIGFzc29jaWF0ZWQgY3NzIGZpbGUKCQkJCWlmKCAkdHlwZSA9PT0gJ2xpc3QnICl7CgkJCQkJc2VsZjo6TGlzdEZpbGVzKCRmdWxsX3BhdGgsICRsaXN0LCAkY3NzX2ZpbGVfbmFtZSk7CgkJCQkJaWYoICRjc3NfZmlsZV9uYW1lICl7CgkJCQkJCSRjc3NfZmlsZSA9IExlc3NfQ2FjaGU6OiRjYWNoZV9kaXIgLiAkY3NzX2ZpbGVfbmFtZTsKCQkJCQkJaWYoIGZpbGVfZXhpc3RzKCRjc3NfZmlsZSkgKXsKCQkJCQkJCXVubGluaygkY3NzX2ZpbGUpOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoKCQkJCXVubGluaygkZnVsbF9wYXRoKTsKCQkJfQoJCX0KCgkJJGNsZWFuID0gdHJ1ZTsKCX0KCgoJLyoqCgkgKiBHZXQgdGhlIGxpc3Qgb2YgbGVzcyBmaWxlcyBhbmQgZ2VuZXJhdGVkIGNzcyBmaWxlIGZyb20gYSBsaXN0IGZpbGUKCSAqCgkgKi8KCXN0YXRpYyBmdW5jdGlvbiBMaXN0RmlsZXMoJGxpc3RfZmlsZSwgJiRsaXN0LCAmJGNzc19maWxlX25hbWUgKXsKCgkJJGxpc3QgPSBleHBsb2RlKCJcbiIsZmlsZV9nZXRfY29udGVudHMoJGxpc3RfZmlsZSkpOwoKCQkvL3BvcCB0aGUgY2FjaGVkIG5hbWUgdGhhdCBzaG91bGQgbWF0Y2ggJGNvbXBpbGVkX25hbWUKCQkkY3NzX2ZpbGVfbmFtZSA9IGFycmF5X3BvcCgkbGlzdCk7CgoJCWlmKCAhcHJlZ19tYXRjaCgnL14nIC4gTGVzc19DYWNoZTo6JHByZWZpeCAuICdbYS1mMC05XStcLmNzcyQvJywkY3NzX2ZpbGVfbmFtZSkgKXsKCQkJJGxpc3RbXSA9ICRjc3NfZmlsZV9uYW1lOwoJCQkkY3NzX2ZpbGVfbmFtZSA9IGZhbHNlOwoJCX0KCgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Colors.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVdGlsaXR5IGZvciBjc3MgY29sb3JzCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgY29sb3IKICovCmNsYXNzIExlc3NfQ29sb3JzIHsKCglwdWJsaWMgc3RhdGljICRjb2xvcnMgPSBhcnJheSgKCQkJJ2FsaWNlYmx1ZSc9PicjZjBmOGZmJywKCQkJJ2FudGlxdWV3aGl0ZSc9PicjZmFlYmQ3JywKCQkJJ2FxdWEnPT4nIzAwZmZmZicsCgkJCSdhcXVhbWFyaW5lJz0+JyM3ZmZmZDQnLAoJCQknYXp1cmUnPT4nI2YwZmZmZicsCgkJCSdiZWlnZSc9PicjZjVmNWRjJywKCQkJJ2Jpc3F1ZSc9PicjZmZlNGM0JywKCQkJJ2JsYWNrJz0+JyMwMDAwMDAnLAoJCQknYmxhbmNoZWRhbG1vbmQnPT4nI2ZmZWJjZCcsCgkJCSdibHVlJz0+JyMwMDAwZmYnLAoJCQknYmx1ZXZpb2xldCc9PicjOGEyYmUyJywKCQkJJ2Jyb3duJz0+JyNhNTJhMmEnLAoJCQknYnVybHl3b29kJz0+JyNkZWI4ODcnLAoJCQknY2FkZXRibHVlJz0+JyM1ZjllYTAnLAoJCQknY2hhcnRyZXVzZSc9PicjN2ZmZjAwJywKCQkJJ2Nob2NvbGF0ZSc9PicjZDI2OTFlJywKCQkJJ2NvcmFsJz0+JyNmZjdmNTAnLAoJCQknY29ybmZsb3dlcmJsdWUnPT4nIzY0OTVlZCcsCgkJCSdjb3Juc2lsayc9PicjZmZmOGRjJywKCQkJJ2NyaW1zb24nPT4nI2RjMTQzYycsCgkJCSdjeWFuJz0+JyMwMGZmZmYnLAoJCQknZGFya2JsdWUnPT4nIzAwMDA4YicsCgkJCSdkYXJrY3lhbic9PicjMDA4YjhiJywKCQkJJ2Rhcmtnb2xkZW5yb2QnPT4nI2I4ODYwYicsCgkJCSdkYXJrZ3JheSc9PicjYTlhOWE5JywKCQkJJ2RhcmtncmV5Jz0+JyNhOWE5YTknLAoJCQknZGFya2dyZWVuJz0+JyMwMDY0MDAnLAoJCQknZGFya2toYWtpJz0+JyNiZGI3NmInLAoJCQknZGFya21hZ2VudGEnPT4nIzhiMDA4YicsCgkJCSdkYXJrb2xpdmVncmVlbic9PicjNTU2YjJmJywKCQkJJ2RhcmtvcmFuZ2UnPT4nI2ZmOGMwMCcsCgkJCSdkYXJrb3JjaGlkJz0+JyM5OTMyY2MnLAoJCQknZGFya3JlZCc9PicjOGIwMDAwJywKCQkJJ2RhcmtzYWxtb24nPT4nI2U5OTY3YScsCgkJCSdkYXJrc2VhZ3JlZW4nPT4nIzhmYmM4ZicsCgkJCSdkYXJrc2xhdGVibHVlJz0+JyM0ODNkOGInLAoJCQknZGFya3NsYXRlZ3JheSc9PicjMmY0ZjRmJywKCQkJJ2RhcmtzbGF0ZWdyZXknPT4nIzJmNGY0ZicsCgkJCSdkYXJrdHVycXVvaXNlJz0+JyMwMGNlZDEnLAoJCQknZGFya3Zpb2xldCc9PicjOTQwMGQzJywKCQkJJ2RlZXBwaW5rJz0+JyNmZjE0OTMnLAoJCQknZGVlcHNreWJsdWUnPT4nIzAwYmZmZicsCgkJCSdkaW1ncmF5Jz0+JyM2OTY5NjknLAoJCQknZGltZ3JleSc9PicjNjk2OTY5JywKCQkJJ2RvZGdlcmJsdWUnPT4nIzFlOTBmZicsCgkJCSdmaXJlYnJpY2snPT4nI2IyMjIyMicsCgkJCSdmbG9yYWx3aGl0ZSc9PicjZmZmYWYwJywKCQkJJ2ZvcmVzdGdyZWVuJz0+JyMyMjhiMjInLAoJCQknZnVjaHNpYSc9PicjZmYwMGZmJywKCQkJJ2dhaW5zYm9ybyc9PicjZGNkY2RjJywKCQkJJ2dob3N0d2hpdGUnPT4nI2Y4ZjhmZicsCgkJCSdnb2xkJz0+JyNmZmQ3MDAnLAoJCQknZ29sZGVucm9kJz0+JyNkYWE1MjAnLAoJCQknZ3JheSc9PicjODA4MDgwJywKCQkJJ2dyZXknPT4nIzgwODA4MCcsCgkJCSdncmVlbic9PicjMDA4MDAwJywKCQkJJ2dyZWVueWVsbG93Jz0+JyNhZGZmMmYnLAoJCQknaG9uZXlkZXcnPT4nI2YwZmZmMCcsCgkJCSdob3RwaW5rJz0+JyNmZjY5YjQnLAoJCQknaW5kaWFucmVkJz0+JyNjZDVjNWMnLAoJCQknaW5kaWdvJz0+JyM0YjAwODInLAoJCQknaXZvcnknPT4nI2ZmZmZmMCcsCgkJCSdraGFraSc9PicjZjBlNjhjJywKCQkJJ2xhdmVuZGVyJz0+JyNlNmU2ZmEnLAoJCQknbGF2ZW5kZXJibHVzaCc9PicjZmZmMGY1JywKCQkJJ2xhd25ncmVlbic9PicjN2NmYzAwJywKCQkJJ2xlbW9uY2hpZmZvbic9PicjZmZmYWNkJywKCQkJJ2xpZ2h0Ymx1ZSc9PicjYWRkOGU2JywKCQkJJ2xpZ2h0Y29yYWwnPT4nI2YwODA4MCcsCgkJCSdsaWdodGN5YW4nPT4nI2UwZmZmZicsCgkJCSdsaWdodGdvbGRlbnJvZHllbGxvdyc9PicjZmFmYWQyJywKCQkJJ2xpZ2h0Z3JheSc9PicjZDNkM2QzJywKCQkJJ2xpZ2h0Z3JleSc9PicjZDNkM2QzJywKCQkJJ2xpZ2h0Z3JlZW4nPT4nIzkwZWU5MCcsCgkJCSdsaWdodHBpbmsnPT4nI2ZmYjZjMScsCgkJCSdsaWdodHNhbG1vbic9PicjZmZhMDdhJywKCQkJJ2xpZ2h0c2VhZ3JlZW4nPT4nIzIwYjJhYScsCgkJCSdsaWdodHNreWJsdWUnPT4nIzg3Y2VmYScsCgkJCSdsaWdodHNsYXRlZ3JheSc9PicjNzc4ODk5JywKCQkJJ2xpZ2h0c2xhdGVncmV5Jz0+JyM3Nzg4OTknLAoJCQknbGlnaHRzdGVlbGJsdWUnPT4nI2IwYzRkZScsCgkJCSdsaWdodHllbGxvdyc9PicjZmZmZmUwJywKCQkJJ2xpbWUnPT4nIzAwZmYwMCcsCgkJCSdsaW1lZ3JlZW4nPT4nIzMyY2QzMicsCgkJCSdsaW5lbic9PicjZmFmMGU2JywKCQkJJ21hZ2VudGEnPT4nI2ZmMDBmZicsCgkJCSdtYXJvb24nPT4nIzgwMDAwMCcsCgkJCSdtZWRpdW1hcXVhbWFyaW5lJz0+JyM2NmNkYWEnLAoJCQknbWVkaXVtYmx1ZSc9PicjMDAwMGNkJywKCQkJJ21lZGl1bW9yY2hpZCc9PicjYmE1NWQzJywKCQkJJ21lZGl1bXB1cnBsZSc9PicjOTM3MGQ4JywKCQkJJ21lZGl1bXNlYWdyZWVuJz0+JyMzY2IzNzEnLAoJCQknbWVkaXVtc2xhdGVibHVlJz0+JyM3YjY4ZWUnLAoJCQknbWVkaXVtc3ByaW5nZ3JlZW4nPT4nIzAwZmE5YScsCgkJCSdtZWRpdW10dXJxdW9pc2UnPT4nIzQ4ZDFjYycsCgkJCSdtZWRpdW12aW9sZXRyZWQnPT4nI2M3MTU4NScsCgkJCSdtaWRuaWdodGJsdWUnPT4nIzE5MTk3MCcsCgkJCSdtaW50Y3JlYW0nPT4nI2Y1ZmZmYScsCgkJCSdtaXN0eXJvc2UnPT4nI2ZmZTRlMScsCgkJCSdtb2NjYXNpbic9PicjZmZlNGI1JywKCQkJJ25hdmFqb3doaXRlJz0+JyNmZmRlYWQnLAoJCQknbmF2eSc9PicjMDAwMDgwJywKCQkJJ29sZGxhY2UnPT4nI2ZkZjVlNicsCgkJCSdvbGl2ZSc9PicjODA4MDAwJywKCQkJJ29saXZlZHJhYic9PicjNmI4ZTIzJywKCQkJJ29yYW5nZSc9PicjZmZhNTAwJywKCQkJJ29yYW5nZXJlZCc9PicjZmY0NTAwJywKCQkJJ29yY2hpZCc9PicjZGE3MGQ2JywKCQkJJ3BhbGVnb2xkZW5yb2QnPT4nI2VlZThhYScsCgkJCSdwYWxlZ3JlZW4nPT4nIzk4ZmI5OCcsCgkJCSdwYWxldHVycXVvaXNlJz0+JyNhZmVlZWUnLAoJCQkncGFsZXZpb2xldHJlZCc9PicjZDg3MDkzJywKCQkJJ3BhcGF5YXdoaXAnPT4nI2ZmZWZkNScsCgkJCSdwZWFjaHB1ZmYnPT4nI2ZmZGFiOScsCgkJCSdwZXJ1Jz0+JyNjZDg1M2YnLAoJCQkncGluayc9PicjZmZjMGNiJywKCQkJJ3BsdW0nPT4nI2RkYTBkZCcsCgkJCSdwb3dkZXJibHVlJz0+JyNiMGUwZTYnLAoJCQkncHVycGxlJz0+JyM4MDAwODAnLAoJCQkncmVkJz0+JyNmZjAwMDAnLAoJCQkncm9zeWJyb3duJz0+JyNiYzhmOGYnLAoJCQkncm95YWxibHVlJz0+JyM0MTY5ZTEnLAoJCQknc2FkZGxlYnJvd24nPT4nIzhiNDUxMycsCgkJCSdzYWxtb24nPT4nI2ZhODA3MicsCgkJCSdzYW5keWJyb3duJz0+JyNmNGE0NjAnLAoJCQknc2VhZ3JlZW4nPT4nIzJlOGI1NycsCgkJCSdzZWFzaGVsbCc9PicjZmZmNWVlJywKCQkJJ3NpZW5uYSc9PicjYTA1MjJkJywKCQkJJ3NpbHZlcic9PicjYzBjMGMwJywKCQkJJ3NreWJsdWUnPT4nIzg3Y2VlYicsCgkJCSdzbGF0ZWJsdWUnPT4nIzZhNWFjZCcsCgkJCSdzbGF0ZWdyYXknPT4nIzcwODA5MCcsCgkJCSdzbGF0ZWdyZXknPT4nIzcwODA5MCcsCgkJCSdzbm93Jz0+JyNmZmZhZmEnLAoJCQknc3ByaW5nZ3JlZW4nPT4nIzAwZmY3ZicsCgkJCSdzdGVlbGJsdWUnPT4nIzQ2ODJiNCcsCgkJCSd0YW4nPT4nI2QyYjQ4YycsCgkJCSd0ZWFsJz0+JyMwMDgwODAnLAoJCQkndGhpc3RsZSc9PicjZDhiZmQ4JywKCQkJJ3RvbWF0byc9PicjZmY2MzQ3JywKCQkJJ3R1cnF1b2lzZSc9PicjNDBlMGQwJywKCQkJJ3Zpb2xldCc9PicjZWU4MmVlJywKCQkJJ3doZWF0Jz0+JyNmNWRlYjMnLAoJCQknd2hpdGUnPT4nI2ZmZmZmZicsCgkJCSd3aGl0ZXNtb2tlJz0+JyNmNWY1ZjUnLAoJCQkneWVsbG93Jz0+JyNmZmZmMDAnLAoJCQkneWVsbG93Z3JlZW4nPT4nIzlhY2QzMicKCQkpOwoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzT3duUHJvcGVydHkoJGNvbG9yKSB7CgkJcmV0dXJuIGlzc2V0KHNlbGY6OiRjb2xvcnNbJGNvbG9yXSk7Cgl9CgoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29sb3IoJGNvbG9yKSB7CgkJcmV0dXJuIHNlbGY6OiRjb2xvcnNbJGNvbG9yXTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Configurable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBDb25maWd1cmFibGUNCiAqDQogKiBAcGFja2FnZSBMZXNzDQogKiBAc3VicGFja2FnZSBDb3JlDQogKi8NCmFic3RyYWN0IGNsYXNzIExlc3NfQ29uZmlndXJhYmxlIHsNCg0KCS8qKg0KCSAqIEFycmF5IG9mIG9wdGlvbnMNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJG9wdGlvbnMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogQXJyYXkgb2YgZGVmYXVsdCBvcHRpb25zDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovDQoJcHJvdGVjdGVkICRkZWZhdWx0T3B0aW9ucyA9IGFycmF5KCk7DQoNCg0KCS8qKg0KCSAqIFNldCBvcHRpb25zDQoJICoNCgkgKiBJZiAkb3B0aW9ucyBpcyBhbiBvYmplY3QgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhbiBhcnJheSBieSBjYWxsZWQNCgkgKiBpdCdzIHRvQXJyYXkgbWV0aG9kLg0KCSAqDQoJICogQHRocm93cyBFeGNlcHRpb24NCgkgKiBAcGFyYW0gYXJyYXl8b2JqZWN0ICRvcHRpb25zDQoJICoNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9ucygkb3B0aW9ucyl7DQoJCSRvcHRpb25zID0gYXJyYXlfaW50ZXJzZWN0X2tleSgkb3B0aW9ucywkdGhpcy0+ZGVmYXVsdE9wdGlvbnMpOw0KCQkkdGhpcy0+b3B0aW9ucyA9IGFycmF5X21lcmdlKCR0aGlzLT5kZWZhdWx0T3B0aW9ucywgJHRoaXMtPm9wdGlvbnMsICRvcHRpb25zKTsNCgl9DQoNCg0KCS8qKg0KCSAqIEdldCBhbiBvcHRpb24gdmFsdWUgYnkgbmFtZQ0KCSAqDQoJICogSWYgdGhlIG9wdGlvbiBpcyBlbXB0eSBvciBub3Qgc2V0IGEgTlVMTCB2YWx1ZSB3aWxsIGJlIHJldHVybmVkLg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkbmFtZQ0KCSAqIEBwYXJhbSBtaXhlZCAkZGVmYXVsdCBEZWZhdWx0IHZhbHVlIGlmIGNvbmZpdXJhdGlvbiBvZiAkbmFtZSBpcyBub3QgcHJlc2VudA0KCSAqIEByZXR1cm4gbWl4ZWQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0T3B0aW9uKCRuYW1lLCAkZGVmYXVsdCA9IG51bGwpew0KCQlpZihpc3NldCgkdGhpcy0+b3B0aW9uc1skbmFtZV0pKXsNCgkJCXJldHVybiAkdGhpcy0+b3B0aW9uc1skbmFtZV07DQoJCX0NCgkJcmV0dXJuICRkZWZhdWx0Ow0KCX0NCg0KDQoJLyoqDQoJICogU2V0IGFuIG9wdGlvbg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkbmFtZQ0KCSAqIEBwYXJhbSBtaXhlZCAkdmFsdWUNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gc2V0T3B0aW9uKCRuYW1lLCAkdmFsdWUpew0KCQkkdGhpcy0+b3B0aW9uc1skbmFtZV0gPSAkdmFsdWU7DQoJfQ0KDQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Environment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgovKioKICogRW52aXJvbm1lbnQKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSBlbnZpcm9ubWVudAogKi8KY2xhc3MgTGVzc19FbnZpcm9ubWVudHsKCgkvL3B1YmxpYyAkcGF0aHMgPSBhcnJheSgpOwkJCQkvLyBvcHRpb24gLSB1bm1vZGlmaWVkIC0gcGF0aHMgdG8gc2VhcmNoIGZvciBpbXBvcnRzIG9uCgkvL3B1YmxpYyBzdGF0aWMgJGZpbGVzID0gYXJyYXkoKTsJCS8vIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGJlZW4gaW1wb3J0ZWQsIHVzZWQgZm9yIGltcG9ydC1vbmNlCgkvL3B1YmxpYyAkcm9vdHBhdGg7CQkJCQkJLy8gb3B0aW9uIC0gcm9vdHBhdGggdG8gYXBwZW5kIHRvIFVSTCdzCgkvL3B1YmxpYyBzdGF0aWMgJHN0cmljdEltcG9ydHMgPSBudWxsOwkvLyBvcHRpb24gLQoJLy9wdWJsaWMgJGluc2VjdXJlOwkJCQkJCS8vIG9wdGlvbiAtIHdoZXRoZXIgdG8gYWxsb3cgaW1wb3J0cyBmcm9tIGluc2VjdXJlIHNzbCBob3N0cwoJLy9wdWJsaWMgJHByb2Nlc3NJbXBvcnRzOwkJCQkvLyBvcHRpb24gLSB3aGV0aGVyIHRvIHByb2Nlc3MgaW1wb3J0cy4gaWYgZmFsc2UgdGhlbiBpbXBvcnRzIHdpbGwgbm90IGJlIGltcG9ydGVkCgkvL3B1YmxpYyAkamF2YXNjcmlwdEVuYWJsZWQ7CQkJLy8gb3B0aW9uIC0gd2hldGhlciBKYXZhU2NyaXB0IGlzIGVuYWJsZWQuIGlmIHVuZGVmaW5lZCwgZGVmYXVsdHMgdG8gdHJ1ZQoJLy9wdWJsaWMgJHVzZUZpbGVDYWNoZTsJCQkJCS8vIGJyb3dzZXIgb25seSAtIHdoZXRoZXIgdG8gdXNlIHRoZSBwZXIgZmlsZSBzZXNzaW9uIGNhY2hlCglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsJCQkJLy8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgZmlsZSAtIGZvciBlcnJvciByZXBvcnRpbmcgYW5kIGltcG9ydGluZyBhbmQgbWFraW5nIHVybHMgcmVsYXRpdmUgZXRjLgoKCXB1YmxpYyAkaW1wb3J0TXVsdGlwbGUgPSBmYWxzZTsgCQkvLyB3aGV0aGVyIHdlIGFyZSBjdXJyZW50bHkgaW1wb3J0aW5nIG11bHRpcGxlIGNvcGllcwoKCgkvKioKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljICRmcmFtZXMgPSBhcnJheSgpOwoKCS8qKgoJICogQHZhciBhcnJheQoJICovCglwdWJsaWMgJG1lZGlhQmxvY2tzID0gYXJyYXkoKTsKCgkvKioKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljICRtZWRpYVBhdGggPSBhcnJheSgpOwoKCXB1YmxpYyBzdGF0aWMgJHBhcmVuc1N0YWNrID0gMDsKCglwdWJsaWMgc3RhdGljICR0YWJMZXZlbCA9IDA7CgoJcHVibGljIHN0YXRpYyAkbGFzdFJ1bGUgPSBmYWxzZTsKCglwdWJsaWMgc3RhdGljICRfb3V0cHV0TWFwOwoKCXB1YmxpYyBzdGF0aWMgJG1peGluX3N0YWNrID0gMDsKCgkvKioKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljICRmdW5jdGlvbnMgPSBhcnJheSgpOwoKCglwdWJsaWMgZnVuY3Rpb24gSW5pdCgpewoKCQlzZWxmOjokcGFyZW5zU3RhY2sgPSAwOwoJCXNlbGY6OiR0YWJMZXZlbCA9IDA7CgkJc2VsZjo6JGxhc3RSdWxlID0gZmFsc2U7CgkJc2VsZjo6JG1peGluX3N0YWNrID0gMDsKCgkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSApewoKCQkJTGVzc19FbnZpcm9ubWVudDo6JF9vdXRwdXRNYXAgPSBhcnJheSgKCQkJCScsJwk9PiAnLCcsCgkJCQknOiAnID0+ICc6JywKCQkJCScnICA9PiAnJywKCQkJCScgJyA9PiAnICcsCgkJCQknOicgPT4gJyA6JywKCQkJCScrJyA9PiAnKycsCgkJCQknficgPT4gJ34nLAoJCQkJJz4nID0+ICc+JywKCQkJCSd8JyA9PiAnfCcsCgkJICAgICAgICAnXicgPT4gJ14nLAoJCSAgICAgICAgJ15eJyA9PiAnXl4nCgkJCSk7CgoJCX1lbHNlewoKCQkJTGVzc19FbnZpcm9ubWVudDo6JF9vdXRwdXRNYXAgPSBhcnJheSgKCQkJCScsJwk9PiAnLCAnLAoJCQkJJzogJyA9PiAnOiAnLAoJCQkJJycgID0+ICcnLAoJCQkJJyAnID0+ICcgJywKCQkJCSc6JyA9PiAnIDonLAoJCQkJJysnID0+ICcgKyAnLAoJCQkJJ34nID0+ICcgfiAnLAoJCQkJJz4nID0+ICcgPiAnLAoJCQkJJ3wnID0+ICd8JywKCQkgICAgICAgICdeJyA9PiAnIF4gJywKCQkgICAgICAgICdeXicgPT4gJyBeXiAnCgkJCSk7CgoJCX0KCX0KCgoJcHVibGljIGZ1bmN0aW9uIGNvcHlFdmFsRW52KCRmcmFtZXMgPSBhcnJheSgpICl7CgkJJG5ld19lbnYgPSBuZXcgTGVzc19FbnZpcm9ubWVudCgpOwoJCSRuZXdfZW52LT5mcmFtZXMgPSAkZnJhbWVzOwoJCXJldHVybiAkbmV3X2VudjsKCX0KCgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc01hdGhPbigpewoJCXJldHVybiAhTGVzc19QYXJzZXI6OiRvcHRpb25zWydzdHJpY3RNYXRoJ10gfHwgTGVzc19FbnZpcm9ubWVudDo6JHBhcmVuc1N0YWNrOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNQYXRoUmVsYXRpdmUoJHBhdGgpewoJCXJldHVybiAhcHJlZ19tYXRjaCgnL14oPzpbYS16LV0rOnxcLykvJywkcGF0aCk7Cgl9CgoKCS8qKgoJICogQ2Fub25pY2FsaXplIGEgcGF0aCBieSByZXNvbHZpbmcgcmVmZXJlbmNlcyB0byAnLy4vJywgJy8uLi8nCgkgKiBEb2VzIG5vdCByZW1vdmUgbGVhZGluZyAiLi4vIgoJICogQHBhcmFtIHN0cmluZyBwYXRoIG9yIHVybAoJICogQHJldHVybiBzdHJpbmcgQ2Fub25pY2FsaXplZCBwYXRoCgkgKgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgoJHBhdGgpewoKCQkkc2VnbWVudHMgPSBleHBsb2RlKCcvJywkcGF0aCk7CgkJJHNlZ21lbnRzID0gYXJyYXlfcmV2ZXJzZSgkc2VnbWVudHMpOwoKCQkkcGF0aCA9IGFycmF5KCk7CgkJJHBhdGhfbGVuID0gMDsKCgkJd2hpbGUoICRzZWdtZW50cyApewoJCQkkc2VnbWVudCA9IGFycmF5X3BvcCgkc2VnbWVudHMpOwoJCQlzd2l0Y2goICRzZWdtZW50ICkgewoKCQkJCWNhc2UgJy4nOgoJCQkJYnJlYWs7CgoJCQkJY2FzZSAnLi4nOgoJCQkJCWlmKCAhJHBhdGhfbGVuIHx8ICggJHBhdGhbJHBhdGhfbGVuLTFdID09PSAnLi4nKSApewoJCQkJCQkkcGF0aFtdID0gJHNlZ21lbnQ7CgkJCQkJCSRwYXRoX2xlbisrOwoJCQkJCX1lbHNlewoJCQkJCQlhcnJheV9wb3AoJHBhdGgpOwoJCQkJCQkkcGF0aF9sZW4tLTsKCQkJCQl9CgkJCQlicmVhazsKCgkJCQlkZWZhdWx0OgoJCQkJCSRwYXRoW10gPSAkc2VnbWVudDsKCQkJCQkkcGF0aF9sZW4rKzsKCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQlyZXR1cm4gaW1wbG9kZSgnLycsJHBhdGgpOwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gdW5zaGlmdEZyYW1lKCRmcmFtZSl7CgkJYXJyYXlfdW5zaGlmdCgkdGhpcy0+ZnJhbWVzLCAkZnJhbWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzaGlmdEZyYW1lKCl7CgkJcmV0dXJuIGFycmF5X3NoaWZ0KCR0aGlzLT5mcmFtZXMpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/Chunk.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBDaHVuayBFeGNlcHRpb24NCiAqDQogKiBAcGFja2FnZSBMZXNzDQogKiBAc3VicGFja2FnZSBleGNlcHRpb24NCiAqLw0KY2xhc3MgTGVzc19FeGNlcHRpb25fQ2h1bmsgZXh0ZW5kcyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXJ7DQoNCg0KCXByb3RlY3RlZCAkcGFyc2VyQ3VycmVudEluZGV4ID0gMDsNCg0KCXByb3RlY3RlZCAkZW1pdEZyb20gPSAwOw0KDQoJcHJvdGVjdGVkICRpbnB1dF9sZW47DQoNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRpbnB1dA0KCSAqIEBwYXJhbSBFeGNlcHRpb24gJHByZXZpb3VzIFByZXZpb3VzIGV4Y2VwdGlvbg0KCSAqIEBwYXJhbSBpbnRlZ2VyICRpbmRleCBUaGUgY3VycmVudCBwYXJzZXIgaW5kZXgNCgkgKiBAcGFyYW0gTGVzc19GaWxlSW5mb3xzdHJpbmcgJGN1cnJlbnRGaWxlIFRoZSBmaWxlDQoJICogQHBhcmFtIGludGVnZXIgJGNvZGUgVGhlIGV4Y2VwdGlvbiBjb2RlDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpbnB1dCwgRXhjZXB0aW9uICRwcmV2aW91cyA9IG51bGwsICRpbmRleCA9IG51bGwsICRjdXJyZW50RmlsZSA9IG51bGwsICRjb2RlID0gMCl7DQoNCgkJJHRoaXMtPm1lc3NhZ2UgPSAnUGFyc2VFcnJvcjogVW5leHBlY3RlZCBpbnB1dCc7IC8vZGVmYXVsdCBtZXNzYWdlDQoNCgkJJHRoaXMtPmluZGV4ID0gJGluZGV4Ow0KDQoJCSR0aGlzLT5jdXJyZW50RmlsZSA9ICRjdXJyZW50RmlsZTsNCg0KCQkkdGhpcy0+aW5wdXQgPSAkaW5wdXQ7DQoJCSR0aGlzLT5pbnB1dF9sZW4gPSBzdHJsZW4oJGlucHV0KTsNCg0KCQkkdGhpcy0+Q2h1bmtzKCk7DQoJCSR0aGlzLT5nZW5NZXNzYWdlKCk7DQoJfQ0KDQoNCgkvKioNCgkgKiBTZWUgbGVzcy5qcyBjaHVua3MoKQ0KCSAqIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdGhlIGNodW5rcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIENodW5rcygpew0KCQkkbGV2ZWwgPSAwOw0KCQkkcGFyZW5MZXZlbCA9IDA7DQoJCSRsYXN0TXVsdGlDb21tZW50RW5kQnJhY2UgPSBudWxsOw0KCQkkbGFzdE9wZW5pbmcgPSBudWxsOw0KCQkkbGFzdE11bHRpQ29tbWVudCA9IG51bGw7DQoJCSRsYXN0UGFyZW4gPSBudWxsOw0KDQoJCWZvciggJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA9IDA7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuOyAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KysgKXsNCgkJCSRjYyA9ICR0aGlzLT5DaGFyQ29kZSgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KTsNCgkJCWlmICgoKCRjYyA+PSA5NykgJiYgKCRjYyA8PSAxMjIpKSB8fCAoJGNjIDwgMzQpKSB7DQoJCQkJLy8gYS16IG9yIHdoaXRlc3BhY2UNCgkJCQljb250aW51ZTsNCgkJCX0NCg0KCQkJc3dpdGNoICgkY2MpIHsNCg0KCQkJCS8vICgNCgkJCQljYXNlIDQwOg0KCQkJCQkkcGFyZW5MZXZlbCsrOw0KCQkJCQkkbGFzdFBhcmVuID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleDsNCgkJCQkJY29udGludWU7DQoNCgkJCQkvLyApDQoJCQkJY2FzZSA0MToNCgkJCQkJJHBhcmVuTGV2ZWwtLTsNCgkJCQkJaWYoICRwYXJlbkxldmVsIDwgMCApew0KCQkJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCJtaXNzaW5nIG9wZW5pbmcgYChgIik7DQoJCQkJCX0NCgkJCQkJY29udGludWU7DQoNCgkJCQkvLyA7DQoJCQkJY2FzZSA1OToNCgkJCQkJLy9pZiAoISRwYXJlbkxldmVsKSB7ICR0aGlzLT5lbWl0Q2h1bmsoKTsJfQ0KCQkJCQljb250aW51ZTsNCg0KCQkJCS8vIHsNCgkJCQljYXNlIDEyMzoNCgkJCQkJJGxldmVsKys7DQoJCQkJCSRsYXN0T3BlbmluZyA9ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXg7DQoJCQkJCWNvbnRpbnVlOw0KDQoJCQkJLy8gfQ0KCQkJCWNhc2UgMTI1Og0KCQkJCQkkbGV2ZWwtLTsNCgkJCQkJaWYoICRsZXZlbCA8IDAgKXsNCgkJCQkJCXJldHVybiAkdGhpcy0+ZmFpbCgibWlzc2luZyBvcGVuaW5nIGB7YCIpOw0KDQoJCQkJCX0NCgkJCQkJLy9pZiAoISRsZXZlbCAmJiAhJHBhcmVuTGV2ZWwpIHsgJHRoaXMtPmVtaXRDaHVuaygpOyB9DQoJCQkJCWNvbnRpbnVlOw0KCQkJCS8vIFwNCgkJCQljYXNlIDkyOg0KCQkJCQlpZiAoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA8ICR0aGlzLT5pbnB1dF9sZW4gLSAxKSB7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrKzsgY29udGludWU7IH0NCgkJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCJ1bmVzY2FwZWQgYFxcYCIpOw0KDQoJCQkJLy8gIiwgJyBhbmQgYA0KCQkJCWNhc2UgMzQ6DQoJCQkJY2FzZSAzOToNCgkJCQljYXNlIDk2Og0KCQkJCQkkbWF0Y2hlZCA9IDA7DQoJCQkJCSRjdXJyZW50Q2h1bmtTdGFydEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleDsNCgkJCQkJZm9yICgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArIDE7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuOyAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KyspIHsNCgkJCQkJCSRjYzIgPSAkdGhpcy0+Q2hhckNvZGUoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCk7DQoJCQkJCQlpZiAoJGNjMiA+IDk2KSB7IGNvbnRpbnVlOyB9DQoJCQkJCQlpZiAoJGNjMiA9PSAkY2MpIHsgJG1hdGNoZWQgPSAxOyBicmVhazsgfQ0KCQkJCQkJaWYgKCRjYzIgPT0gOTIpIHsgICAgICAgIC8vIFwNCgkJCQkJCQlpZiAoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA9PSAkdGhpcy0+aW5wdXRfbGVuIC0gMSkgew0KCQkJCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoInVuZXNjYXBlZCBgXFxgIik7DQoJCQkJCQkJfQ0KCQkJCQkJCSR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrKzsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQlpZiAoJG1hdGNoZWQpIHsgY29udGludWU7IH0NCgkJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCJ1bm1hdGNoZWQgYCIgLiBjaHIoJGNjKSAuICJgIiwgJGN1cnJlbnRDaHVua1N0YXJ0SW5kZXgpOw0KDQoJCQkJLy8gLywgY2hlY2sgZm9yIGNvbW1lbnQNCgkJCQljYXNlIDQ3Og0KCQkJCQlpZiAoJHBhcmVuTGV2ZWwgfHwgKCR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPT0gJHRoaXMtPmlucHV0X2xlbiAtIDEpKSB7IGNvbnRpbnVlOyB9DQoJCQkJCSRjYzIgPSAkdGhpcy0+Q2hhckNvZGUoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCsxKTsNCgkJCQkJaWYgKCRjYzIgPT0gNDcpIHsNCgkJCQkJCS8vIC8vLCBmaW5kIGxuZmVlZA0KCQkJCQkJZm9yICgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArIDI7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuOyAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KyspIHsNCgkJCQkJCQkkY2MyID0gJHRoaXMtPkNoYXJDb2RlKCR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgpOw0KCQkJCQkJCWlmICgoJGNjMiA8PSAxMykgJiYgKCgkY2MyID09IDEwKSB8fCAoJGNjMiA9PSAxMykpKSB7IGJyZWFrOyB9DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSBpZiAoJGNjMiA9PSA0Mikgew0KCQkJCQkJLy8gLyosIGZpbmQgKi8NCgkJCQkJCSRsYXN0TXVsdGlDb21tZW50ID0gJGN1cnJlbnRDaHVua1N0YXJ0SW5kZXggPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4Ow0KCQkJCQkJZm9yICgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ID0gJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCArIDI7ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPCAkdGhpcy0+aW5wdXRfbGVuIC0gMTsgJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCsrKSB7DQoJCQkJCQkJJGNjMiA9ICR0aGlzLT5DaGFyQ29kZSgkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4KTsNCgkJCQkJCQlpZiAoJGNjMiA9PSAxMjUpIHsgJGxhc3RNdWx0aUNvbW1lbnRFbmRCcmFjZSA9ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXg7IH0NCgkJCQkJCQlpZiAoJGNjMiAhPSA0MikgeyBjb250aW51ZTsgfQ0KCQkJCQkJCWlmICgkdGhpcy0+Q2hhckNvZGUoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCsxKSA9PSA0NykgeyBicmVhazsgfQ0KCQkJCQkJfQ0KCQkJCQkJaWYgKCR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggPT0gJHRoaXMtPmlucHV0X2xlbiAtIDEpIHsNCgkJCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoIm1pc3NpbmcgY2xvc2luZyBgKi9gIiwgJGN1cnJlbnRDaHVua1N0YXJ0SW5kZXgpOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWNvbnRpbnVlOw0KDQoJCQkJLy8gKiwgY2hlY2sgZm9yIHVubWF0Y2hlZCAqLw0KCQkJCWNhc2UgNDI6DQoJCQkJCWlmICgoJHRoaXMtPnBhcnNlckN1cnJlbnRJbmRleCA8ICR0aGlzLT5pbnB1dF9sZW4gLSAxKSAmJiAoJHRoaXMtPkNoYXJDb2RlKCR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXgrMSkgPT0gNDcpKSB7DQoJCQkJCQlyZXR1cm4gJHRoaXMtPmZhaWwoInVubWF0Y2hlZCBgLypgIik7DQoJCQkJCX0NCgkJCQkJY29udGludWU7DQoJCQl9DQoJCX0NCg0KCQlpZiggJGxldmVsICE9PSAwICl7DQoJCQlpZiggKCRsYXN0TXVsdGlDb21tZW50ID4gJGxhc3RPcGVuaW5nKSAmJiAoJGxhc3RNdWx0aUNvbW1lbnRFbmRCcmFjZSA+ICRsYXN0TXVsdGlDb21tZW50KSApew0KCQkJCXJldHVybiAkdGhpcy0+ZmFpbCgibWlzc2luZyBjbG9zaW5nIGB9YCBvciBgKi9gIiwgJGxhc3RPcGVuaW5nKTsNCgkJCX0gZWxzZSB7DQoJCQkJcmV0dXJuICR0aGlzLT5mYWlsKCJtaXNzaW5nIGNsb3NpbmcgYH1gIiwgJGxhc3RPcGVuaW5nKTsNCgkJCX0NCgkJfSBlbHNlIGlmICggJHBhcmVuTGV2ZWwgIT09IDAgKXsNCgkJCXJldHVybiAkdGhpcy0+ZmFpbCgibWlzc2luZyBjbG9zaW5nIGApYCIsICRsYXN0UGFyZW4pOw0KCQl9DQoNCg0KCQkvL2NodW5rIGRpZG4ndCBmYWlsDQoNCg0KCQkvLyR0aGlzLT5lbWl0Q2h1bmsodHJ1ZSk7DQoJfQ0KDQoJcHVibGljIGZ1bmN0aW9uIENoYXJDb2RlKCRwb3Mpew0KCQlyZXR1cm4gb3JkKCR0aGlzLT5pbnB1dFskcG9zXSk7DQoJfQ0KDQoNCglwdWJsaWMgZnVuY3Rpb24gZmFpbCggJG1zZywgJGluZGV4ID0gbnVsbCApew0KDQoJCWlmKCAhJGluZGV4ICl7DQoJCQkkdGhpcy0+aW5kZXggPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4Ow0KCQl9ZWxzZXsNCgkJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsNCgkJfQ0KCQkkdGhpcy0+bWVzc2FnZSA9ICdQYXJzZUVycm9yOiAnLiRtc2c7DQoJfQ0KDQoNCgkvKg0KCWZ1bmN0aW9uIGVtaXRDaHVuayggJGZvcmNlID0gZmFsc2UgKXsNCgkJJGxlbiA9ICR0aGlzLT5wYXJzZXJDdXJyZW50SW5kZXggLSAkdGhpcy0+ZW1pdEZyb207DQoJCWlmICgoKCRsZW4gPCA1MTIpICYmICEkZm9yY2UpIHx8ICEkbGVuKSB7DQoJCQlyZXR1cm47DQoJCX0NCgkJJGNodW5rc1tdID0gc3Vic3RyKCR0aGlzLT5pbnB1dCwgJHRoaXMtPmVtaXRGcm9tLCAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ICsgMSAtICR0aGlzLT5lbWl0RnJvbSApOw0KCQkkdGhpcy0+ZW1pdEZyb20gPSAkdGhpcy0+cGFyc2VyQ3VycmVudEluZGV4ICsgMTsNCgl9DQoJKi8NCg0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/Compiler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBDb21waWxlciBFeGNlcHRpb24NCiAqDQogKiBAcGFja2FnZSBMZXNzDQogKiBAc3VicGFja2FnZSBleGNlcHRpb24NCiAqLw0KY2xhc3MgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIgZXh0ZW5kcyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXJ7DQoNCn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/Compiler.php.part</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBDb21waWxlciBFeGNlcHRpb24NCiAqDQogKiBAcGFja2FnZSBMZXNzDQogKiBAc3VicGFja2FnZSBleGNlcHRpb24NCiAqLw0KY2xhc3MgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIgZXh0ZW5kcyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXJ7DQoNCn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Exception/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBQYXJzZXIgRXhjZXB0aW9uDQogKg0KICogQHBhY2thZ2UgTGVzcw0KICogQHN1YnBhY2thZ2UgZXhjZXB0aW9uDQogKi8NCmNsYXNzIExlc3NfRXhjZXB0aW9uX1BhcnNlciBleHRlbmRzIEV4Y2VwdGlvbnsNCg0KCS8qKg0KCSAqIFRoZSBjdXJyZW50IGZpbGUNCgkgKg0KCSAqIEB2YXIgTGVzc19JbXBvcnRlZEZpbGUNCgkgKi8NCglwdWJsaWMgJGN1cnJlbnRGaWxlOw0KDQoJLyoqDQoJICogVGhlIGN1cnJlbnQgcGFyc2VyIGluZGV4DQoJICoNCgkgKiBAdmFyIGludGVnZXINCgkgKi8NCglwdWJsaWMgJGluZGV4Ow0KDQoJcHJvdGVjdGVkICRpbnB1dDsNCg0KCXByb3RlY3RlZCAkZGV0YWlscyA9IGFycmF5KCk7DQoNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlDQoJICogQHBhcmFtIEV4Y2VwdGlvbiAkcHJldmlvdXMgUHJldmlvdXMgZXhjZXB0aW9uDQoJICogQHBhcmFtIGludGVnZXIgJGluZGV4IFRoZSBjdXJyZW50IHBhcnNlciBpbmRleA0KCSAqIEBwYXJhbSBMZXNzX0ZpbGVJbmZvfHN0cmluZyAkY3VycmVudEZpbGUgVGhlIGZpbGUNCgkgKiBAcGFyYW0gaW50ZWdlciAkY29kZSBUaGUgZXhjZXB0aW9uIGNvZGUNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1lc3NhZ2UgPSBudWxsLCBFeGNlcHRpb24gJHByZXZpb3VzID0gbnVsbCwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlID0gbnVsbCwgJGNvZGUgPSAwKXsNCg0KCQlpZiAoUEhQX1ZFUlNJT05fSUQgPCA1MDMwMCkgew0KCQkJJHRoaXMtPnByZXZpb3VzID0gJHByZXZpb3VzOw0KCQkJcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUpOw0KCQl9IGVsc2Ugew0KCQkJcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUsICRwcmV2aW91cyk7DQoJCX0NCg0KCQkkdGhpcy0+Y3VycmVudEZpbGUgPSAkY3VycmVudEZpbGU7DQoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsNCg0KCQkkdGhpcy0+Z2VuTWVzc2FnZSgpOw0KCX0NCg0KDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldElucHV0KCl7DQoNCgkJaWYoICEkdGhpcy0+aW5wdXQgJiYgJHRoaXMtPmN1cnJlbnRGaWxlICYmICR0aGlzLT5jdXJyZW50RmlsZVsnZmlsZW5hbWUnXSAmJiBmaWxlX2V4aXN0cygkdGhpcy0+Y3VycmVudEZpbGVbJ2ZpbGVuYW1lJ10pICl7DQoJCQkkdGhpcy0+aW5wdXQgPSBmaWxlX2dldF9jb250ZW50cyggJHRoaXMtPmN1cnJlbnRGaWxlWydmaWxlbmFtZSddICk7DQoJCX0NCgl9DQoNCg0KDQoJLyoqDQoJICogQ29udmVydHMgdGhlIGV4Y2VwdGlvbiB0byBzdHJpbmcNCgkgKg0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdlbk1lc3NhZ2UoKXsNCg0KCQlpZiggJHRoaXMtPmN1cnJlbnRGaWxlICYmICR0aGlzLT5jdXJyZW50RmlsZVsnZmlsZW5hbWUnXSApew0KCQkJJHRoaXMtPm1lc3NhZ2UgLj0gJyBpbiAnLmJhc2VuYW1lKCR0aGlzLT5jdXJyZW50RmlsZVsnZmlsZW5hbWUnXSk7DQoJCX0NCg0KCQlpZiggJHRoaXMtPmluZGV4ICE9PSBudWxsICl7DQoJCQkkdGhpcy0+Z2V0SW5wdXQoKTsNCgkJCWlmKCAkdGhpcy0+aW5wdXQgKXsNCgkJCQkkbGluZSA9IHNlbGY6OmdldExpbmVOdW1iZXIoKTsNCgkJCQkkdGhpcy0+bWVzc2FnZSAuPSAnIG9uIGxpbmUgJy4kbGluZS4nLCBjb2x1bW4gJy5zZWxmOjpnZXRDb2x1bW4oKTsNCg0KCQkJCSRsaW5lcyA9IGV4cGxvZGUoIlxuIiwkdGhpcy0+aW5wdXQpOw0KDQoJCQkJJGNvdW50ID0gY291bnQoJGxpbmVzKTsNCgkJCQkkc3RhcnRfbGluZSA9IG1heCgwLCAkbGluZS0zKTsNCgkJCQkkbGFzdF9saW5lID0gbWluKCRjb3VudCwgJHN0YXJ0X2xpbmUrNik7DQoJCQkJJG51bV9sZW4gPSBzdHJsZW4oJGxhc3RfbGluZSk7DQoJCQkJZm9yKCAkaSA9ICRzdGFydF9saW5lOyAkaSA8ICRsYXN0X2xpbmU7ICRpKysgKXsNCgkJCQkJJHRoaXMtPm1lc3NhZ2UgLj0gIlxuIi5zdHJfcGFkKCRpKzEsJG51bV9sZW4sJzAnLFNUUl9QQURfTEVGVCkuJ3wgJy4kbGluZXNbJGldOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJfQ0KDQoJLyoqDQoJICogUmV0dXJucyB0aGUgbGluZSBudW1iZXIgdGhlIGVycm9yIHdhcyBlbmNvdW50ZXJlZA0KCSAqDQoJICogQHJldHVybiBpbnRlZ2VyDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldExpbmVOdW1iZXIoKXsNCgkJaWYoICR0aGlzLT5pbmRleCApew0KCQkJLy8gaHR0cHM6Ly9idWdzLnBocC5uZXQvYnVnLnBocD9pZD00OTc5MA0KCQkJaWYgKGluaV9nZXQoIm1ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQiKSkgew0KCQkJCXJldHVybiBzdWJzdHJfY291bnQoc3Vic3RyKCR0aGlzLT5pbnB1dCwgMCwgJHRoaXMtPmluZGV4KSwgIlxuIikgKyAxOw0KCQkJfSBlbHNlIHsNCgkJCQlyZXR1cm4gc3Vic3RyX2NvdW50KCR0aGlzLT5pbnB1dCwgIlxuIiwgMCwgJHRoaXMtPmluZGV4KSArIDE7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIDE7DQoJfQ0KDQoNCgkvKioNCgkgKiBSZXR1cm5zIHRoZSBjb2x1bW4gdGhlIGVycm9yIHdhcyBlbmNvdW50ZXJlZA0KCSAqDQoJICogQHJldHVybiBpbnRlZ2VyDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldENvbHVtbigpew0KDQoJCSRwYXJ0ID0gc3Vic3RyKCR0aGlzLT5pbnB1dCwgMCwgJHRoaXMtPmluZGV4KTsNCgkJJHBvcyA9IHN0cnJwb3MoJHBhcnQsIlxuIik7DQoJCXJldHVybiAkdGhpcy0+aW5kZXggLSAkcG9zOw0KCX0NCg0KfQ0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBCdWlsdGluIGZ1bmN0aW9ucwogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIGZ1bmN0aW9uCiAqIEBzZWUgaHR0cDovL2xlc3Njc3Mub3JnL2Z1bmN0aW9ucy8KICovCmNsYXNzIExlc3NfRnVuY3Rpb25zewoKCXB1YmxpYyAkZW52OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgoJZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGVudiwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKXsKCQkkdGhpcy0+ZW52ID0gJGVudjsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJG9wCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb3BlcmF0ZSggJG9wLCAkYSwgJGIgKXsKCQlzd2l0Y2ggKCRvcCkgewoJCQljYXNlICcrJzogcmV0dXJuICRhICsgJGI7CgkJCWNhc2UgJy0nOiByZXR1cm4gJGEgLSAkYjsKCQkJY2FzZSAnKic6IHJldHVybiAkYSAqICRiOwoJCQljYXNlICcvJzogcmV0dXJuICRhIC8gJGI7CgkJfQoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2xhbXAoJHZhbCwgJG1heCA9IDEpewoJCXJldHVybiBtaW4oIG1heCgkdmFsLCAwKSwgJG1heCk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm91bmQoICR2YWx1ZSApewoKCQlpZiggJHZhbHVlID09PSAwICl7CgkJCXJldHVybiAkdmFsdWU7CgkJfQoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydudW1QcmVjaXNpb24nXSApewoJCQkkcCA9IHBvdygxMCwgTGVzc19QYXJzZXI6OiRvcHRpb25zWydudW1QcmVjaXNpb24nXSk7CgkJCXJldHVybiByb3VuZCggJHZhbHVlICogJHApIC8gJHA7CgkJfQoJCXJldHVybiAkdmFsdWU7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBudW1iZXIoJG4pewoKCQlpZiAoJG4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSB7CgkJCXJldHVybiBmbG9hdHZhbCggJG4tPnVuaXQtPmlzKCclJykgPyAkbi0+dmFsdWUgLyAxMDAgOiAkbi0+dmFsdWUpOwoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkbikpIHsKCQkJcmV0dXJuICRuOwoJCX0gZWxzZSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigiY29sb3IgZnVuY3Rpb25zIHRha2UgbnVtYmVycyBhcyBwYXJhbWV0ZXJzIik7CgkJfQoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2NhbGVkKCRuLCAkc2l6ZSA9IDI1NSApewoJCWlmKCAkbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24gJiYgJG4tPnVuaXQtPmlzKCclJykgKXsKCQkJcmV0dXJuIChmbG9hdCkkbi0+dmFsdWUgKiAkc2l6ZSAvIDEwMDsKCQl9IGVsc2UgewoJCQlyZXR1cm4gTGVzc19GdW5jdGlvbnM6Om51bWJlcigkbik7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiByZ2IgKCRyID0gbnVsbCwgJGcgPSBudWxsLCAkYiA9IG51bGwpewoJCWlmIChpc19udWxsKCRyKSB8fCBpc19udWxsKCRnKSB8fCBpc19udWxsKCRiKSkgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoInJnYiBleHBlY3RzIHRocmVlIHBhcmFtZXRlcnMiKTsKCQl9CgkJcmV0dXJuICR0aGlzLT5yZ2JhKCRyLCAkZywgJGIsIDEuMCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJnYmEoJHIgPSBudWxsLCAkZyA9IG51bGwsICRiID0gbnVsbCwgJGEgPSBudWxsKXsKCQkkcmdiID0gYXJyYXkoJHIsICRnLCAkYik7CgkJJHJnYiA9IGFycmF5X21hcChhcnJheSgnTGVzc19GdW5jdGlvbnMnLCdzY2FsZWQnKSwkcmdiKTsKCgkJJGEgPSBzZWxmOjpudW1iZXIoJGEpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0NvbG9yKCRyZ2IsICRhKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaHNsKCRoLCAkcywgJGwpewoJCXJldHVybiAkdGhpcy0+aHNsYSgkaCwgJHMsICRsLCAxLjApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBoc2xhKCRoLCAkcywgJGwsICRhKXsKCgkJJGggPSBmbW9kKHNlbGY6Om51bWJlcigkaCksIDM2MCkgLyAzNjA7IC8vIENsYXNzaWMgJSBvcGVyYXRvciB3aWxsIGNoYW5nZSBmbG9hdCB0byBpbnQKCQkkcyA9IHNlbGY6OmNsYW1wKHNlbGY6Om51bWJlcigkcykpOwoJCSRsID0gc2VsZjo6Y2xhbXAoc2VsZjo6bnVtYmVyKCRsKSk7CgkJJGEgPSBzZWxmOjpjbGFtcChzZWxmOjpudW1iZXIoJGEpKTsKCgkJJG0yID0gJGwgPD0gMC41ID8gJGwgKiAoJHMgKyAxKSA6ICRsICsgJHMgLSAkbCAqICRzOwoKCQkkbTEgPSAkbCAqIDIgLSAkbTI7CgoJCXJldHVybiAkdGhpcy0+cmdiYSggc2VsZjo6aHNsYV9odWUoJGggKyAxLzMsICRtMSwgJG0yKSAqIDI1NSwKCQkJCQkJCXNlbGY6OmhzbGFfaHVlKCRoLCAkbTEsICRtMikgKiAyNTUsCgkJCQkJCQlzZWxmOjpoc2xhX2h1ZSgkaCAtIDEvMywgJG0xLCAkbTIpICogMjU1LAoJCQkJCQkJJGEpOwoJfQoKCS8qKgoJICogQHBhcmFtIGRvdWJsZSAkaAoJICovCglwdWJsaWMgZnVuY3Rpb24gaHNsYV9odWUoJGgsICRtMSwgJG0yKXsKCQkkaCA9ICRoIDwgMCA/ICRoICsgMSA6ICgkaCA+IDEgPyAkaCAtIDEgOiAkaCk7CgkJaWYJICAoJGggKiA2IDwgMSkgcmV0dXJuICRtMSArICgkbTIgLSAkbTEpICogJGggKiA2OwoJCWVsc2UgaWYgKCRoICogMiA8IDEpIHJldHVybiAkbTI7CgkJZWxzZSBpZiAoJGggKiAzIDwgMikgcmV0dXJuICRtMSArICgkbTIgLSAkbTEpICogKDIvMyAtICRoKSAqIDY7CgkJZWxzZQkJCQkgcmV0dXJuICRtMTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaHN2KCRoLCAkcywgJHYpIHsKCQlyZXR1cm4gJHRoaXMtPmhzdmEoJGgsICRzLCAkdiwgMS4wKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBkb3VibGUgJGEKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGhzdmEoJGgsICRzLCAkdiwgJGEpIHsKCQkkaCA9ICgoTGVzc19GdW5jdGlvbnM6Om51bWJlcigkaCkgJSAzNjApIC8gMzYwICkgKiAzNjA7CgkJJHMgPSBMZXNzX0Z1bmN0aW9uczo6bnVtYmVyKCRzKTsKCQkkdiA9IExlc3NfRnVuY3Rpb25zOjpudW1iZXIoJHYpOwoJCSRhID0gTGVzc19GdW5jdGlvbnM6Om51bWJlcigkYSk7CgoJCSRpID0gZmxvb3IoKCRoIC8gNjApICUgNik7CgkJJGYgPSAoJGggLyA2MCkgLSAkaTsKCgkJJHZzID0gYXJyYXkoICR2LAoJCQkJICAkdiAqICgxIC0gJHMpLAoJCQkJICAkdiAqICgxIC0gJGYgKiAkcyksCgkJCQkgICR2ICogKDEgLSAoMSAtICRmKSAqICRzKSk7CgoJCSRwZXJtID0gYXJyYXkoYXJyYXkoMCwgMywgMSksCgkJCQkJYXJyYXkoMiwgMCwgMSksCgkJCQkJYXJyYXkoMSwgMCwgMyksCgkJCQkJYXJyYXkoMSwgMiwgMCksCgkJCQkJYXJyYXkoMywgMSwgMCksCgkJCQkJYXJyYXkoMCwgMSwgMikpOwoKCQlyZXR1cm4gJHRoaXMtPnJnYmEoJHZzWyRwZXJtWyRpXVswXV0gKiAyNTUsCgkJCQkJCSAkdnNbJHBlcm1bJGldWzFdXSAqIDI1NSwKCQkJCQkJICR2c1skcGVybVskaV1bMl1dICogMjU1LAoJCQkJCQkgJGEpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBodWUoJGNvbG9yID0gbnVsbCl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gaHVlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRjID0gJGNvbG9yLT50b0hTTCgpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbihMZXNzX1BhcnNlcjo6cm91bmQoJGNbJ2gnXSkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzYXR1cmF0aW9uKCRjb2xvciA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNhdHVyYXRpb24gbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGMgPSAkY29sb3ItPnRvSFNMKCk7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKExlc3NfUGFyc2VyOjpyb3VuZCgkY1sncyddICogMTAwKSwgJyUnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbGlnaHRuZXNzKCRjb2xvciA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGxpZ2h0bmVzcyBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkYyA9ICRjb2xvci0+dG9IU0woKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oTGVzc19QYXJzZXI6OnJvdW5kKCRjWydsJ10gKiAxMDApLCAnJScpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBoc3ZodWUoICRjb2xvciA9IG51bGwgKXsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBoc3ZodWUgbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGhzdiA9ICRjb2xvci0+dG9IU1YoKTsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oIExlc3NfUGFyc2VyOjpyb3VuZCgkaHN2WydoJ10pICk7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBoc3ZzYXR1cmF0aW9uKCAkY29sb3IgPSBudWxsICl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gaHN2c2F0dXJhdGlvbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHN2ID0gJGNvbG9yLT50b0hTVigpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggTGVzc19QYXJzZXI6OnJvdW5kKCRoc3ZbJ3MnXSAqIDEwMCksICclJyApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBoc3Z2YWx1ZSggJGNvbG9yID0gbnVsbCApewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGhzdnZhbHVlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRoc3YgPSAkY29sb3ItPnRvSFNWKCk7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCBMZXNzX1BhcnNlcjo6cm91bmQoJGhzdlsndiddICogMTAwKSwgJyUnICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJlZCgkY29sb3IgPSBudWxsKSB7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gcmVkIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGNvbG9yLT5yZ2JbMF0gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ3JlZW4oJGNvbG9yID0gbnVsbCkgewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGdyZWVuIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGNvbG9yLT5yZ2JbMV0gKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYmx1ZSgkY29sb3IgPSBudWxsKSB7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gYmx1ZSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oICRjb2xvci0+cmdiWzJdICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFscGhhKCRjb2xvciA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGFscGhhIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRjID0gJGNvbG9yLT50b0hTTCgpOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigkY1snYSddKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbHVtYSAoJGNvbG9yID0gbnVsbCkgewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGx1bWEgbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKExlc3NfUGFyc2VyOjpyb3VuZCggJGNvbG9yLT5sdW1hKCkgKiAkY29sb3ItPmFscGhhICogMTAwKSwgJyUnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbHVtaW5hbmNlKCAkY29sb3IgPSBudWxsICl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gbHVtaW5hbmNlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRsdW1pbmFuY2UgPQoJCQkoMC4yMTI2ICogJGNvbG9yLT5yZ2JbMF0gLyAyNTUpCgkJICArICgwLjcxNTIgKiAkY29sb3ItPnJnYlsxXSAvIDI1NSkKCQkgICsgKDAuMDcyMiAqICRjb2xvci0+cmdiWzJdIC8gMjU1KTsKCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKExlc3NfUGFyc2VyOjpyb3VuZCggJGx1bWluYW5jZSAqICRjb2xvci0+YWxwaGEgKiAxMDApLCAnJScpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzYXR1cmF0ZSgkY29sb3IgPSBudWxsLCAkYW1vdW50ID0gbnVsbCl7CgkJLy8gZmlsdGVyOiBzYXR1cmF0ZSgzLjIpOwoJCS8vIHNob3VsZCBiZSBrZXB0IGFzIGlzLCBzbyBjaGVjayBmb3IgY29sb3IKCQlpZiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNhdHVyYXRlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gc2F0dXJhdGUgbXVzdCBiZSBhIHBlcmNlbnRhZ2UnIC4gKCRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCgkJJGhzbFsncyddICs9ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCSRoc2xbJ3MnXSA9IHNlbGY6OmNsYW1wKCRoc2xbJ3MnXSk7CgoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9EaW1lbnNpb24gJGFtb3VudAoJICovCglwdWJsaWMgZnVuY3Rpb24gZGVzYXR1cmF0ZSgkY29sb3IgPSBudWxsLCAkYW1vdW50ID0gbnVsbCl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gZGVzYXR1cmF0ZSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoJCWlmICghJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGRlc2F0dXJhdGUgbXVzdCBiZSBhIHBlcmNlbnRhZ2UnIC4gKCRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCgkJJGhzbFsncyddIC09ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCSRoc2xbJ3MnXSA9IHNlbGY6OmNsYW1wKCRoc2xbJ3MnXSk7CgoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCgoJcHVibGljIGZ1bmN0aW9uIGxpZ2h0ZW4oJGNvbG9yID0gbnVsbCwgJGFtb3VudD1udWxsKXsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBsaWdodGVuIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gbGlnaHRlbiBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHNsID0gJGNvbG9yLT50b0hTTCgpOwoKCQkkaHNsWydsJ10gKz0gJGFtb3VudC0+dmFsdWUgLyAxMDA7CgkJJGhzbFsnbCddID0gc2VsZjo6Y2xhbXAoJGhzbFsnbCddKTsKCgkJcmV0dXJuICR0aGlzLT5oc2xhKCRoc2xbJ2gnXSwgJGhzbFsncyddLCAkaHNsWydsJ10sICRoc2xbJ2EnXSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGRhcmtlbigkY29sb3IgPSBudWxsLCAkYW1vdW50ID0gbnVsbCl7CgkJaWYgKCEkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gZGFya2VuIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZGFya2VuIG11c3QgYmUgYSBwZXJjZW50YWdlJyAuICgkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRoc2wgPSAkY29sb3ItPnRvSFNMKCk7CgkJJGhzbFsnbCddIC09ICRhbW91bnQtPnZhbHVlIC8gMTAwOwoJCSRoc2xbJ2wnXSA9IHNlbGY6OmNsYW1wKCRoc2xbJ2wnXSk7CgoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmYWRlaW4oJGNvbG9yID0gbnVsbCwgJGFtb3VudCA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGZhZGVpbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoJCWlmICghJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGZhZGVpbiBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHNsID0gJGNvbG9yLT50b0hTTCgpOwoJCSRoc2xbJ2EnXSArPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQkkaHNsWydhJ10gPSBzZWxmOjpjbGFtcCgkaHNsWydhJ10pOwoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmYWRlb3V0KCRjb2xvciA9IG51bGwsICRhbW91bnQgPSBudWxsKXsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBmYWRlb3V0IG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZmFkZW91dCBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHNsID0gJGNvbG9yLT50b0hTTCgpOwoJCSRoc2xbJ2EnXSAtPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQkkaHNsWydhJ10gPSBzZWxmOjpjbGFtcCgkaHNsWydhJ10pOwoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmYWRlKCRjb2xvciA9IG51bGwsICRhbW91bnQgPSBudWxsKXsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBmYWRlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkYW1vdW50IGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gZmFkZSBtdXN0IGJlIGEgcGVyY2VudGFnZScgLiAoJGFtb3VudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkkaHNsID0gJGNvbG9yLT50b0hTTCgpOwoKCQkkaHNsWydhJ10gPSAkYW1vdW50LT52YWx1ZSAvIDEwMDsKCQkkaHNsWydhJ10gPSBzZWxmOjpjbGFtcCgkaHNsWydhJ10pOwoJCXJldHVybiAkdGhpcy0+aHNsYSgkaHNsWydoJ10sICRoc2xbJ3MnXSwgJGhzbFsnbCddLCAkaHNsWydhJ10pOwoJfQoKCgoJcHVibGljIGZ1bmN0aW9uIHNwaW4oJGNvbG9yID0gbnVsbCwgJGFtb3VudCA9IG51bGwpewoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNwaW4gbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHNlY29uZCBhcmd1bWVudCB0byBzcGluIG11c3QgYmUgYSBudW1iZXInIC4gKCRhbW91bnQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJJGhzbCA9ICRjb2xvci0+dG9IU0woKTsKCQkkaHVlID0gZm1vZCgkaHNsWydoJ10gKyAkYW1vdW50LT52YWx1ZSwgMzYwKTsKCgkJJGhzbFsnaCddID0gJGh1ZSA8IDAgPyAzNjAgKyAkaHVlIDogJGh1ZTsKCgkJcmV0dXJuICR0aGlzLT5oc2xhKCRoc2xbJ2gnXSwgJGhzbFsncyddLCAkaHNsWydsJ10sICRoc2xbJ2EnXSk7Cgl9CgoJLy8KCS8vIENvcHlyaWdodCAoYykgMjAwNi0yMDA5IEhhbXB0b24gQ2F0bGluLCBOYXRoYW4gV2VpemVuYmF1bSwgYW5kIENocmlzIEVwcHN0ZWluCgkvLyBodHRwOi8vc2Fzcy1sYW5nLmNvbQoJLy8KCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfQ29sb3IgJGNvbG9yMQoJICovCglwdWJsaWMgZnVuY3Rpb24gbWl4KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCwgJHdlaWdodCA9IG51bGwpewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBtaXggbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHNlY29uZCBhcmd1bWVudCB0byBtaXggbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkd2VpZ2h0KSB7CgkJCSR3ZWlnaHQgPSBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbignNTAnLCAnJScpOwoJCX0KCQlpZiAoISR3ZWlnaHQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHRoaXJkIGFyZ3VtZW50IHRvIGNvbnRyYXN0IG11c3QgYmUgYSBwZXJjZW50YWdlJyAuICgkd2VpZ2h0IGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCSRwID0gJHdlaWdodC0+dmFsdWUgLyAxMDAuMDsKCQkkdyA9ICRwICogMiAtIDE7CgkJJGhzbDEgPSAkY29sb3IxLT50b0hTTCgpOwoJCSRoc2wyID0gJGNvbG9yMi0+dG9IU0woKTsKCQkkYSA9ICRoc2wxWydhJ10gLSAkaHNsMlsnYSddOwoKCQkkdzEgPSAoKCgoJHcgKiAkYSkgPT0gLTEpID8gJHcgOiAoJHcgKyAkYSkgLyAoMSArICR3ICogJGEpKSArIDEpIC8gMjsKCQkkdzIgPSAxIC0gJHcxOwoKCQkkcmdiID0gYXJyYXkoJGNvbG9yMS0+cmdiWzBdICogJHcxICsgJGNvbG9yMi0+cmdiWzBdICogJHcyLAoJCQkJCSAkY29sb3IxLT5yZ2JbMV0gKiAkdzEgKyAkY29sb3IyLT5yZ2JbMV0gKiAkdzIsCgkJCQkJICRjb2xvcjEtPnJnYlsyXSAqICR3MSArICRjb2xvcjItPnJnYlsyXSAqICR3Mik7CgoJCSRhbHBoYSA9ICRjb2xvcjEtPmFscGhhICogJHAgKyAkY29sb3IyLT5hbHBoYSAqICgxIC0gJHApOwoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvcigkcmdiLCAkYWxwaGEpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBncmV5c2NhbGUoJGNvbG9yKXsKCQlyZXR1cm4gJHRoaXMtPmRlc2F0dXJhdGUoJGNvbG9yLCBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigxMDAsJyUnKSk7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBjb250cmFzdCggJGNvbG9yLCAkZGFyayA9IG51bGwsICRsaWdodCA9IG51bGwsICR0aHJlc2hvbGQgPSBudWxsKXsKCQkvLyBmaWx0ZXI6IGNvbnRyYXN0KDMuMik7CgkJLy8gc2hvdWxkIGJlIGtlcHQgYXMgaXMsIHNvIGNoZWNrIGZvciBjb2xvcgoJCWlmICghJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCQlpZiggISRsaWdodCApewoJCQkkbGlnaHQgPSAkdGhpcy0+cmdiYSgyNTUsIDI1NSwgMjU1LCAxLjApOwoJCX0KCQlpZiggISRkYXJrICl7CgkJCSRkYXJrID0gJHRoaXMtPnJnYmEoMCwgMCwgMCwgMS4wKTsKCQl9CgoJCWlmICghJGRhcmsgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGNvbnRyYXN0IG11c3QgYmUgYSBjb2xvcicgLiAoJGRhcmsgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRsaWdodCBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSB0aGlyZCBhcmd1bWVudCB0byBjb250cmFzdCBtdXN0IGJlIGEgY29sb3InIC4gKCRsaWdodCBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQkvL0ZpZ3VyZSBvdXQgd2hpY2ggaXMgYWN0dWFsbHkgbGlnaHQgYW5kIGRhcmshCgkJaWYoICRkYXJrLT5sdW1hKCkgPiAkbGlnaHQtPmx1bWEoKSApewoJCQkkdCA9ICRsaWdodDsKCQkJJGxpZ2h0ID0gJGRhcms7CgkJCSRkYXJrID0gJHQ7CgkJfQoJCWlmKCAhJHRocmVzaG9sZCApewoJCQkkdGhyZXNob2xkID0gMC40MzsKCQl9IGVsc2UgewoJCQkkdGhyZXNob2xkID0gTGVzc19GdW5jdGlvbnM6Om51bWJlcigkdGhyZXNob2xkKTsKCQl9CgoJCWlmKCAkY29sb3ItPmx1bWEoKSA8ICR0aHJlc2hvbGQgKXsKCQkJcmV0dXJuICRsaWdodDsKCQl9IGVsc2UgewoJCQlyZXR1cm4gJGRhcms7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlICgkc3RyKXsKCQlpZiggaXNfc3RyaW5nKCRzdHIpICl7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fub255bW91cygkc3RyKTsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCRzdHIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfSmF2YVNjcmlwdCA/ICRzdHItPmV4cHJlc3Npb24gOiAkc3RyLT52YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGVzY2FwZSAoJHN0cil7CgoJCSRyZXZlcnQgPSBhcnJheSgnJTIxJz0+JyEnLCAnJTJBJz0+JyonLCAnJTI3Jz0+IiciLCclM0YnPT4nPycsJyUyNic9PicmJywnJTJDJz0+JywnLCclMkYnPT4nLycsJyU0MCc9PidAJywnJTJCJz0+JysnLCclMjQnPT4nJCcpOwoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoc3RydHIocmF3dXJsZW5jb2RlKCRzdHItPnZhbHVlKSwgJHJldmVydCkpOwoJfQoKCgkvKioKCSAqIHRvZG86IFRoaXMgZnVuY3Rpb24gd2lsbCBuZWVkIHNvbWUgYWRkaXRpb25hbCB3b3JrIHRvIG1ha2UgaXQgd29yayB0aGUgc2FtZSBhcyBsZXNzLmpzCgkgKgoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVwbGFjZSggJHN0cmluZywgJHBhdHRlcm4sICRyZXBsYWNlbWVudCwgJGZsYWdzID0gbnVsbCApewoJCSRyZXN1bHQgPSAkc3RyaW5nLT52YWx1ZTsKCgkJJGV4cHIgPSAnLycuc3RyX3JlcGxhY2UoJy8nLCdcXC8nLCRwYXR0ZXJuLT52YWx1ZSkuJy8nOwoJCWlmKCAkZmxhZ3MgJiYgJGZsYWdzLT52YWx1ZSl7CgkJCSRleHByIC49IHNlbGY6OnJlcGxhY2VfZmxhZ3MoJGZsYWdzLT52YWx1ZSk7CgkJfQoKCQkkcmVzdWx0ID0gcHJlZ19yZXBsYWNlKCRleHByLCRyZXBsYWNlbWVudC0+dmFsdWUsJHJlc3VsdCk7CgoKCQlpZiggcHJvcGVydHlfZXhpc3RzKCRzdHJpbmcsJ3F1b3RlJykgKXsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfUXVvdGVkKCAkc3RyaW5nLT5xdW90ZSwgJHJlc3VsdCwgJHN0cmluZy0+ZXNjYXBlZCk7CgkJfQoJCXJldHVybiBuZXcgTGVzc19UcmVlX1F1b3RlZCggJycsICRyZXN1bHQgKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlcGxhY2VfZmxhZ3MoJGZsYWdzKXsKCQkkZmxhZ3MgPSBzdHJfc3BsaXQoJGZsYWdzLDEpOwoJCSRuZXdfZmxhZ3MgPSAnJzsKCgkJZm9yZWFjaCgkZmxhZ3MgYXMgJGZsYWcpewoJCQlzd2l0Y2goJGZsYWcpewoJCQkJY2FzZSAnZSc6CgkJCQljYXNlICdnJzoKCQkJCWJyZWFrOwoKCQkJCWRlZmF1bHQ6CgkJCQkkbmV3X2ZsYWdzIC49ICRmbGFnOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgoJCXJldHVybiAkbmV3X2ZsYWdzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBfcGVyY2VudCgpewoJCSRzdHJpbmcgPSBmdW5jX2dldF9hcmcoMCk7CgoJCSRhcmdzID0gZnVuY19nZXRfYXJncygpOwoJCWFycmF5X3NoaWZ0KCRhcmdzKTsKCQkkcmVzdWx0ID0gJHN0cmluZy0+dmFsdWU7CgoJCWZvcmVhY2goJGFyZ3MgYXMgJGFyZyl7CgkJCWlmKCBwcmVnX21hdGNoKCcvJVtzZGFdL2knLCRyZXN1bHQsICR0b2tlbikgKXsKCQkJCSR0b2tlbiA9ICR0b2tlblswXTsKCQkJCSR2YWx1ZSA9IHN0cmlzdHIoJHRva2VuLCAncycpID8gJGFyZy0+dmFsdWUgOiAkYXJnLT50b0NTUygpOwoJCQkJJHZhbHVlID0gcHJlZ19tYXRjaCgnL1tBLVpdJC8nLCAkdG9rZW4pID8gdXJsZW5jb2RlKCR2YWx1ZSkgOiAkdmFsdWU7CgkJCQkkcmVzdWx0ID0gcHJlZ19yZXBsYWNlKCcvJVtzZGFdL2knLCR2YWx1ZSwgJHJlc3VsdCwgMSk7CgkJCX0KCQl9CgkJJHJlc3VsdCA9IHN0cl9yZXBsYWNlKCclJScsICclJywgJHJlc3VsdCk7CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX1F1b3RlZCggJHN0cmluZy0+cXVvdGUgLCAkcmVzdWx0LCAkc3RyaW5nLT5lc2NhcGVkKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdW5pdCggJHZhbCwgJHVuaXQgPSBudWxsKSB7CgkJaWYoICEoJHZhbCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHVuaXQgbXVzdCBiZSBhIG51bWJlcicgLiAoJHZhbCBpbnN0YW5jZW9mIExlc3NfVHJlZV9PcGVyYXRpb24gPyAnLiBIYXZlIHlvdSBmb3Jnb3R0ZW4gcGFyZW50aGVzaXM/JyA6ICcuJykgKTsKCQl9CgoJCWlmKCAkdW5pdCApewoJCQlpZiggJHVuaXQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfS2V5d29yZCApewoJCQkJJHVuaXQgPSAkdW5pdC0+dmFsdWU7CgkJCX0gZWxzZSB7CgkJCQkkdW5pdCA9ICR1bml0LT50b0NTUygpOwoJCQl9CgkJfSBlbHNlIHsKCQkJJHVuaXQgPSAiIjsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCR2YWwtPnZhbHVlLCAkdW5pdCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb252ZXJ0KCR2YWwsICR1bml0KXsKCQlyZXR1cm4gJHZhbC0+Y29udmVydFRvKCR1bml0LT52YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHJvdW5kKCRuLCAkZiA9IGZhbHNlKSB7CgoJCSRmcmFjdGlvbiA9IDA7CgkJaWYoICRmICE9PSBmYWxzZSApewoJCQkkZnJhY3Rpb24gPSAkZi0+dmFsdWU7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPl9tYXRoKCdMZXNzX1BhcnNlcjo6cm91bmQnLG51bGwsICRuLCAkZnJhY3Rpb24pOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwaSgpewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbihNX1BJKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbW9kKCRhLCAkYikgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJGEtPnZhbHVlICUgJGItPnZhbHVlLCAkYS0+dW5pdCk7Cgl9CgoKCglwdWJsaWMgZnVuY3Rpb24gcG93KCR4LCAkeSkgewoJCWlmKCBpc19udW1lcmljKCR4KSAmJiBpc19udW1lcmljKCR5KSApewoJCQkkeCA9IG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCR4KTsKCQkJJHkgPSBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigkeSk7CgkJfWVsc2VpZiggISgkeCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pIHx8ICEoJHkgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSApewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ0FyZ3VtZW50cyBtdXN0IGJlIG51bWJlcnMnKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggcG93KCR4LT52YWx1ZSwgJHktPnZhbHVlKSwgJHgtPnVuaXQgKTsKCX0KCgkvLyB2YXIgbWF0aEZ1bmN0aW9ucyA9IFt7bmFtZToiY2UgLi4uCglwdWJsaWMgZnVuY3Rpb24gY2VpbCggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2NlaWwnLCBudWxsLCAkbik7IH0KCXB1YmxpYyBmdW5jdGlvbiBmbG9vciggJG4gKXsJcmV0dXJuICR0aGlzLT5fbWF0aCgnZmxvb3InLCBudWxsLCAkbik7IH0KCXB1YmxpYyBmdW5jdGlvbiBzcXJ0KCAkbiApewkJcmV0dXJuICR0aGlzLT5fbWF0aCgnc3FydCcsIG51bGwsICRuKTsgfQoJcHVibGljIGZ1bmN0aW9uIGFicyggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2FicycsIG51bGwsICRuKTsgfQoKCXB1YmxpYyBmdW5jdGlvbiB0YW4oICRuICl7CQlyZXR1cm4gJHRoaXMtPl9tYXRoKCd0YW4nLCAnJywgJG4pOwl9CglwdWJsaWMgZnVuY3Rpb24gc2luKCAkbiApewkJcmV0dXJuICR0aGlzLT5fbWF0aCgnc2luJywgJycsICRuKTsJfQoJcHVibGljIGZ1bmN0aW9uIGNvcyggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2NvcycsICcnLCAkbik7CX0KCglwdWJsaWMgZnVuY3Rpb24gYXRhbiggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2F0YW4nLCAncmFkJywgJG4pOwl9CglwdWJsaWMgZnVuY3Rpb24gYXNpbiggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2FzaW4nLCAncmFkJywgJG4pOwl9CglwdWJsaWMgZnVuY3Rpb24gYWNvcyggJG4gKXsJCXJldHVybiAkdGhpcy0+X21hdGgoJ2Fjb3MnLCAncmFkJywgJG4pOwl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBfbWF0aCgpIHsKCQkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCQkkZm4gPSBhcnJheV9zaGlmdCgkYXJncyk7CgkJJHVuaXQgPSBhcnJheV9zaGlmdCgkYXJncyk7CgoJCWlmICgkYXJnc1swXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pIHsKCgkJCWlmKCAkdW5pdCA9PT0gbnVsbCApewoJCQkJJHVuaXQgPSAkYXJnc1swXS0+dW5pdDsKCQkJfWVsc2V7CgkJCQkkYXJnc1swXSA9ICRhcmdzWzBdLT51bmlmeSgpOwoJCQl9CgkJCSRhcmdzWzBdID0gKGZsb2F0KSRhcmdzWzBdLT52YWx1ZTsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCBjYWxsX3VzZXJfZnVuY19hcnJheSgkZm4sICRhcmdzKSwgJHVuaXQpOwoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkYXJnc1swXSkpIHsKCQkJcmV0dXJuIGNhbGxfdXNlcl9mdW5jX2FycmF5KCRmbiwkYXJncyk7CgkJfSBlbHNlIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJtYXRoIGZ1bmN0aW9ucyB0YWtlIG51bWJlcnMgYXMgcGFyYW1ldGVycyIpOwoJCX0KCX0KCgkvKioKCSAqIEBwYXJhbSBib29sZWFuICRpc01pbgoJICovCglwcml2YXRlIGZ1bmN0aW9uIF9taW5tYXgoICRpc01pbiwgJGFyZ3MgKXsKCgkJJGFyZ19jb3VudCA9IGNvdW50KCRhcmdzKTsKCgkJaWYoICRhcmdfY291bnQgPCAxICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggJ29uZSBvciBtb3JlIGFyZ3VtZW50cyByZXF1aXJlZCcpOwoJCX0KCgkJJGogPSBudWxsOwoJCSR1bml0Q2xvbmUgPSBudWxsOwoJCSR1bml0U3RhdGljID0gbnVsbDsKCgoJCSRvcmRlciA9IGFycmF5KCk7CS8vIGVsZW1zIG9ubHkgY29udGFpbnMgb3JpZ2luYWwgYXJndW1lbnQgdmFsdWVzLgoJCSR2YWx1ZXMgPSBhcnJheSgpOwkvLyBrZXkgaXMgdGhlIHVuaXQudG9TdHJpbmcoKSBmb3IgdW5pZmllZCB0cmVlLkRpbWVuc2lvbiB2YWx1ZXMsCgkJCQkJCQkvLyB2YWx1ZSBpcyB0aGUgaW5kZXggaW50byB0aGUgb3JkZXIgYXJyYXkuCgoKCQlmb3IoICRpID0gMDsgJGkgPCAkYXJnX2NvdW50OyAkaSsrICl7CgkJCSRjdXJyZW50ID0gJGFyZ3NbJGldOwoJCQlpZiggISgkY3VycmVudCBpbnN0YW5jZW9mIExlc3NfVHJlZV9EaW1lbnNpb24pICl7CgkJCQlpZiggaXNfYXJyYXkoJGFyZ3NbJGldLT52YWx1ZSkgKXsKCQkJCQkkYXJnc1tdID0gJGFyZ3NbJGldLT52YWx1ZTsKCQkJCX0KCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQlpZiggJGN1cnJlbnQtPnVuaXQtPnRvU3RyaW5nKCkgPT09ICcnICYmICEkdW5pdENsb25lICl7CgkJCQkkdGVtcCA9IG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCRjdXJyZW50LT52YWx1ZSwgJHVuaXRDbG9uZSk7CgkJCQkkY3VycmVudFVuaWZpZWQgPSAkdGVtcC0+dW5pZnkoKTsKCQkJfWVsc2V7CgkJCQkkY3VycmVudFVuaWZpZWQgPSAkY3VycmVudC0+dW5pZnkoKTsKCQkJfQoKCQkJaWYoICRjdXJyZW50VW5pZmllZC0+dW5pdC0+dG9TdHJpbmcoKSA9PT0gIiIgJiYgISR1bml0U3RhdGljICl7CgkJCQkkdW5pdCA9ICR1bml0U3RhdGljOwoJCQl9ZWxzZXsKCQkJCSR1bml0ID0gJGN1cnJlbnRVbmlmaWVkLT51bml0LT50b1N0cmluZygpOwoJCQl9CgoJCQlpZiggJHVuaXQgIT09ICcnICYmICEkdW5pdFN0YXRpYyB8fCAkdW5pdCAhPT0gJycgJiYgJG9yZGVyWzBdLT51bmlmeSgpLT51bml0LT50b1N0cmluZygpID09PSAiIiApewoJCQkJJHVuaXRTdGF0aWMgPSAkdW5pdDsKCQkJfQoKCQkJaWYoICR1bml0ICE9ICcnICYmICEkdW5pdENsb25lICl7CgkJCQkkdW5pdENsb25lID0gJGN1cnJlbnQtPnVuaXQtPnRvU3RyaW5nKCk7CgkJCX0KCgkJCWlmKCBpc3NldCgkdmFsdWVzWycnXSkgJiYgJHVuaXQgIT09ICcnICYmICR1bml0ID09PSAkdW5pdFN0YXRpYyApewoJCQkJJGogPSAkdmFsdWVzWycnXTsKCQkJfWVsc2VpZiggaXNzZXQoJHZhbHVlc1skdW5pdF0pICl7CgkJCQkkaiA9ICR2YWx1ZXNbJHVuaXRdOwoJCQl9ZWxzZXsKCgkJCQlpZiggJHVuaXRTdGF0aWMgJiYgJHVuaXQgIT09ICR1bml0U3RhdGljICl7CgkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAnaW5jb21wYXRpYmxlIHR5cGVzJyk7CgkJCQl9CgkJCQkkdmFsdWVzWyR1bml0XSA9IGNvdW50KCRvcmRlcik7CgkJCQkkb3JkZXJbXSA9ICRjdXJyZW50OwoJCQkJY29udGludWU7CgkJCX0KCgoJCQlpZiggJG9yZGVyWyRqXS0+dW5pdC0+dG9TdHJpbmcoKSA9PT0gIiIgJiYgJHVuaXRDbG9uZSApewoJCQkJJHRlbXAgPSBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbiggJG9yZGVyWyRqXS0+dmFsdWUsICR1bml0Q2xvbmUpOwoJCQkJJHJlZmVyZW5jZVVuaWZpZWQgPSAkdGVtcC0+dW5pZnkoKTsKCQkJfWVsc2V7CgkJCQkkcmVmZXJlbmNlVW5pZmllZCA9ICRvcmRlclskal0tPnVuaWZ5KCk7CgkJCX0KCQkJaWYoICgkaXNNaW4gJiYgJGN1cnJlbnRVbmlmaWVkLT52YWx1ZSA8ICRyZWZlcmVuY2VVbmlmaWVkLT52YWx1ZSkgfHwgKCEkaXNNaW4gJiYgJGN1cnJlbnRVbmlmaWVkLT52YWx1ZSA+ICRyZWZlcmVuY2VVbmlmaWVkLT52YWx1ZSkgKXsKCQkJCSRvcmRlclskal0gPSAkY3VycmVudDsKCQkJfQoJCX0KCgkJaWYoIGNvdW50KCRvcmRlcikgPT0gMSApewoJCQlyZXR1cm4gJG9yZGVyWzBdOwoJCX0KCQkkYXJncyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkb3JkZXIgYXMgJGEpewoJCQkkYXJnc1tdID0gJGEtPnRvQ1NTKCR0aGlzLT5lbnYpOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoICgkaXNNaW4/J21pbignOidtYXgoJykgLiBpbXBsb2RlKExlc3NfRW52aXJvbm1lbnQ6OiRfb3V0cHV0TWFwWycsJ10sJGFyZ3MpLicpJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1pbigpewoJCSRhcmdzID0gZnVuY19nZXRfYXJncygpOwoJCXJldHVybiAkdGhpcy0+X21pbm1heCggdHJ1ZSwgJGFyZ3MgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbWF4KCl7CgkJJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgkJcmV0dXJuICR0aGlzLT5fbWlubWF4KCBmYWxzZSwgJGFyZ3MgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0dW5pdCgkbil7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCRuLT51bml0KTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYXJnYigkY29sb3IpIHsKCQlpZiAoISRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBhcmdiIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fub255bW91cygkY29sb3ItPnRvQVJHQigpKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcGVyY2VudGFnZSgkbikgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigkbi0+dmFsdWUgKiAxMDAsICclJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbG9yKCRuKSB7CgoJCWlmKCAkbiBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQgKXsKCQkJJGNvbG9yQ2FuZGlkYXRlID0gJG4tPnZhbHVlOwoJCQkkcmV0dXJuQ29sb3IgPSBMZXNzX1RyZWVfQ29sb3I6OmZyb21LZXl3b3JkKCRjb2xvckNhbmRpZGF0ZSk7CgkJCWlmKCAkcmV0dXJuQ29sb3IgKXsKCQkJCXJldHVybiAkcmV0dXJuQ29sb3I7CgkJCX0KCQkJaWYoIHByZWdfbWF0Y2goJy9eIyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkvJywkY29sb3JDYW5kaWRhdGUpICl7CgkJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvcihzdWJzdHIoJGNvbG9yQ2FuZGlkYXRlLCAxKSk7CgkJCX0KCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJhcmd1bWVudCBtdXN0IGJlIGEgY29sb3Iga2V5d29yZCBvciAzLzYgZGlnaXQgaGV4IGUuZy4gI0ZGRiIpOwoJCX0gZWxzZSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigiYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpOwoJCX0KCX0KCgoJcHVibGljIGZ1bmN0aW9uIGlzY29sb3IoJG4pIHsKCQlyZXR1cm4gJHRoaXMtPl9pc2EoJG4sICdMZXNzX1RyZWVfQ29sb3InKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNudW1iZXIoJG4pIHsKCQlyZXR1cm4gJHRoaXMtPl9pc2EoJG4sICdMZXNzX1RyZWVfRGltZW5zaW9uJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzc3RyaW5nKCRuKSB7CgkJcmV0dXJuICR0aGlzLT5faXNhKCRuLCAnTGVzc19UcmVlX1F1b3RlZCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc2tleXdvcmQoJG4pIHsKCQlyZXR1cm4gJHRoaXMtPl9pc2EoJG4sICdMZXNzX1RyZWVfS2V5d29yZCcpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc3VybCgkbikgewoJCXJldHVybiAkdGhpcy0+X2lzYSgkbiwgJ0xlc3NfVHJlZV9VcmwnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNwaXhlbCgkbikgewoJCXJldHVybiAkdGhpcy0+aXN1bml0KCRuLCAncHgnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNwZXJjZW50YWdlKCRuKSB7CgkJcmV0dXJuICR0aGlzLT5pc3VuaXQoJG4sICclJyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzZW0oJG4pIHsKCQlyZXR1cm4gJHRoaXMtPmlzdW5pdCgkbiwgJ2VtJyk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICR1bml0CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpc3VuaXQoICRuLCAkdW5pdCApewoJCXJldHVybiAoJG4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSAmJiAkbi0+dW5pdC0+aXMoICggcHJvcGVydHlfZXhpc3RzKCR1bml0LCd2YWx1ZScpID8gJHVuaXQtPnZhbHVlIDogJHVuaXQpICkgPyBuZXcgTGVzc19UcmVlX0tleXdvcmQoJ3RydWUnKSA6IG5ldyBMZXNzX1RyZWVfS2V5d29yZCgnZmFsc2UnKTsKCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBfaXNhKCRuLCAkdHlwZSkgewoJCXJldHVybiBpc19hKCRuLCAkdHlwZSkgPyBuZXcgTGVzc19UcmVlX0tleXdvcmQoJ3RydWUnKSA6IG5ldyBMZXNzX1RyZWVfS2V5d29yZCgnZmFsc2UnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHsKCQlyZXR1cm4gJHRoaXMtPm1peCggJHRoaXMtPnJnYigyNTUsMjU1LDI1NSksICRjb2xvciwgJGFtb3VudCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkgewoJCXJldHVybiAkdGhpcy0+bWl4KCR0aGlzLT5yZ2IoMCwgMCwgMCksICRjb2xvciwgJGFtb3VudCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGV4dHJhY3QoJHZhbHVlcywgJGluZGV4ICl7CgkJJGluZGV4ID0gKGludCkkaW5kZXgtPnZhbHVlIC0gMTsgLy8gKDEtYmFzZWQgaW5kZXgpCgkJLy8gaGFuZGxlIG5vbi1hcnJheSB2YWx1ZXMgYXMgYW4gYXJyYXkgb2YgbGVuZ3RoIDEKCQkvLyByZXR1cm4gJ3VuZGVmaW5lZCcgaWYgaW5kZXggaXMgaW52YWxpZAoJCWlmKCBwcm9wZXJ0eV9leGlzdHMoJHZhbHVlcywndmFsdWUnKSAmJiBpc19hcnJheSgkdmFsdWVzLT52YWx1ZSkgKXsKCQkJaWYoIGlzc2V0KCR2YWx1ZXMtPnZhbHVlWyRpbmRleF0pICl7CgkJCQlyZXR1cm4gJHZhbHVlcy0+dmFsdWVbJGluZGV4XTsKCQkJfQoJCQlyZXR1cm4gbnVsbDsKCgkJfWVsc2VpZiggKGludCkkaW5kZXggPT09IDAgKXsKCQkJcmV0dXJuICR2YWx1ZXM7CgkJfQoKCQlyZXR1cm4gbnVsbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbGVuZ3RoKCR2YWx1ZXMpewoJCSRuID0gKHByb3BlcnR5X2V4aXN0cygkdmFsdWVzLCd2YWx1ZScpICYmIGlzX2FycmF5KCR2YWx1ZXMtPnZhbHVlKSkgPyBjb3VudCgkdmFsdWVzLT52YWx1ZSkgOiAxOwoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RpbWVuc2lvbigkbik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGRhdGF1cmkoJG1pbWV0eXBlTm9kZSwgJGZpbGVQYXRoTm9kZSA9IG51bGwgKSB7CgoJCSRmaWxlUGF0aCA9ICggJGZpbGVQYXRoTm9kZSA/ICRmaWxlUGF0aE5vZGUtPnZhbHVlIDogbnVsbCApOwoJCSRtaW1ldHlwZSA9ICRtaW1ldHlwZU5vZGUtPnZhbHVlOwoKCQkkYXJncyA9IDI7CgkJaWYoICEkZmlsZVBhdGggKXsKCQkJJGZpbGVQYXRoID0gJG1pbWV0eXBlOwoJCQkkYXJncyA9IDE7CgkJfQoKCQkkZmlsZVBhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCcvJywkZmlsZVBhdGgpOwoJCWlmKCBMZXNzX0Vudmlyb25tZW50Ojppc1BhdGhSZWxhdGl2ZSgkZmlsZVBhdGgpICl7CgoJCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydyZWxhdGl2ZVVybHMnXSApewoJCQkJJHRlbXAgPSAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydjdXJyZW50RGlyZWN0b3J5J107CgkJCX0gZWxzZSB7CgkJCQkkdGVtcCA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ2VudHJ5UGF0aCddOwoJCQl9CgoJCQlpZiggIWVtcHR5KCR0ZW1wKSApewoJCQkJJGZpbGVQYXRoID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aChydHJpbSgkdGVtcCwnLycpLicvJy4kZmlsZVBhdGgpOwoJCQl9CgoJCX0KCgoJCS8vIGRldGVjdCB0aGUgbWltZXR5cGUgaWYgbm90IGdpdmVuCgkJaWYoICRhcmdzIDwgMiApewoKCQkJLyogaW5jb21wbGV0ZQoJCQkkbWltZSA9IHJlcXVpcmUoJ21pbWUnKTsKCQkJbWltZXR5cGUgPSBtaW1lLmxvb2t1cChwYXRoKTsKCgkJCS8vIHVzZSBiYXNlIDY0IHVubGVzcyBpdCdzIGFuIEFTQ0lJIG9yIFVURi04IGZvcm1hdAoJCQl2YXIgY2hhcnNldCA9IG1pbWUuY2hhcnNldHMubG9va3VwKG1pbWV0eXBlKTsKCQkJdXNlQmFzZTY0ID0gWydVUy1BU0NJSScsICdVVEYtOCddLmluZGV4T2YoY2hhcnNldCkgPCAwOwoJCQlpZiAodXNlQmFzZTY0KSBtaW1ldHlwZSArPSAnO2Jhc2U2NCc7CgkJCSovCgoJCQkkbWltZXR5cGUgPSBMZXNzX01pbWU6Omxvb2t1cCgkZmlsZVBhdGgpOwoKCQkJJGNoYXJzZXQgPSBMZXNzX01pbWU6OmNoYXJzZXRzX2xvb2t1cCgkbWltZXR5cGUpOwoJCQkkdXNlQmFzZTY0ID0gIWluX2FycmF5KCRjaGFyc2V0LGFycmF5KCdVUy1BU0NJSScsICdVVEYtOCcpKTsKCQkJaWYoICR1c2VCYXNlNjQgKXsgJG1pbWV0eXBlIC49ICc7YmFzZTY0JzsgfQoKCQl9ZWxzZXsKCQkJJHVzZUJhc2U2NCA9IHByZWdfbWF0Y2goJy87YmFzZTY0JC8nLCRtaW1ldHlwZSk7CgkJfQoKCgkJaWYoIGZpbGVfZXhpc3RzKCRmaWxlUGF0aCkgKXsKCQkJJGJ1ZiA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZVBhdGgpOwoJCX1lbHNlewoJCQkkYnVmID0gZmFsc2U7CgkJfQoKCgkJLy8gSUU4IGNhbm5vdCBoYW5kbGUgYSBkYXRhLXVyaSBsYXJnZXIgdGhhbiAzMktCLiBJZiB0aGlzIGlzIGV4Y2VlZGVkCgkJLy8gYW5kIHRoZSAtLWllQ29tcGF0IGZsYWcgaXMgZW5hYmxlZCwgcmV0dXJuIGEgbm9ybWFsIHVybCgpIGluc3RlYWQuCgkJJERBVEFfVVJJX01BWF9LQiA9IDMyOwoJCSRmaWxlU2l6ZUluS0IgPSByb3VuZCggc3RybGVuKCRidWYpIC8gMTAyNCApOwoJCWlmKCAkZmlsZVNpemVJbktCID49ICREQVRBX1VSSV9NQVhfS0IgKXsKCQkJJHVybCA9IG5ldyBMZXNzX1RyZWVfVXJsKCAoJGZpbGVQYXRoTm9kZSA/ICRmaWxlUGF0aE5vZGUgOiAkbWltZXR5cGVOb2RlKSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyk7CgkJCXJldHVybiAkdXJsLT5jb21waWxlKCR0aGlzKTsKCQl9CgoJCWlmKCAkYnVmICl7CgkJCSRidWYgPSAkdXNlQmFzZTY0ID8gYmFzZTY0X2VuY29kZSgkYnVmKSA6IHJhd3VybGVuY29kZSgkYnVmKTsKCQkJJGZpbGVQYXRoID0gJyJkYXRhOicgLiAkbWltZXR5cGUgLiAnLCcgLiAkYnVmIC4gJyInOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVXJsKCBuZXcgTGVzc19UcmVlX0Fub255bW91cygkZmlsZVBhdGgpICk7Cgl9CgoJLy9zdmctZ3JhZGllbnQKCXB1YmxpYyBmdW5jdGlvbiBzdmdncmFkaWVudCggJGRpcmVjdGlvbiApewoKCQkkdGhyb3dfbWVzc2FnZSA9ICdzdmctZ3JhZGllbnQgZXhwZWN0cyBkaXJlY3Rpb24sIHN0YXJ0X2NvbG9yIFtzdGFydF9wb3NpdGlvbl0sIFtjb2xvciBwb3NpdGlvbixdLi4uLCBlbmRfY29sb3IgW2VuZF9wb3NpdGlvbl0nOwoJCSRhcmd1bWVudHMgPSBmdW5jX2dldF9hcmdzKCk7CgoJCWlmKCBjb3VudCgkYXJndW1lbnRzKSA8IDMgKXsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAkdGhyb3dfbWVzc2FnZSApOwoJCX0KCgkJJHN0b3BzID0gYXJyYXlfc2xpY2UoJGFyZ3VtZW50cywxKTsKCQkkZ3JhZGllbnRUeXBlID0gJ2xpbmVhcic7CgkJJHJlY3RhbmdsZURpbWVuc2lvbiA9ICd4PSIwIiB5PSIwIiB3aWR0aD0iMSIgaGVpZ2h0PSIxIic7CgkJJHVzZUJhc2U2NCA9IHRydWU7CgkJJGRpcmVjdGlvblZhbHVlID0gJGRpcmVjdGlvbi0+dG9DU1MoKTsKCgoJCXN3aXRjaCggJGRpcmVjdGlvblZhbHVlICl7CgkJCWNhc2UgInRvIGJvdHRvbSI6CgkJCQkkZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byByaWdodCI6CgkJCQkkZ3JhZGllbnREaXJlY3Rpb25TdmcgPSAneDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byBib3R0b20gcmlnaHQiOgoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjEwMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJ0byB0b3AgcmlnaHQiOgoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ3gxPSIwJSIgeTE9IjEwMCUiIHgyPSIxMDAlIiB5Mj0iMCUiJzsKCQkJCWJyZWFrOwoJCQljYXNlICJlbGxpcHNlIjoKCQkJY2FzZSAiZWxsaXBzZSBhdCBjZW50ZXIiOgoJCQkJJGdyYWRpZW50VHlwZSA9ICJyYWRpYWwiOwoJCQkJJGdyYWRpZW50RGlyZWN0aW9uU3ZnID0gJ2N4PSI1MCUiIGN5PSI1MCUiIHI9Ijc1JSInOwoJCQkJJHJlY3RhbmdsZURpbWVuc2lvbiA9ICd4PSItNTAiIHk9Ii01MCIgd2lkdGg9IjEwMSIgaGVpZ2h0PSIxMDEiJzsKCQkJCWJyZWFrOwoJCQlkZWZhdWx0OgoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCAic3ZnLWdyYWRpZW50IGRpcmVjdGlvbiBtdXN0IGJlICd0byBib3R0b20nLCAndG8gcmlnaHQnLCAndG8gYm90dG9tIHJpZ2h0JywgJ3RvIHRvcCByaWdodCcgb3IgJ2VsbGlwc2UgYXQgY2VudGVyJyIgKTsKCQl9CgoJCSRyZXR1cm5lciA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiID8+JyAuCgkJCSc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgMSAxIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIj4nIC4KCQkJJzwnIC4gJGdyYWRpZW50VHlwZSAuICdHcmFkaWVudCBpZD0iZ3JhZGllbnQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiAnIC4gJGdyYWRpZW50RGlyZWN0aW9uU3ZnIC4gJz4nOwoKCQlmb3IoICRpID0gMDsgJGkgPCBjb3VudCgkc3RvcHMpOyAkaSsrICl7CgkJCWlmKCBpc19vYmplY3QoJHN0b3BzWyRpXSkgJiYgcHJvcGVydHlfZXhpc3RzKCRzdG9wc1skaV0sJ3ZhbHVlJykgKXsKCQkJCSRjb2xvciA9ICRzdG9wc1skaV0tPnZhbHVlWzBdOwoJCQkJJHBvc2l0aW9uID0gJHN0b3BzWyRpXS0+dmFsdWVbMV07CgkJCX1lbHNlewoJCQkJJGNvbG9yID0gJHN0b3BzWyRpXTsKCQkJCSRwb3NpdGlvbiA9IG51bGw7CgkJCX0KCgkJCWlmKCAhKCRjb2xvciBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgfHwgKCEoKCRpID09PSAwIHx8ICRpKzEgPT09IGNvdW50KCRzdG9wcykpICYmICRwb3NpdGlvbiA9PT0gbnVsbCkgJiYgISgkcG9zaXRpb24gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uKSkgKXsKCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlciggJHRocm93X21lc3NhZ2UgKTsKCQkJfQoJCQlpZiggJHBvc2l0aW9uICl7CgkJCQkkcG9zaXRpb25WYWx1ZSA9ICRwb3NpdGlvbi0+dG9DU1MoKTsKCQkJfWVsc2VpZiggJGkgPT09IDAgKXsKCQkJCSRwb3NpdGlvblZhbHVlID0gJzAlJzsKCQkJfWVsc2V7CgkJCQkkcG9zaXRpb25WYWx1ZSA9ICcxMDAlJzsKCQkJfQoJCQkkYWxwaGEgPSAkY29sb3ItPmFscGhhOwoJCQkkcmV0dXJuZXIgLj0gJzxzdG9wIG9mZnNldD0iJyAuICRwb3NpdGlvblZhbHVlIC4gJyIgc3RvcC1jb2xvcj0iJyAuICRjb2xvci0+dG9SR0IoKSAuICciJyAuICgkYWxwaGEgPCAxID8gJyBzdG9wLW9wYWNpdHk9IicgLiAkYWxwaGEgLiAnIicgOiAnJykgLiAnLz4nOwoJCX0KCgkJJHJldHVybmVyIC49ICc8LycgLiAkZ3JhZGllbnRUeXBlIC4gJ0dyYWRpZW50PjxyZWN0ICcgLiAkcmVjdGFuZ2xlRGltZW5zaW9uIC4gJyBmaWxsPSJ1cmwoI2dyYWRpZW50KSIgLz48L3N2Zz4nOwoKCgkJaWYoICR1c2VCYXNlNjQgKXsKCQkJJHJldHVybmVyID0gIidkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCIuYmFzZTY0X2VuY29kZSgkcmV0dXJuZXIpLiInIjsKCQl9ZWxzZXsKCQkJJHJldHVybmVyID0gIidkYXRhOmltYWdlL3N2Zyt4bWwsIi4kcmV0dXJuZXIuIiciOwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfVVJMKCBuZXcgTGVzc19UcmVlX0Fub255bW91cyggJHJldHVybmVyICkgKTsKCX0KCgoJLyoqCgkgKiBQaHAgdmVyc2lvbiBvZiBqYXZhc2NyaXB0J3MgYGVuY29kZVVSSUNvbXBvbmVudGAgZnVuY3Rpb24KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgVGhlIHN0cmluZyB0byBlbmNvZGUKCSAqIEByZXR1cm4gc3RyaW5nIFRoZSBlbmNvZGVkIHN0cmluZwoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZVVSSUNvbXBvbmVudCgkc3RyaW5nKXsKCQkkcmV2ZXJ0ID0gYXJyYXkoJyUyMScgPT4gJyEnLCAnJTJBJyA9PiAnKicsICclMjcnID0+ICInIiwgJyUyOCcgPT4gJygnLCAnJTI5JyA9PiAnKScpOwoJCXJldHVybiBzdHJ0cihyYXd1cmxlbmNvZGUoJHN0cmluZyksICRyZXZlcnQpOwoJfQoKCgkvLyBDb2xvciBCbGVuZGluZwoJLy8gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9UUi9jb21wb3NpdGluZy0xCgoJcHVibGljIGZ1bmN0aW9uIGNvbG9yQmxlbmQoICRtb2RlLCAkY29sb3IxLCAkY29sb3IyICl7CgkJJGFiID0gJGNvbG9yMS0+YWxwaGE7CS8vIGJhY2tkcm9wCgkJJGFzID0gJGNvbG9yMi0+YWxwaGE7CS8vIHNvdXJjZQoJCSRyID0gYXJyYXkoKTsJCQkvLyByZXN1bHQKCgkJJGFyID0gJGFzICsgJGFiICogKDEgLSAkYXMpOwoJCWZvciggJGkgPSAwOyAkaSA8IDM7ICRpKysgKXsKCQkJJGNiID0gJGNvbG9yMS0+cmdiWyRpXSAvIDI1NTsKCQkJJGNzID0gJGNvbG9yMi0+cmdiWyRpXSAvIDI1NTsKCQkJJGNyID0gY2FsbF91c2VyX2Z1bmMoICRtb2RlLCAkY2IsICRjcyApOwoJCQlpZiggJGFyICl7CgkJCQkkY3IgPSAoJGFzICogJGNzICsgJGFiICogKCRjYiAtICRhcyAqICgkY2IgKyAkY3MgLSAkY3IpKSkgLyAkYXI7CgkJCX0KCQkJJHJbJGldID0gJGNyICogMjU1OwoJCX0KCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQ29sb3IoJHIsICRhcik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG11bHRpcGx5KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBtdWx0aXBseSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG11bHRpcGx5IG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIGFycmF5KCR0aGlzLCdjb2xvckJsZW5kTXVsdGlwbHknKSwgICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGNvbG9yQmxlbmRNdWx0aXBseSgkY2IsICRjcyl7CgkJcmV0dXJuICRjYiAqICRjczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2NyZWVuKCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBzY3JlZW4gbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHNlY29uZCBhcmd1bWVudCB0byBzY3JlZW4gbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+Y29sb3JCbGVuZCggYXJyYXkoJHRoaXMsJ2NvbG9yQmxlbmRTY3JlZW4nKSwgICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGNvbG9yQmxlbmRTY3JlZW4oICRjYiwgJGNzKXsKCQlyZXR1cm4gJGNiICsgJGNzIC0gJGNiICogJGNzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBvdmVybGF5KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCl7CgkJaWYgKCEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIG92ZXJsYXkgbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgkJaWYgKCEkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIHNlY29uZCBhcmd1bWVudCB0byBvdmVybGF5IG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIGFycmF5KCR0aGlzLCdjb2xvckJsZW5kT3ZlcmxheScpLCAgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZE92ZXJsYXkoJGNiLCAkY3MgKXsKCQkkY2IgKj0gMjsKCQlyZXR1cm4gKCRjYiA8PSAxKQoJCQk/ICR0aGlzLT5jb2xvckJsZW5kTXVsdGlwbHkoJGNiLCAkY3MpCgkJCTogJHRoaXMtPmNvbG9yQmxlbmRTY3JlZW4oJGNiIC0gMSwgJGNzKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc29mdGxpZ2h0KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCl7CgkJaWYgKCEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNvZnRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHNvZnRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBhcnJheSgkdGhpcywnY29sb3JCbGVuZFNvZnRsaWdodCcpLCAgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZFNvZnRsaWdodCgkY2IsICRjcyApewoJCSRkID0gMTsKCQkkZSA9ICRjYjsKCQlpZiggJGNzID4gMC41ICl7CgkJCSRlID0gMTsKCQkJJGQgPSAoJGNiID4gMC4yNSkgPyBzcXJ0KCRjYikKCQkJCTogKCgxNiAqICRjYiAtIDEyKSAqICRjYiArIDQpICogJGNiOwoJCX0KCQlyZXR1cm4gJGNiIC0gKDEgLSAyICogJGNzKSAqICRlICogKCRkIC0gJGNiKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gaGFyZGxpZ2h0KCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCl7CgkJaWYgKCEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGhhcmRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGhhcmRsaWdodCBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBhcnJheSgkdGhpcywnY29sb3JCbGVuZEhhcmRsaWdodCcpLCAgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZEhhcmRsaWdodCggJGNiLCAkY3MgKXsKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmRPdmVybGF5KCRjcywgJGNiKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZGlmZmVyZW5jZSgkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwpIHsKCQlpZiAoISRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgZmlyc3QgYXJndW1lbnQgdG8gZGlmZmVyZW5jZSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGRpZmZlcmVuY2UgbXVzdCBiZSBhIGNvbG9yJyAuICgkY29sb3IyIGluc3RhbmNlb2YgTGVzc19UcmVlX0V4cHJlc3Npb24gPyAnIChkaWQgeW91IGZvcmdvdCBjb21tYXM/KScgOiAnJykgKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+Y29sb3JCbGVuZCggYXJyYXkoJHRoaXMsJ2NvbG9yQmxlbmREaWZmZXJlbmNlJyksICAkY29sb3IxLCAkY29sb3IyICk7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBjb2xvckJsZW5kRGlmZmVyZW5jZSggJGNiLCAkY3MgKXsKCQlyZXR1cm4gYWJzKCRjYiAtICRjcyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGV4Y2x1c2lvbiggJGNvbG9yMSA9IG51bGwsICRjb2xvcjIgPSBudWxsICl7CgkJaWYgKCEkY29sb3IxIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yKSB7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVGhlIGZpcnN0IGFyZ3VtZW50IHRvIGV4Y2x1c2lvbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIGV4Y2x1c2lvbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBhcnJheSgkdGhpcywnY29sb3JCbGVuZEV4Y2x1c2lvbicpLCAgJGNvbG9yMSwgJGNvbG9yMiApOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gY29sb3JCbGVuZEV4Y2x1c2lvbiggJGNiLCAkY3MgKXsKCQlyZXR1cm4gJGNiICsgJGNzIC0gMiAqICRjYiAqICRjczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gYXZlcmFnZSgkY29sb3IxID0gbnVsbCwgJGNvbG9yMiA9IG51bGwpewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBhdmVyYWdlIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoJCWlmICghJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBzZWNvbmQgYXJndW1lbnQgdG8gYXZlcmFnZSBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jb2xvckJsZW5kKCBhcnJheSgkdGhpcywnY29sb3JCbGVuZEF2ZXJhZ2UnKSwgICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCgkvLyBub24tdzNjIGZ1bmN0aW9uczoKCXB1YmxpYyBmdW5jdGlvbiBjb2xvckJsZW5kQXZlcmFnZSgkY2IsICRjcyApewoJCXJldHVybiAoJGNiICsgJGNzKSAvIDI7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG5lZ2F0aW9uKCRjb2xvcjEgPSBudWxsLCAkY29sb3IyID0gbnVsbCApewoJCWlmICghJGNvbG9yMSBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvcikgewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ1RoZSBmaXJzdCBhcmd1bWVudCB0byBuZWdhdGlvbiBtdXN0IGJlIGEgY29sb3InIC4gKCRjb2xvcjEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiA/ICcgKGRpZCB5b3UgZm9yZ290IGNvbW1hcz8pJyA6ICcnKSApOwoJCX0KCQlpZiAoISRjb2xvcjIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQ29sb3IpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG5lZ2F0aW9uIG11c3QgYmUgYSBjb2xvcicgLiAoJGNvbG9yMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uID8gJyAoZGlkIHlvdSBmb3Jnb3QgY29tbWFzPyknIDogJycpICk7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmNvbG9yQmxlbmQoIGFycmF5KCR0aGlzLCdjb2xvckJsZW5kTmVnYXRpb24nKSwgICRjb2xvcjEsICRjb2xvcjIgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29sb3JCbGVuZE5lZ2F0aW9uKCRjYiwgJGNzKXsKCQlyZXR1cm4gMSAtIGFicygkY2IgKyAkY3MgLSAxKTsKCX0KCgkvLyB+IEVuZCBvZiBDb2xvciBCbGVuZGluZwoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Less.php.combine</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Ci4vUGFyc2VyLnBocAouL0NvbG9ycy5waHAKLi9FbnZpcm9ubWVudC5waHAKLi9GdW5jdGlvbnMucGhwCi4vTWltZS5waHAKLi9UcmVlLnBocAouL091dHB1dC5waHAKLi9WaXNpdG9yLnBocAouL1Zpc2l0b3JSZXBsYWNpbmcucGhwCi4vQ29uZmlndXJhYmxlLnBocAouL1RyZWUKLi9WaXNpdG9yCi4vRXhjZXB0aW9uL1BhcnNlci5waHAKLi9FeGNlcHRpb24vCi4vT3V0cHV0Ci4vU291cmNlTWFwCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Mime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBNaW1lIGxvb2t1cAogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIG5vZGUKICovCmNsYXNzIExlc3NfTWltZXsKCgkvLyB0aGlzIG1hcCBpcyBpbnRlbnRpb25hbGx5IGluY29tcGxldGUKCS8vIGlmIHlvdSB3YW50IG1vcmUsIGluc3RhbGwgJ21pbWUnIGRlcAoJc3RhdGljICRfdHlwZXMgPSBhcnJheSgKCSAgICAgICAgJy5odG0nID0+ICd0ZXh0L2h0bWwnLAoJICAgICAgICAnLmh0bWwnPT4gJ3RleHQvaHRtbCcsCgkgICAgICAgICcuZ2lmJyA9PiAnaW1hZ2UvZ2lmJywKCSAgICAgICAgJy5qcGcnID0+ICdpbWFnZS9qcGVnJywKCSAgICAgICAgJy5qcGVnJz0+ICdpbWFnZS9qcGVnJywKCSAgICAgICAgJy5wbmcnID0+ICdpbWFnZS9wbmcnLAoJICAgICAgICAnLnR0ZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10dGYnLAoJICAgICAgICAnLm90ZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC1vdGYnLAoJICAgICAgICAnLmVvdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0JywKCSAgICAgICAgJy53b2ZmJyA9PiAnYXBwbGljYXRpb24veC1mb250LXdvZmYnLAoJICAgICAgICAnLnN2ZycgPT4gJ2ltYWdlL3N2Zyt4bWwnLAoJICAgICAgICApOwoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9va3VwKCAkZmlsZXBhdGggKXsKCQkkcGFydHMgPSBleHBsb2RlKCcuJywkZmlsZXBhdGgpOwoJCSRleHQgPSAnLicuc3RydG9sb3dlcihhcnJheV9wb3AoJHBhcnRzKSk7CgoJCWlmKCAhaXNzZXQoc2VsZjo6JF90eXBlc1skZXh0XSkgKXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJCXJldHVybiBzZWxmOjokX3R5cGVzWyRleHRdOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hhcnNldHNfbG9va3VwKCAkdHlwZSA9IG51bGwgKXsKCQkvLyBhc3N1bWVzIGFsbCB0ZXh0IHR5cGVzIGFyZSBVVEYtOAoJCXJldHVybiAkdHlwZSAmJiBwcmVnX21hdGNoKCcvXnRleHRcLy8nLCR0eXBlKSA/ICdVVEYtOCcgOiAnJzsKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Output.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBQYXJzZXIgb3V0cHV0CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2Ugb3V0cHV0CiAqLwpjbGFzcyBMZXNzX091dHB1dHsKCgkvKioKCSAqIE91dHB1dCBob2xkZXIKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcm90ZWN0ZWQgJHN0cnMgPSBhcnJheSgpOwoKCS8qKgoJICogQWRkcyBhIGNodW5rIHRvIHRoZSBzdGFjawoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGNodW5rIFRoZSBjaHVuayB0byBvdXRwdXQKCSAqIEBwYXJhbSBMZXNzX0ZpbGVJbmZvICRmaWxlSW5mbyBUaGUgZmlsZSBpbmZvcm1hdGlvbgoJICogQHBhcmFtIGludGVnZXIgJGluZGV4IFRoZSBpbmRleAoJICogQHBhcmFtIG1peGVkICRtYXBMaW5lcwoJICovCglwdWJsaWMgZnVuY3Rpb24gYWRkKCRjaHVuaywgJGZpbGVJbmZvID0gbnVsbCwgJGluZGV4ID0gMCwgJG1hcExpbmVzID0gbnVsbCl7CgkJJHRoaXMtPnN0cnNbXSA9ICRjaHVuazsKCX0KCgkvKioKCSAqIElzIHRoZSBvdXRwdXQgZW1wdHk/CgkgKgoJICogQHJldHVybiBib29sZWFuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpc0VtcHR5KCl7CgkJcmV0dXJuIGNvdW50KCR0aGlzLT5zdHJzKSA9PT0gMDsKCX0KCgoJLyoqCgkgKiBDb252ZXJ0cyB0aGUgb3V0cHV0IHRvIHN0cmluZwoJICoKCSAqIEByZXR1cm4gc3RyaW5nCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiB0b1N0cmluZygpewoJCXJldHVybiBpbXBsb2RlKCcnLCR0aGlzLT5zdHJzKTsKCX0KCn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Output/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Output/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Output/Mapped.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBQYXJzZXIgb3V0cHV0IHdpdGggc291cmNlIG1hcA0KICoNCiAqIEBwYWNrYWdlIExlc3MNCiAqIEBzdWJwYWNrYWdlIE91dHB1dA0KICovDQpjbGFzcyBMZXNzX091dHB1dF9NYXBwZWQgZXh0ZW5kcyBMZXNzX091dHB1dCB7DQoNCgkvKioNCgkgKiBUaGUgc291cmNlIG1hcCBnZW5lcmF0b3INCgkgKg0KCSAqIEB2YXIgTGVzc19Tb3VyY2VNYXBfR2VuZXJhdG9yDQoJICovDQoJcHJvdGVjdGVkICRnZW5lcmF0b3I7DQoNCgkvKioNCgkgKiBDdXJyZW50IGxpbmUNCgkgKg0KCSAqIEB2YXIgaW50ZWdlcg0KCSAqLw0KCXByb3RlY3RlZCAkbGluZU51bWJlciA9IDA7DQoNCgkvKioNCgkgKiBDdXJyZW50IGNvbHVtbg0KCSAqDQoJICogQHZhciBpbnRlZ2VyDQoJICovDQoJcHJvdGVjdGVkICRjb2x1bW4gPSAwOw0KDQoJLyoqDQoJICogQXJyYXkgb2YgY29udGVudHMgbWFwIChmaWxlIGFuZCBpdHMgY29udGVudCkNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJGNvbnRlbnRzTWFwID0gYXJyYXkoKTsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gYXJyYXkgJGNvbnRlbnRzTWFwIEFycmF5IG9mIGZpbGVuYW1lIHRvIGNvbnRlbnRzIG1hcA0KCSAqIEBwYXJhbSBMZXNzX1NvdXJjZU1hcF9HZW5lcmF0b3IgJGdlbmVyYXRvcg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkY29udGVudHNNYXAsICRnZW5lcmF0b3Ipew0KCQkkdGhpcy0+Y29udGVudHNNYXAgPSAkY29udGVudHNNYXA7DQoJCSR0aGlzLT5nZW5lcmF0b3IgPSAkZ2VuZXJhdG9yOw0KCX0NCg0KCS8qKg0KCSAqIEFkZHMgYSBjaHVuayB0byB0aGUgc3RhY2sNCgkgKiBUaGUgJGluZGV4IGZvciBsZXNzLnBocCBtYXkgYmUgZGlmZmVyZW50IGZyb20gbGVzcy5qcyBzaW5jZSBsZXNzLnBocCBkb2VzIG5vdCBjaHVua2lmeSBpbnB1dHMNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJGNodW5rDQoJICogQHBhcmFtIHN0cmluZyAkZmlsZUluZm8NCgkgKiBAcGFyYW0gaW50ZWdlciAkaW5kZXgNCgkgKiBAcGFyYW0gbWl4ZWQgJG1hcExpbmVzDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGFkZCgkY2h1bmssICRmaWxlSW5mbyA9IG51bGwsICRpbmRleCA9IDAsICRtYXBMaW5lcyA9IG51bGwpew0KDQoJCS8vaWdub3JlIGFkZGluZyBlbXB0eSBzdHJpbmdzDQoJCWlmKCAkY2h1bmsgPT09ICcnICl7DQoJCQlyZXR1cm47DQoJCX0NCg0KDQoJCSRzb3VyY2VMaW5lcyA9IGFycmF5KCk7DQoJCSRzb3VyY2VDb2x1bW5zID0gJyAnOw0KDQoNCgkJaWYoICRmaWxlSW5mbyApew0KDQoJCQkkdXJsID0gJGZpbGVJbmZvWydjdXJyZW50VXJpJ107DQoNCgkJCWlmKCBpc3NldCgkdGhpcy0+Y29udGVudHNNYXBbJHVybF0pICl7DQoJCQkJJGlucHV0U291cmNlID0gc3Vic3RyKCR0aGlzLT5jb250ZW50c01hcFskdXJsXSwgMCwgJGluZGV4KTsNCgkJCQkkc291cmNlTGluZXMgPSBleHBsb2RlKCJcbiIsICRpbnB1dFNvdXJjZSk7DQoJCQkJJHNvdXJjZUNvbHVtbnMgPSBlbmQoJHNvdXJjZUxpbmVzKTsNCgkJCX1lbHNlew0KCQkJCXRocm93IG5ldyBFeGNlcHRpb24oJ0ZpbGVuYW1lICcuJHVybC4nIG5vdCBpbiBjb250ZW50c01hcCcpOw0KCQkJfQ0KDQoJCX0NCg0KCQkkbGluZXMgPSBleHBsb2RlKCJcbiIsICRjaHVuayk7DQoJCSRjb2x1bW5zID0gZW5kKCRsaW5lcyk7DQoNCgkJaWYoJGZpbGVJbmZvKXsNCg0KCQkJaWYoISRtYXBMaW5lcyl7DQoJCQkJJHRoaXMtPmdlbmVyYXRvci0+YWRkTWFwcGluZygNCgkJCQkJCSR0aGlzLT5saW5lTnVtYmVyICsgMSwJCQkJCS8vIGdlbmVyYXRlZF9saW5lDQoJCQkJCQkkdGhpcy0+Y29sdW1uLAkJCQkJCQkvLyBnZW5lcmF0ZWRfY29sdW1uDQoJCQkJCQljb3VudCgkc291cmNlTGluZXMpLAkJCQkJLy8gb3JpZ2luYWxfbGluZQ0KCQkJCQkJc3RybGVuKCRzb3VyY2VDb2x1bW5zKSwJCQkJCS8vIG9yaWdpbmFsX2NvbHVtbg0KCQkJCQkJJGZpbGVJbmZvDQoJCQkJKTsNCgkJCX1lbHNlew0KCQkJCWZvcigkaSA9IDAsICRjb3VudCA9IGNvdW50KCRsaW5lcyk7ICRpIDwgJGNvdW50OyAkaSsrKXsNCgkJCQkJJHRoaXMtPmdlbmVyYXRvci0+YWRkTWFwcGluZygNCgkJCQkJCSR0aGlzLT5saW5lTnVtYmVyICsgJGkgKyAxLAkJCQkvLyBnZW5lcmF0ZWRfbGluZQ0KCQkJCQkJJGkgPT09IDAgPyAkdGhpcy0+Y29sdW1uIDogMCwJCQkvLyBnZW5lcmF0ZWRfY29sdW1uDQoJCQkJCQljb3VudCgkc291cmNlTGluZXMpICsgJGksCQkJCS8vIG9yaWdpbmFsX2xpbmUNCgkJCQkJCSRpID09PSAwID8gc3RybGVuKCRzb3VyY2VDb2x1bW5zKSA6IDAsIAkvLyBvcmlnaW5hbF9jb2x1bW4NCgkJCQkJCSRmaWxlSW5mbw0KCQkJCQkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCWlmKGNvdW50KCRsaW5lcykgPT09IDEpew0KCQkJJHRoaXMtPmNvbHVtbiArPSBzdHJsZW4oJGNvbHVtbnMpOw0KCQl9ZWxzZXsNCgkJCSR0aGlzLT5saW5lTnVtYmVyICs9IGNvdW50KCRsaW5lcykgLSAxOw0KCQkJJHRoaXMtPmNvbHVtbiA9IHN0cmxlbigkY29sdW1ucyk7DQoJCX0NCg0KCQkvLyBhZGQgb25seSBjaHVuaw0KCQlwYXJlbnQ6OmFkZCgkY2h1bmspOw0KCX0NCg0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZSggZGlybmFtZShfX0ZJTEVfXykuJy9DYWNoZS5waHAnKTsKCi8qKgogKiBDbGFzcyBmb3IgcGFyc2luZyBhbmQgY29tcGlsaW5nIGxlc3MgZmlsZXMgaW50byBjc3MKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSBwYXJzZXIKICoKICovCmNsYXNzIExlc3NfUGFyc2VyewoKCgkvKioKCSAqIERlZmF1bHQgcGFyc2VyIG9wdGlvbnMKCSAqLwoJcHVibGljIHN0YXRpYyAkZGVmYXVsdF9vcHRpb25zID0gYXJyYXkoCgkJJ2NvbXByZXNzJwkJCQk9PiBmYWxzZSwJCQkvLyBvcHRpb24gLSB3aGV0aGVyIHRvIGNvbXByZXNzCgkJJ3N0cmljdFVuaXRzJwkJCT0+IGZhbHNlLAkJCS8vIHdoZXRoZXIgdW5pdHMgbmVlZCB0byBldmFsdWF0ZSBjb3JyZWN0bHkKCQknc3RyaWN0TWF0aCcJCQk9PiBmYWxzZSwJCQkvLyB3aGV0aGVyIG1hdGggaGFzIHRvIGJlIHdpdGhpbiBwYXJlbnRoZXNpcwoJCSdyZWxhdGl2ZVVybHMnCQkJPT4gdHJ1ZSwJCQkvLyBvcHRpb24gLSB3aGV0aGVyIHRvIGFkanVzdCBVUkwncyB0byBiZSByZWxhdGl2ZQoJCSd1cmxBcmdzJwkJCQk9PiAnJywJCQkJLy8gd2hldGhlciB0byBhZGQgYXJncyBpbnRvIHVybCB0b2tlbnMKCQknbnVtUHJlY2lzaW9uJwkJCT0+IDgsCgoJCSdpbXBvcnRfZGlycycJCQk9PiBhcnJheSgpLAoJCSdpbXBvcnRfY2FsbGJhY2snCQk9PiBudWxsLAoJCSdjYWNoZV9kaXInCQkJCT0+IG51bGwsCgkJJ2NhY2hlX21ldGhvZCcJCQk9PiAncGhwJywgCQkJLy8gZmFsc2UsICdzZXJpYWxpemUnLCAncGhwJywgJ3Zhcl9leHBvcnQnLCAnY2FsbGJhY2snOwoJCSdjYWNoZV9jYWxsYmFja19nZXQnCT0+IG51bGwsCgkJJ2NhY2hlX2NhbGxiYWNrX3NldCcJPT4gbnVsbCwKCgkJJ3NvdXJjZU1hcCcJCQkJPT4gZmFsc2UsCQkJLy8gd2hldGhlciB0byBvdXRwdXQgYSBzb3VyY2UgbWFwCgkJJ3NvdXJjZU1hcEJhc2VwYXRoJwkJPT4gbnVsbCwKCQknc291cmNlTWFwV3JpdGVUbycJCT0+IG51bGwsCgkJJ3NvdXJjZU1hcFVSTCcJCQk9PiBudWxsLAoKCQknaW5kZW50YXRpb24nIAkJCT0+ICcgICcsCgoJCSdwbHVnaW5zJwkJCQk9PiBhcnJheSgpLAoKCSk7CgoJcHVibGljIHN0YXRpYyAkb3B0aW9ucyA9IGFycmF5KCk7CgoKCXByaXZhdGUgJGlucHV0OwkJCQkJLy8gTGVzcyBpbnB1dCBzdHJpbmcKCXByaXZhdGUgJGlucHV0X2xlbjsJCQkJLy8gaW5wdXQgc3RyaW5nIGxlbmd0aAoJcHJpdmF0ZSAkcG9zOwkJCQkJLy8gY3VycmVudCBpbmRleCBpbiBgaW5wdXRgCglwcml2YXRlICRzYXZlU3RhY2sgPSBhcnJheSgpOwkvLyBob2xkcyBzdGF0ZSBmb3IgYmFja3RyYWNraW5nCglwcml2YXRlICRmdXJ0aGVzdDsKCXByaXZhdGUgJG1iX2ludGVybmFsX2VuY29kaW5nID0gJyc7IC8vIGZvciByZW1lbWJlciBleGlzdHMgdmFsdWUgb2YgbWJzdHJpbmcuaW50ZXJuYWxfZW5jb2RpbmcKCgkvKioKCSAqIEB2YXIgTGVzc19FbnZpcm9ubWVudAoJICovCglwcml2YXRlICRlbnY7CgoJcHJvdGVjdGVkICRydWxlcyA9IGFycmF5KCk7CgoJcHJpdmF0ZSBzdGF0aWMgJGltcG9ydHMgPSBhcnJheSgpOwoKCXB1YmxpYyBzdGF0aWMgJGhhc19leHRlbmRzID0gZmFsc2U7CgoJcHVibGljIHN0YXRpYyAkbmV4dF9pZCA9IDA7CgoJLyoqCgkgKiBGaWxlbmFtZSB0byBjb250ZW50cyBvZiBhbGwgcGFyc2VkIHRoZSBmaWxlcwoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljIHN0YXRpYyAkY29udGVudHNNYXAgPSBhcnJheSgpOwoKCgkvKioKCSAqIEBwYXJhbSBMZXNzX0Vudmlyb25tZW50fGFycmF5fG51bGwgJGVudgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoICRlbnYgPSBudWxsICl7CgoJCS8vIFRvcCBwYXJzZXIgb24gYW4gaW1wb3J0IHRyZWUgbXVzdCBiZSBzdXJlIHRoZXJlIGlzIG9uZSAiZW52IgoJCS8vIHdoaWNoIHdpbGwgdGhlbiBiZSBwYXNzZWQgYXJvdW5kIGJ5IHJlZmVyZW5jZS4KCQlpZiggJGVudiBpbnN0YW5jZW9mIExlc3NfRW52aXJvbm1lbnQgKXsKCQkJJHRoaXMtPmVudiA9ICRlbnY7CgkJfWVsc2V7CgkJCSR0aGlzLT5TZXRPcHRpb25zKExlc3NfUGFyc2VyOjokZGVmYXVsdF9vcHRpb25zKTsKCQkJJHRoaXMtPlJlc2V0KCAkZW52ICk7CgkJfQoKCQkvLyBtYnN0cmluZy5mdW5jX292ZXJsb2FkID4gMSBidWdmaXgKCQkvLyBUaGUgZW5jb2RpbmcgdmFsdWUgbXVzdCBiZSBzZXQgZm9yIGVhY2ggc291cmNlIGZpbGUsCgkJLy8gdGhlcmVmb3JlLCB0byBjb25zZXJ2ZSByZXNvdXJjZXMgYW5kIGltcHJvdmUgdGhlIHNwZWVkIG9mIHRoaXMgZGVzaWduIGlzIHRha2VuIGhlcmUKCQlpZiAoaW5pX2dldCgnbWJzdHJpbmcuZnVuY19vdmVybG9hZCcpKSB7CgkJCSR0aGlzLT5tYl9pbnRlcm5hbF9lbmNvZGluZyA9IGluaV9nZXQoJ21ic3RyaW5nLmludGVybmFsX2VuY29kaW5nJyk7CgkJCUBpbmlfc2V0KCdtYnN0cmluZy5pbnRlcm5hbF9lbmNvZGluZycsICdhc2NpaScpOwoJCX0KCgl9CgoKCS8qKgoJICogUmVzZXQgdGhlIHBhcnNlciBzdGF0ZSBjb21wbGV0ZWx5CgkgKgoJICovCglwdWJsaWMgZnVuY3Rpb24gUmVzZXQoICRvcHRpb25zID0gbnVsbCApewoJCSR0aGlzLT5ydWxlcyA9IGFycmF5KCk7CgkJc2VsZjo6JGltcG9ydHMgPSBhcnJheSgpOwoJCXNlbGY6OiRoYXNfZXh0ZW5kcyA9IGZhbHNlOwoJCXNlbGY6OiRpbXBvcnRzID0gYXJyYXkoKTsKCQlzZWxmOjokY29udGVudHNNYXAgPSBhcnJheSgpOwoKCQkkdGhpcy0+ZW52ID0gbmV3IExlc3NfRW52aXJvbm1lbnQoJG9wdGlvbnMpOwoJCSR0aGlzLT5lbnYtPkluaXQoKTsKCgkJLy9zZXQgbmV3IG9wdGlvbnMKCQlpZiggaXNfYXJyYXkoJG9wdGlvbnMpICl7CgkJCSR0aGlzLT5TZXRPcHRpb25zKExlc3NfUGFyc2VyOjokZGVmYXVsdF9vcHRpb25zKTsKCQkJJHRoaXMtPlNldE9wdGlvbnMoJG9wdGlvbnMpOwoJCX0KCX0KCgkvKioKCSAqIFNldCBvbmUgb3IgbW9yZSBjb21waWxlciBvcHRpb25zCgkgKiAgb3B0aW9uczogaW1wb3J0X2RpcnMsIGNhY2hlX2RpciwgY2FjaGVfbWV0aG9kCgkgKgoJICovCglwdWJsaWMgZnVuY3Rpb24gU2V0T3B0aW9ucyggJG9wdGlvbnMgKXsKCQlmb3JlYWNoKCRvcHRpb25zIGFzICRvcHRpb24gPT4gJHZhbHVlKXsKCQkJJHRoaXMtPlNldE9wdGlvbigkb3B0aW9uLCR2YWx1ZSk7CgkJfQoJfQoKCS8qKgoJICogU2V0IG9uZSBjb21waWxlciBvcHRpb24KCSAqCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBTZXRPcHRpb24oJG9wdGlvbiwkdmFsdWUpewoKCQlzd2l0Y2goJG9wdGlvbil7CgoJCQljYXNlICdpbXBvcnRfZGlycyc6CgkJCQkkdGhpcy0+U2V0SW1wb3J0RGlycygkdmFsdWUpOwoJCQlyZXR1cm47CgoJCQljYXNlICdjYWNoZV9kaXInOgoJCQkJaWYoIGlzX3N0cmluZygkdmFsdWUpICl7CgkJCQkJTGVzc19DYWNoZTo6U2V0Q2FjaGVEaXIoJHZhbHVlKTsKCQkJCQlMZXNzX0NhY2hlOjpDaGVja0NhY2hlRGlyKCk7CgkJCQl9CgkJCXJldHVybjsKCQl9CgoJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1skb3B0aW9uXSA9ICR2YWx1ZTsKCX0KCgkvKioKCSAqIFJlZ2lzdGVycyBhIG5ldyBjdXN0b20gZnVuY3Rpb24KCSAqCgkgKiBAcGFyYW0gIHN0cmluZyAgICRuYW1lICAgICBmdW5jdGlvbiBuYW1lCgkgKiBAcGFyYW0gIGNhbGxhYmxlICRjYWxsYmFjayBjYWxsYmFjawoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJGdW5jdGlvbigkbmFtZSwgJGNhbGxiYWNrKSB7CgkJJHRoaXMtPmVudi0+ZnVuY3Rpb25zWyRuYW1lXSA9ICRjYWxsYmFjazsKCX0KCgkvKioKCSAqIFJlbW92ZWQgYW4gYWxyZWFkeSByZWdpc3RlcmVkIGZ1bmN0aW9uCgkgKgoJICogQHBhcmFtICBzdHJpbmcgJG5hbWUgZnVuY3Rpb24gbmFtZQoJICovCglwdWJsaWMgZnVuY3Rpb24gdW5yZWdpc3RlckZ1bmN0aW9uKCRuYW1lKSB7CgkJaWYoIGlzc2V0KCR0aGlzLT5lbnYtPmZ1bmN0aW9uc1skbmFtZV0pICkKCQkJdW5zZXQoJHRoaXMtPmVudi0+ZnVuY3Rpb25zWyRuYW1lXSk7Cgl9CgoKCS8qKgoJICogR2V0IHRoZSBjdXJyZW50IGNzcyBidWZmZXIKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q3NzKCl7CgoJCSRwcmVjaXNpb24gPSBpbmlfZ2V0KCdwcmVjaXNpb24nKTsKCQlAaW5pX3NldCgncHJlY2lzaW9uJywxNik7CgkJJGxvY2FsZSA9IHNldGxvY2FsZShMQ19OVU1FUklDLCAwKTsKCQlzZXRsb2NhbGUoTENfTlVNRVJJQywgIkMiKTsKCgkJdHJ5IHsKCgkgCQkkcm9vdCA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldChhcnJheSgpLCAkdGhpcy0+cnVsZXMgKTsKCQkJJHJvb3QtPnJvb3QgPSB0cnVlOwoJCQkkcm9vdC0+Zmlyc3RSb290ID0gdHJ1ZTsKCgoJCQkkdGhpcy0+UHJlVmlzaXRvcnMoJHJvb3QpOwoKCQkJc2VsZjo6JGhhc19leHRlbmRzID0gZmFsc2U7CgkJCSRldmFsZFJvb3QgPSAkcm9vdC0+Y29tcGlsZSgkdGhpcy0+ZW52KTsKCgoKCQkJJHRoaXMtPlBvc3RWaXNpdG9ycygkZXZhbGRSb290KTsKCgkJCWlmKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3NvdXJjZU1hcCddICl7CgkJCQkkZ2VuZXJhdG9yID0gbmV3IExlc3NfU291cmNlTWFwX0dlbmVyYXRvcigkZXZhbGRSb290LCBMZXNzX1BhcnNlcjo6JGNvbnRlbnRzTWFwLCBMZXNzX1BhcnNlcjo6JG9wdGlvbnMgKTsKCQkJCS8vIHdpbGwgYWxzbyBzYXZlIGZpbGUKCQkJCS8vIEZJWE1FOiBzaG91bGQgaGFwcGVuIHNvbWV3aGVyZSBlbHNlPwoJCQkJJGNzcyA9ICRnZW5lcmF0b3ItPmdlbmVyYXRlQ1NTKCk7CgkJCX1lbHNlewoJCQkJJGNzcyA9ICRldmFsZFJvb3QtPnRvQ1NTKCk7CgkJCX0KCgkJCWlmKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10gKXsKCQkJCSRjc3MgPSBwcmVnX3JlcGxhY2UoJy8oXihccykrKXwoKFxzKSskKS8nLCAnJywgJGNzcyk7CgkJCX0KCgkJfSBjYXRjaCAoRXhjZXB0aW9uICRleGMpIHsKCQkJLy8gSW50ZW50aW9uYWwgZmFsbC10aHJvdWdoIHNvIHdlIGNhbiByZXNldCBlbnZpcm9ubWVudAoJCX0KCgkJLy9yZXNldCBwaHAgc2V0dGluZ3MKCQlAaW5pX3NldCgncHJlY2lzaW9uJywkcHJlY2lzaW9uKTsKCQlzZXRsb2NhbGUoTENfTlVNRVJJQywgJGxvY2FsZSk7CgoJCS8vIElmIHlvdSBwcmV2aW91c2x5IGRlZmluZWQgJHRoaXMtPm1iX2ludGVybmFsX2VuY29kaW5nCgkJLy8gaXMgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZSBlbmNvZGluZyBhcyBpdCB3YXMgYmVmb3JlCgkJaWYgKCR0aGlzLT5tYl9pbnRlcm5hbF9lbmNvZGluZyAhPSAnJykgewoJCQlAaW5pX3NldCgibWJzdHJpbmcuaW50ZXJuYWxfZW5jb2RpbmciLCAkdGhpcy0+bWJfaW50ZXJuYWxfZW5jb2RpbmcpOwoJCQkkdGhpcy0+bWJfaW50ZXJuYWxfZW5jb2RpbmcgPSAnJzsKCQl9CgoJCS8vIFJldGhyb3cgZXhjZXB0aW9uIGFmdGVyIHdlIGhhbmRsZWQgcmVzZXR0aW5nIHRoZSBlbnZpcm9ubWVudAoJCWlmICghZW1wdHkoJGV4YykpIHsKCQkJdGhyb3cgJGV4YzsKCQl9CgoKCgkJcmV0dXJuICRjc3M7Cgl9CgoJLyoqCgkgKiBSdW4gcHJlLWNvbXBpbGUgdmlzaXRvcnMKCSAqCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gUHJlVmlzaXRvcnMoJHJvb3QpewoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydwbHVnaW5zJ10gKXsKCQkJZm9yZWFjaChMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3BsdWdpbnMnXSBhcyAkcGx1Z2luKXsKCQkJCWlmKCAhZW1wdHkoJHBsdWdpbi0+aXNQcmVFdmFsVmlzaXRvcikgKXsKCQkJCQkkcGx1Z2luLT5ydW4oJHJvb3QpOwoJCQkJfQoJCQl9CgkJfQoJfQoKCgkvKioKCSAqIFJ1biBwb3N0LWNvbXBpbGUgdmlzaXRvcnMKCSAqCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gUG9zdFZpc2l0b3JzKCRldmFsZFJvb3QpewoKCQkkdmlzaXRvcnMgPSBhcnJheSgpOwoJCSR2aXNpdG9yc1tdID0gbmV3IExlc3NfVmlzaXRvcl9qb2luU2VsZWN0b3IoKTsKCQlpZiggc2VsZjo6JGhhc19leHRlbmRzICl7CgkJCSR2aXNpdG9yc1tdID0gbmV3IExlc3NfVmlzaXRvcl9wcm9jZXNzRXh0ZW5kcygpOwoJCX0KCQkkdmlzaXRvcnNbXSA9IG5ldyBMZXNzX1Zpc2l0b3JfdG9DU1MoKTsKCgoJCWlmKCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3BsdWdpbnMnXSApewoJCQlmb3JlYWNoKExlc3NfUGFyc2VyOjokb3B0aW9uc1sncGx1Z2lucyddIGFzICRwbHVnaW4pewoJCQkJaWYoIHByb3BlcnR5X2V4aXN0cygkcGx1Z2luLCdpc1ByZUV2YWxWaXNpdG9yJykgJiYgJHBsdWdpbi0+aXNQcmVFdmFsVmlzaXRvciApewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCWlmKCBwcm9wZXJ0eV9leGlzdHMoJHBsdWdpbiwnaXNQcmVWaXNpdG9yJykgJiYgJHBsdWdpbi0+aXNQcmVWaXNpdG9yICl7CgkJCQkJYXJyYXlfdW5zaGlmdCggJHZpc2l0b3JzLCAkcGx1Z2luKTsKCQkJCX1lbHNlewoJCQkJCSR2aXNpdG9yc1tdID0gJHBsdWdpbjsKCQkJCX0KCQkJfQoJCX0KCgoJCWZvcigkaSA9IDA7ICRpIDwgY291bnQoJHZpc2l0b3JzKTsgJGkrKyApewoJCQkkdmlzaXRvcnNbJGldLT5ydW4oJGV2YWxkUm9vdCk7CgkJfQoKCX0KCgoJLyoqCgkgKiBQYXJzZSBhIExlc3Mgc3RyaW5nIGludG8gY3NzCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc3RyIFRoZSBzdHJpbmcgdG8gY29udmVydAoJICogQHBhcmFtIHN0cmluZyAkdXJpX3Jvb3QgVGhlIHVybCBvZiB0aGUgZmlsZQoJICogQHJldHVybiBMZXNzX1RyZWVfUnVsZXNldHxMZXNzX1BhcnNlcgoJICovCglwdWJsaWMgZnVuY3Rpb24gcGFyc2UoICRzdHIsICRmaWxlX3VyaSA9IG51bGwgKXsKCgkJaWYoICEkZmlsZV91cmkgKXsKCQkJJHVyaV9yb290ID0gJyc7CgkJCSRmaWxlbmFtZSA9ICdhbm9ueW1vdXMtZmlsZS0nLkxlc3NfUGFyc2VyOjokbmV4dF9pZCsrLicubGVzcyc7CgkJfWVsc2V7CgkJCSRmaWxlX3VyaSA9IHNlbGY6OldpblBhdGgoJGZpbGVfdXJpKTsKCQkJJGZpbGVuYW1lID0gJGZpbGVfdXJpOwoJCQkkdXJpX3Jvb3QgPSBkaXJuYW1lKCRmaWxlX3VyaSk7CgkJfQoKCQkkcHJldmlvdXNGaWxlSW5mbyA9ICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbzsKCQkkdXJpX3Jvb3QgPSBzZWxmOjpXaW5QYXRoKCR1cmlfcm9vdCk7CgkJJHRoaXMtPlNldEZpbGVJbmZvKCRmaWxlbmFtZSwgJHVyaV9yb290KTsKCgkJJHRoaXMtPmlucHV0ID0gJHN0cjsKCQkkdGhpcy0+X3BhcnNlKCk7CgoJCWlmKCAkcHJldmlvdXNGaWxlSW5mbyApewoJCQkkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gPSAkcHJldmlvdXNGaWxlSW5mbzsKCQl9CgoJCXJldHVybiAkdGhpczsKCX0KCgoJLyoqCgkgKiBQYXJzZSBhIExlc3Mgc3RyaW5nIGZyb20gYSBnaXZlbiBmaWxlCgkgKgoJICogQHRocm93cyBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIKCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lIFRoZSBmaWxlIHRvIHBhcnNlCgkgKiBAcGFyYW0gc3RyaW5nICR1cmlfcm9vdCBUaGUgdXJsIG9mIHRoZSBmaWxlCgkgKiBAcGFyYW0gYm9vbCAkcmV0dXJuUm9vdCBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBhIGNzcyBzdHJpbmcgYSByb290IG5vZGUKCSAqIEByZXR1cm4gTGVzc19UcmVlX1J1bGVzZXR8TGVzc19QYXJzZXIKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHBhcnNlRmlsZSggJGZpbGVuYW1lLCAkdXJpX3Jvb3QgPSAnJywgJHJldHVyblJvb3QgPSBmYWxzZSl7CgoJCWlmKCAhZmlsZV9leGlzdHMoJGZpbGVuYW1lKSApewoJCQkkdGhpcy0+RXJyb3Ioc3ByaW50ZignRmlsZSBgJXNgIG5vdCBmb3VuZC4nLCAkZmlsZW5hbWUpKTsKCQl9CgoKCQkvLyBmaXggdXJpX3Jvb3Q/CgkJLy8gSW5zdGVhZCBvZiBUaGUgbWl4dHVyZSBvZiBmaWxlIHBhdGggZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgZGlyZWN0b3J5IHBhdGggZm9yIHRoZSBzZWNvbmQgYXJndW1lbnQgaGFzIGJlZQoJCWlmKCAhJHJldHVyblJvb3QgJiYgIWVtcHR5KCR1cmlfcm9vdCkgJiYgYmFzZW5hbWUoJHVyaV9yb290KSA9PSBiYXNlbmFtZSgkZmlsZW5hbWUpICl7CgkJCSR1cmlfcm9vdCA9IGRpcm5hbWUoJHVyaV9yb290KTsKCQl9CgoKCQkkcHJldmlvdXNGaWxlSW5mbyA9ICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbzsKCgoJCWlmKCAkZmlsZW5hbWUgKXsKCQkJJGZpbGVuYW1lID0gc2VsZjo6V2luUGF0aChyZWFscGF0aCgkZmlsZW5hbWUpKTsKCQl9CgkJJHVyaV9yb290ID0gc2VsZjo6V2luUGF0aCgkdXJpX3Jvb3QpOwoKCQkkdGhpcy0+U2V0RmlsZUluZm8oJGZpbGVuYW1lLCAkdXJpX3Jvb3QpOwoKCQlzZWxmOjpBZGRQYXJzZWRGaWxlKCRmaWxlbmFtZSk7CgoJCWlmKCAkcmV0dXJuUm9vdCApewoJCQkkcnVsZXMgPSAkdGhpcy0+R2V0UnVsZXMoICRmaWxlbmFtZSApOwoJCQkkcmV0dXJuID0gbmV3IExlc3NfVHJlZV9SdWxlc2V0KGFycmF5KCksICRydWxlcyApOwoJCX1lbHNlewoJCQkkdGhpcy0+X3BhcnNlKCAkZmlsZW5hbWUgKTsKCQkJJHJldHVybiA9ICR0aGlzOwoJCX0KCgkJaWYoICRwcmV2aW91c0ZpbGVJbmZvICl7CgkJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyA9ICRwcmV2aW91c0ZpbGVJbmZvOwoJCX0KCgkJcmV0dXJuICRyZXR1cm47Cgl9CgoKCS8qKgoJICogQWxsb3dzIGEgdXNlciB0byBzZXQgdmFyaWFibGVzIHZhbHVlcwoJICogQHBhcmFtIGFycmF5ICR2YXJzCgkgKiBAcmV0dXJuIExlc3NfUGFyc2VyCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBNb2RpZnlWYXJzKCAkdmFycyApewoKCQkkdGhpcy0+aW5wdXQgPSBMZXNzX1BhcnNlcjo6c2VyaWFsaXplVmFycyggJHZhcnMgKTsKCQkkdGhpcy0+X3BhcnNlKCk7CgoJCXJldHVybiAkdGhpczsKCX0KCgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQoJICovCglwdWJsaWMgZnVuY3Rpb24gU2V0RmlsZUluZm8oICRmaWxlbmFtZSwgJHVyaV9yb290ID0gJycpewoKCQkkZmlsZW5hbWUgPSBMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCRmaWxlbmFtZSk7CgkJJGRpcm5hbWUgPSBwcmVnX3JlcGxhY2UoJy9bXlwvXFxcXF0qJC8nLCcnLCRmaWxlbmFtZSk7CgoJCWlmKCAhZW1wdHkoJHVyaV9yb290KSApewoJCQkkdXJpX3Jvb3QgPSBydHJpbSgkdXJpX3Jvb3QsJy8nKS4nLyc7CgkJfQoKCQkkY3VycmVudEZpbGVJbmZvID0gYXJyYXkoKTsKCgkJLy9lbnRyeSBpbmZvCgkJaWYoIGlzc2V0KCR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykgKXsKCQkJJGN1cnJlbnRGaWxlSW5mb1snZW50cnlQYXRoJ10gPSAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ2VudHJ5UGF0aCddOwoJCQkkY3VycmVudEZpbGVJbmZvWydlbnRyeVVyaSddID0gJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvWydlbnRyeVVyaSddOwoJCQkkY3VycmVudEZpbGVJbmZvWydyb290cGF0aCddID0gJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvWydyb290cGF0aCddOwoKCQl9ZWxzZXsKCQkJJGN1cnJlbnRGaWxlSW5mb1snZW50cnlQYXRoJ10gPSAkZGlybmFtZTsKCQkJJGN1cnJlbnRGaWxlSW5mb1snZW50cnlVcmknXSA9ICR1cmlfcm9vdDsKCQkJJGN1cnJlbnRGaWxlSW5mb1sncm9vdHBhdGgnXSA9ICRkaXJuYW1lOwoJCX0KCgkJJGN1cnJlbnRGaWxlSW5mb1snY3VycmVudERpcmVjdG9yeSddID0gJGRpcm5hbWU7CgkJJGN1cnJlbnRGaWxlSW5mb1snY3VycmVudFVyaSddID0gJHVyaV9yb290LmJhc2VuYW1lKCRmaWxlbmFtZSk7CgkJJGN1cnJlbnRGaWxlSW5mb1snZmlsZW5hbWUnXSA9ICRmaWxlbmFtZTsKCQkkY3VycmVudEZpbGVJbmZvWyd1cmlfcm9vdCddID0gJHVyaV9yb290OwoKCgkJLy9pbmhlcml0IHJlZmVyZW5jZQoJCWlmKCBpc3NldCgkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddKSAmJiAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddICl7CgkJCSRjdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddID0gdHJ1ZTsKCQl9CgoJCSR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgoKCS8qKgoJICogQGRlcHJlY2F0ZWQgMS41LjEuMgoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIFNldENhY2hlRGlyKCAkZGlyICl7CgoJCWlmKCAhZmlsZV9leGlzdHMoJGRpcikgKXsKCQkJaWYoIG1rZGlyKCRkaXIpICl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fUGFyc2VyKCdMZXNzLnBocCBjYWNoZSBkaXJlY3RvcnkgY291bGRuXCd0IGJlIGNyZWF0ZWQ6ICcuJGRpcik7CgoJCX1lbHNlaWYoICFpc19kaXIoJGRpcikgKXsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX1BhcnNlcignTGVzcy5waHAgY2FjaGUgZGlyZWN0b3J5IGRvZXNuXCd0IGV4aXN0OiAnLiRkaXIpOwoKCQl9ZWxzZWlmKCAhaXNfd3JpdGFibGUoJGRpcikgKXsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX1BhcnNlcignTGVzcy5waHAgY2FjaGUgZGlyZWN0b3J5IGlzblwndCB3cml0YWJsZTogJy4kZGlyKTsKCgkJfWVsc2V7CgkJCSRkaXIgPSBzZWxmOjpXaW5QYXRoKCRkaXIpOwoJCQlMZXNzX0NhY2hlOjokY2FjaGVfZGlyID0gcnRyaW0oJGRpciwnLycpLicvJzsKCQkJcmV0dXJuIHRydWU7CgkJfQoJfQoKCgkvKioKCSAqIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgb3IgY2FsbGJhY2tzIHRoZSBwYXJzZXIgc2hvdWxkIHVzZSBmb3IgZGV0ZXJtaW5pbmcgaW1wb3J0IHBhdGhzCgkgKgoJICogQHBhcmFtIGFycmF5ICRkaXJzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBTZXRJbXBvcnREaXJzKCAkZGlycyApewoJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2RpcnMnXSA9IGFycmF5KCk7CgoJCWZvcmVhY2goJGRpcnMgYXMgJHBhdGggPT4gJHVyaV9yb290KXsKCgkJCSRwYXRoID0gc2VsZjo6V2luUGF0aCgkcGF0aCk7CgkJCWlmKCAhZW1wdHkoJHBhdGgpICl7CgkJCQkkcGF0aCA9IHJ0cmltKCRwYXRoLCcvJykuJy8nOwoJCQl9CgoJCQlpZiAoICFpc19jYWxsYWJsZSgkdXJpX3Jvb3QpICl7CgkJCQkkdXJpX3Jvb3QgPSBzZWxmOjpXaW5QYXRoKCR1cmlfcm9vdCk7CgkJCQlpZiggIWVtcHR5KCR1cmlfcm9vdCkgKXsKCQkJCQkkdXJpX3Jvb3QgPSBydHJpbSgkdXJpX3Jvb3QsJy8nKS4nLyc7CgkJCQl9CgkJCX0KCgkJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2RpcnMnXVskcGF0aF0gPSAkdXJpX3Jvb3Q7CgkJfQoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkZmlsZV9wYXRoCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gX3BhcnNlKCAkZmlsZV9wYXRoID0gbnVsbCApewoJCSR0aGlzLT5ydWxlcyA9IGFycmF5X21lcmdlKCR0aGlzLT5ydWxlcywgJHRoaXMtPkdldFJ1bGVzKCAkZmlsZV9wYXRoICkpOwoJfQoKCgkvKioKCSAqIFJldHVybiB0aGUgcmVzdWx0cyBvZiBwYXJzZVByaW1hcnkgZm9yICRmaWxlX3BhdGgKCSAqIFVzZSBjYWNoZSBhbmQgc2F2ZSBjYWNoZWQgcmVzdWx0cyBpZiBwb3NzaWJsZQoJICoKCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZmlsZV9wYXRoCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gR2V0UnVsZXMoICRmaWxlX3BhdGggKXsKCgkJJHRoaXMtPlNldElucHV0KCRmaWxlX3BhdGgpOwoKCQkkY2FjaGVfZmlsZSA9ICR0aGlzLT5DYWNoZUZpbGUoICRmaWxlX3BhdGggKTsKCQlpZiggJGNhY2hlX2ZpbGUgKXsKCQkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snY2FjaGVfbWV0aG9kJ10gPT0gJ2NhbGxiYWNrJyApewoJCQkJaWYoIGlzX2NhbGxhYmxlKExlc3NfUGFyc2VyOjokb3B0aW9uc1snY2FjaGVfY2FsbGJhY2tfZ2V0J10pICl7CgkJCQkJJGNhY2hlID0gY2FsbF91c2VyX2Z1bmNfYXJyYXkoCgkJCQkJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1snY2FjaGVfY2FsbGJhY2tfZ2V0J10sCgkJCQkJCWFycmF5KCR0aGlzLCAkZmlsZV9wYXRoLCAkY2FjaGVfZmlsZSkKCQkJCQkpOwoKCQkJCQlpZiggJGNhY2hlICl7CgkJCQkJCSR0aGlzLT5VbnNldElucHV0KCk7CgkJCQkJCXJldHVybiAkY2FjaGU7CgkJCQkJfQoJCQkJfQoKCQkJfWVsc2VpZiggZmlsZV9leGlzdHMoJGNhY2hlX2ZpbGUpICl7CgkJCQlzd2l0Y2goTGVzc19QYXJzZXI6OiRvcHRpb25zWydjYWNoZV9tZXRob2QnXSl7CgoJCQkJCS8vIFVzaW5nIHNlcmlhbGl6ZQoJCQkJCS8vIEZhc3RlciBidXQgdXNlcyBtb3JlIG1lbW9yeQoJCQkJCWNhc2UgJ3NlcmlhbGl6ZSc6CgkJCQkJCSRjYWNoZSA9IHVuc2VyaWFsaXplKGZpbGVfZ2V0X2NvbnRlbnRzKCRjYWNoZV9maWxlKSk7CgkJCQkJCWlmKCAkY2FjaGUgKXsKCQkJCQkJCXRvdWNoKCRjYWNoZV9maWxlKTsKCQkJCQkJCSR0aGlzLT5VbnNldElucHV0KCk7CgkJCQkJCQlyZXR1cm4gJGNhY2hlOwoJCQkJCQl9CgkJCQkJYnJlYWs7CgoKCQkJCQkvLyBVc2luZyBnZW5lcmF0ZWQgcGhwIGNvZGUKCQkJCQljYXNlICd2YXJfZXhwb3J0JzoKCQkJCQljYXNlICdwaHAnOgoJCQkJCSR0aGlzLT5VbnNldElucHV0KCk7CgkJCQkJcmV0dXJuIGluY2x1ZGUoJGNhY2hlX2ZpbGUpOwoJCQkJfQoJCQl9CgkJfQoKCQkkcnVsZXMgPSAkdGhpcy0+cGFyc2VQcmltYXJ5KCk7CgoJCWlmKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ2h1bmsoJHRoaXMtPmlucHV0LCBudWxsLCAkdGhpcy0+ZnVydGhlc3QsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbyk7CgkJfQoKCQkkdGhpcy0+VW5zZXRJbnB1dCgpOwoKCgkJLy9zYXZlIHRoZSBjYWNoZQoJCWlmKCAkY2FjaGVfZmlsZSApewoJCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjYWNoZV9tZXRob2QnXSA9PSAnY2FsbGJhY2snICl7CgkJCQlpZiggaXNfY2FsbGFibGUoTGVzc19QYXJzZXI6OiRvcHRpb25zWydjYWNoZV9jYWxsYmFja19zZXQnXSkgKXsKCQkJCQljYWxsX3VzZXJfZnVuY19hcnJheSgKCQkJCQkJTGVzc19QYXJzZXI6OiRvcHRpb25zWydjYWNoZV9jYWxsYmFja19zZXQnXSwKCQkJCQkJYXJyYXkoJHRoaXMsICRmaWxlX3BhdGgsICRjYWNoZV9maWxlLCAkcnVsZXMpCgkJCQkJKTsKCQkJCX0KCgkJCX1lbHNlewoJCQkJLy9tc2coJ3dyaXRlIGNhY2hlIGZpbGUnKTsKCQkJCXN3aXRjaChMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddKXsKCQkJCQljYXNlICdzZXJpYWxpemUnOgoJCQkJCQlmaWxlX3B1dF9jb250ZW50cyggJGNhY2hlX2ZpbGUsIHNlcmlhbGl6ZSgkcnVsZXMpICk7CgkJCQkJYnJlYWs7CgkJCQkJY2FzZSAncGhwJzoKCQkJCQkJZmlsZV9wdXRfY29udGVudHMoICRjYWNoZV9maWxlLCAnPD9waHAgcmV0dXJuICcuc2VsZjo6QXJnU3RyaW5nKCRydWxlcykuJzsgPz4nICk7CgkJCQkJYnJlYWs7CgkJCQkJY2FzZSAndmFyX2V4cG9ydCc6CgkJCQkJCS8vUmVxdWlyZXMgX19zZXRfc3RhdGUoKQoJCQkJCQlmaWxlX3B1dF9jb250ZW50cyggJGNhY2hlX2ZpbGUsICc8P3BocCByZXR1cm4gJy52YXJfZXhwb3J0KCRydWxlcyx0cnVlKS4nOyA/PicgKTsKCQkJCQlicmVhazsKCQkJCX0KCgkJCQlMZXNzX0NhY2hlOjpDbGVhbkNhY2hlKCk7CgkJCX0KCQl9CgoJCXJldHVybiAkcnVsZXM7Cgl9CgoKCS8qKgoJICogU2V0IHVwIHRoZSBpbnB1dCBidWZmZXIKCSAqCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBTZXRJbnB1dCggJGZpbGVfcGF0aCApewoKCQlpZiggJGZpbGVfcGF0aCApewoJCQkkdGhpcy0+aW5wdXQgPSBmaWxlX2dldF9jb250ZW50cyggJGZpbGVfcGF0aCApOwoJCX0KCgkJJHRoaXMtPnBvcyA9ICR0aGlzLT5mdXJ0aGVzdCA9IDA7CgoJCS8vIFJlbW92ZSBwb3RlbnRpYWwgVVRGIEJ5dGUgT3JkZXIgTWFyawoJCSR0aGlzLT5pbnB1dCA9IHByZWdfcmVwbGFjZSgnL1xcR1x4RUZceEJCXHhCRi8nLCAnJywgJHRoaXMtPmlucHV0KTsKCQkkdGhpcy0+aW5wdXRfbGVuID0gc3RybGVuKCR0aGlzLT5pbnB1dCk7CgoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydzb3VyY2VNYXAnXSAmJiAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8gKXsKCQkJJHVyaSA9ICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mb1snY3VycmVudFVyaSddOwoJCQlMZXNzX1BhcnNlcjo6JGNvbnRlbnRzTWFwWyR1cmldID0gJHRoaXMtPmlucHV0OwoJCX0KCgl9CgoKCS8qKgoJICogRnJlZSB1cCBzb21lIG1lbW9yeQoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIFVuc2V0SW5wdXQoKXsKCQl1bnNldCgkdGhpcy0+aW5wdXQsICR0aGlzLT5wb3MsICR0aGlzLT5pbnB1dF9sZW4sICR0aGlzLT5mdXJ0aGVzdCk7CgkJJHRoaXMtPnNhdmVTdGFjayA9IGFycmF5KCk7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBDYWNoZUZpbGUoICRmaWxlX3BhdGggKXsKCgkJaWYoICRmaWxlX3BhdGggJiYgJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgoJCQkkZW52ID0gZ2V0X29iamVjdF92YXJzKCR0aGlzLT5lbnYpOwoJCQl1bnNldCgkZW52WydmcmFtZXMnXSk7CgoJCQkkcGFydHMgPSBhcnJheSgpOwoJCQkkcGFydHNbXSA9ICRmaWxlX3BhdGg7CgkJCSRwYXJ0c1tdID0gZmlsZXNpemUoICRmaWxlX3BhdGggKTsKCQkJJHBhcnRzW10gPSBmaWxlbXRpbWUoICRmaWxlX3BhdGggKTsKCQkJJHBhcnRzW10gPSAkZW52OwoJCQkkcGFydHNbXSA9IExlc3NfVmVyc2lvbjo6Y2FjaGVfdmVyc2lvbjsKCQkJJHBhcnRzW10gPSBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddOwoJCQlyZXR1cm4gTGVzc19DYWNoZTo6JGNhY2hlX2RpciAuIExlc3NfQ2FjaGU6OiRwcmVmaXggLiBiYXNlX2NvbnZlcnQoIHNoYTEoanNvbl9lbmNvZGUoJHBhcnRzKSApLCAxNiwgMzYpIC4gJy5sZXNzY2FjaGUnOwoJCX0KCX0KCgoJc3RhdGljIGZ1bmN0aW9uIEFkZFBhcnNlZEZpbGUoJGZpbGUpewoJCXNlbGY6OiRpbXBvcnRzW10gPSAkZmlsZTsKCX0KCglzdGF0aWMgZnVuY3Rpb24gQWxsUGFyc2VkRmlsZXMoKXsKCQlyZXR1cm4gc2VsZjo6JGltcG9ydHM7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlCgkgKi8KCXN0YXRpYyBmdW5jdGlvbiBGaWxlUGFyc2VkKCRmaWxlKXsKCQlyZXR1cm4gaW5fYXJyYXkoJGZpbGUsc2VsZjo6JGltcG9ydHMpOwoJfQoKCglmdW5jdGlvbiBzYXZlKCkgewoJCSR0aGlzLT5zYXZlU3RhY2tbXSA9ICR0aGlzLT5wb3M7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiByZXN0b3JlKCkgewoJCSR0aGlzLT5wb3MgPSBhcnJheV9wb3AoJHRoaXMtPnNhdmVTdGFjayk7Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBmb3JnZXQoKXsKCQlhcnJheV9wb3AoJHRoaXMtPnNhdmVTdGFjayk7Cgl9CgoKCXByaXZhdGUgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKCRvZmZzZXQgPSAwKSB7CgkJcmV0dXJuIHByZWdfbWF0Y2goJy9ccy8nLCR0aGlzLT5pbnB1dFsgJHRoaXMtPnBvcyArICRvZmZzZXRdKTsKCX0KCgkvKioKCSAqIFBhcnNlIGZyb20gYSB0b2tlbiwgcmVnZXhwIG9yIHN0cmluZywgYW5kIG1vdmUgZm9yd2FyZCBpZiBtYXRjaAoJICoKCSAqIEBwYXJhbSBhcnJheSAkdG9rcwoJICogQHJldHVybiBhcnJheQoJICovCglwcml2YXRlIGZ1bmN0aW9uIG1hdGNoKCR0b2tzKXsKCgkJLy8gVGhlIG1hdGNoIGlzIGNvbmZpcm1lZCwgYWRkIHRoZSBtYXRjaCBsZW5ndGggdG8gYHRoaXM6OnBvc2AsCgkJLy8gYW5kIGNvbnN1bWUgYW55IGV4dHJhIHdoaXRlLXNwYWNlIGNoYXJhY3RlcnMgKCcgJyB8fCAnXG4nKQoJCS8vIHdoaWNoIGNvbWUgYWZ0ZXIgdGhhdC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IExlU1MncwoJCS8vIGdyYW1tYXIgaXMgbW9zdGx5IHdoaXRlLXNwYWNlIGluc2Vuc2l0aXZlLgoJCS8vCgoJCWZvcmVhY2goJHRva3MgYXMgJHRvayl7CgoJCQkkY2hhciA9ICR0b2tbMF07CgoJCQlpZiggJGNoYXIgPT09ICcvJyApewoJCQkJJG1hdGNoID0gJHRoaXMtPk1hdGNoUmVnKCR0b2spOwoKCQkJCWlmKCAkbWF0Y2ggKXsKCQkJCQlyZXR1cm4gY291bnQoJG1hdGNoKSA9PT0gMSA/ICRtYXRjaFswXSA6ICRtYXRjaDsKCQkJCX0KCgkJCX1lbHNlaWYoICRjaGFyID09PSAnIycgKXsKCQkJCSRtYXRjaCA9ICR0aGlzLT5NYXRjaENoYXIoJHRva1sxXSk7CgoJCQl9ZWxzZXsKCQkJCS8vIE5vbi10ZXJtaW5hbCwgbWF0Y2ggdXNpbmcgYSBmdW5jdGlvbiBjYWxsCgkJCQkkbWF0Y2ggPSAkdGhpcy0+JHRvaygpOwoKCQkJfQoKCQkJaWYoICRtYXRjaCApewoJCQkJcmV0dXJuICRtYXRjaDsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIEBwYXJhbSBzdHJpbmdbXSAkdG9rcwoJICoKCSAqIEByZXR1cm4gc3RyaW5nCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gTWF0Y2hGdW5jcygkdG9rcyl7CgoJCWlmKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApewoJCQlmb3JlYWNoKCR0b2tzIGFzICR0b2spewoJCQkJJG1hdGNoID0gJHRoaXMtPiR0b2soKTsKCQkJCWlmKCAkbWF0Y2ggKXsKCQkJCQlyZXR1cm4gJG1hdGNoOwoJCQkJfQoJCQl9CgkJfQoKCX0KCgkvLyBNYXRjaCBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LAoJcHJpdmF0ZSBmdW5jdGlvbiBNYXRjaENoYXIoJHRvayl7CgkJaWYoICgkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbikgJiYgKCR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA9PT0gJHRvaykgKXsKCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKDEpOwoJCQlyZXR1cm4gJHRvazsKCQl9Cgl9CgoJLy8gTWF0Y2ggYSByZWdleHAgZnJvbSB0aGUgY3VycmVudCBzdGFydCBwb2ludAoJcHJpdmF0ZSBmdW5jdGlvbiBNYXRjaFJlZygkdG9rKXsKCgkJaWYoIHByZWdfbWF0Y2goJHRvaywgJHRoaXMtPmlucHV0LCAkbWF0Y2gsIDAsICR0aGlzLT5wb3MpICl7CgkJCSR0aGlzLT5za2lwV2hpdGVzcGFjZShzdHJsZW4oJG1hdGNoWzBdKSk7CgkJCXJldHVybiAkbWF0Y2g7CgkJfQoJfQoKCgkvKioKCSAqIFNhbWUgYXMgbWF0Y2goKSwgYnV0IGRvbid0IGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHBhcnNlciwKCSAqIGp1c3QgcmV0dXJuIHRoZSBtYXRjaC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0b2sKCSAqIEByZXR1cm4gaW50ZWdlcgoJICovCglwdWJsaWMgZnVuY3Rpb24gUGVla1JlZygkdG9rKXsKCQlyZXR1cm4gcHJlZ19tYXRjaCgkdG9rLCAkdGhpcy0+aW5wdXQsICRtYXRjaCwgMCwgJHRoaXMtPnBvcyk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gc3RyaW5nICR0b2sKCSAqLwoJcHVibGljIGZ1bmN0aW9uIFBlZWtDaGFyKCR0b2spewoJCS8vcmV0dXJuICgkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICR0b2sgKTsKCQlyZXR1cm4gKCR0aGlzLT5wb3MgPCAkdGhpcy0+aW5wdXRfbGVuKSAmJiAoJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdID09PSAkdG9rICk7Cgl9CgoKCS8qKgoJICogQHBhcmFtIGludGVnZXIgJGxlbmd0aAoJICovCglwdWJsaWMgZnVuY3Rpb24gc2tpcFdoaXRlc3BhY2UoJGxlbmd0aCl7CgoJCSR0aGlzLT5wb3MgKz0gJGxlbmd0aDsKCgkJZm9yKDsgJHRoaXMtPnBvcyA8ICR0aGlzLT5pbnB1dF9sZW47ICR0aGlzLT5wb3MrKyApewoJCQkkYyA9ICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXTsKCgkJCWlmKCAoJGMgIT09ICJcbiIpICYmICgkYyAhPT0gIlxyIikgJiYgKCRjICE9PSAiXHQiKSAmJiAoJGMgIT09ICcgJykgKXsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJfQoKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHRvawoJICogQHBhcmFtIHN0cmluZ3xudWxsICRtc2cKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGV4cGVjdCgkdG9rLCAkbXNnID0gTlVMTCkgewoJCSRyZXN1bHQgPSAkdGhpcy0+bWF0Y2goIGFycmF5KCR0b2spICk7CgkJaWYgKCEkcmVzdWx0KSB7CgkJCSR0aGlzLT5FcnJvciggJG1zZwk/ICJFeHBlY3RlZCAnIiAuICR0b2sgLiAiJyBnb3QgJyIgLiAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gLiAiJyIgOiAkbXNnICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkdG9rCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBleHBlY3RDaGFyKCR0b2ssICRtc2cgPSBudWxsICl7CgkJJHJlc3VsdCA9ICR0aGlzLT5NYXRjaENoYXIoJHRvayk7CgkJaWYoICEkcmVzdWx0ICl7CgkJCSR0aGlzLT5FcnJvciggJG1zZyA/ICJFeHBlY3RlZCAnIiAuICR0b2sgLiAiJyBnb3QgJyIgLiAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gLiAiJyIgOiAkbXNnICk7CgkJfWVsc2V7CgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCgkvLwoJLy8gSGVyZSBpbiwgdGhlIHBhcnNpbmcgcnVsZXMvZnVuY3Rpb25zCgkvLwoJLy8gVGhlIGJhc2ljIHN0cnVjdHVyZSBvZiB0aGUgc3ludGF4IHRyZWUgZ2VuZXJhdGVkIGlzIGFzIGZvbGxvd3M6CgkvLwoJLy8gICBSdWxlc2V0IC0+ICBSdWxlIC0+IFZhbHVlIC0+IEV4cHJlc3Npb24gLT4gRW50aXR5CgkvLwoJLy8gSGVyZSdzIHNvbWUgTEVTUyBjb2RlOgoJLy8KCS8vCS5jbGFzcyB7CgkvLwkgIGNvbG9yOiAjZmZmOwoJLy8JICBib3JkZXI6IDFweCBzb2xpZCAjMDAwOwoJLy8JICB3aWR0aDogQHcgKyA0cHg7CgkvLwkgID4gLmNoaWxkIHsuLi59CgkvLwl9CgkvLwoJLy8gQW5kIGhlcmUncyB3aGF0IHRoZSBwYXJzZSB0cmVlIG1pZ2h0IGxvb2sgbGlrZToKCS8vCgkvLwkgUnVsZXNldCAoU2VsZWN0b3IgJy5jbGFzcycsIFsKCS8vCQkgUnVsZSAoImNvbG9yIiwgIFZhbHVlIChbRXhwcmVzc2lvbiBbQ29sb3IgI2ZmZl1dKSkKCS8vCQkgUnVsZSAoImJvcmRlciIsIFZhbHVlIChbRXhwcmVzc2lvbiBbRGltZW5zaW9uIDFweF1bS2V5d29yZCAic29saWQiXVtDb2xvciAjMDAwXV0pKQoJLy8JCSBSdWxlICgid2lkdGgiLCAgVmFsdWUgKFtFeHByZXNzaW9uIFtPcGVyYXRpb24gIisiIFtWYXJpYWJsZSAiQHciXVtEaW1lbnNpb24gNHB4XV1dKSkKCS8vCQkgUnVsZXNldCAoU2VsZWN0b3IgW0VsZW1lbnQgJz4nLCAnLmNoaWxkJ10sIFsuLi5dKQoJLy8JIF0pCgkvLwoJLy8gIEluIGdlbmVyYWwsIG1vc3QgcnVsZXMgd2lsbCB0cnkgdG8gcGFyc2UgYSB0b2tlbiB3aXRoIHRoZSBgJCgpYCBmdW5jdGlvbiwgYW5kIGlmIHRoZSByZXR1cm4KCS8vICB2YWx1ZSBpcyB0cnVseSwgd2lsbCByZXR1cm4gYSBuZXcgbm9kZSwgb2YgdGhlIHJlbGV2YW50IHR5cGUuIFNvbWV0aW1lcywgd2UgbmVlZCB0byBjaGVjawoJLy8gIGZpcnN0LCBiZWZvcmUgcGFyc2luZywgdGhhdCdzIHdoZW4gd2UgdXNlIGBwZWVrKClgLgoJLy8KCgkvLwoJLy8gVGhlIGBwcmltYXJ5YCBydWxlIGlzIHRoZSAqZW50cnkqIGFuZCAqZXhpdCogcG9pbnQgb2YgdGhlIHBhcnNlci4KCS8vIFRoZSBydWxlcyBoZXJlIGNhbiBhcHBlYXIgYXQgYW55IGxldmVsIG9mIHRoZSBwYXJzZSB0cmVlLgoJLy8KCS8vIFRoZSByZWN1cnNpdmUgbmF0dXJlIG9mIHRoZSBncmFtbWFyIGlzIGFuIGludGVycGxheSBiZXR3ZWVuIHRoZSBgYmxvY2tgCgkvLyBydWxlLCB3aGljaCByZXByZXNlbnRzIGB7IC4uLiB9YCwgdGhlIGBydWxlc2V0YCBydWxlLCBhbmQgdGhpcyBgcHJpbWFyeWAgcnVsZSwKCS8vIGFzIHJlcHJlc2VudGVkIGJ5IHRoaXMgc2ltcGxpZmllZCBncmFtbWFyOgoJLy8KCS8vCSBwcmltYXJ5ICDihpIgIChydWxlc2V0IHwgcnVsZSkrCgkvLwkgcnVsZXNldCAg4oaSICBzZWxlY3RvcisgYmxvY2sKCS8vCSBibG9jawnihpIgICd7JyBwcmltYXJ5ICd9JwoJLy8KCS8vIE9ubHkgYXQgb25lIHBvaW50IGlzIHRoZSBwcmltYXJ5IHJ1bGUgbm90IGNhbGxlZCBmcm9tIHRoZQoJLy8gYmxvY2sgcnVsZTogYXQgdGhlIHJvb3QgbGV2ZWwuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVByaW1hcnkoKXsKCQkkcm9vdCA9IGFycmF5KCk7CgoJCXdoaWxlKCB0cnVlICl7CgoJCQlpZiggJHRoaXMtPnBvcyA+PSAkdGhpcy0+aW5wdXRfbGVuICl7CgkJCQlicmVhazsKCQkJfQoKCQkJJG5vZGUgPSAkdGhpcy0+cGFyc2VFeHRlbmQodHJ1ZSk7CgkJCWlmKCAkbm9kZSApewoJCQkJJHJvb3QgPSBhcnJheV9tZXJnZSgkcm9vdCwkbm9kZSk7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJLy8kbm9kZSA9ICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSggJ3BhcnNlTWl4aW5EZWZpbml0aW9uJywgJ3BhcnNlUnVsZScsICdwYXJzZVJ1bGVzZXQnLCAncGFyc2VNaXhpbkNhbGwnLCAncGFyc2VDb21tZW50JywgJ3BhcnNlRGlyZWN0aXZlJykpOwoJCQkkbm9kZSA9ICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSggJ3BhcnNlTWl4aW5EZWZpbml0aW9uJywgJ3BhcnNlTmFtZVZhbHVlJywgJ3BhcnNlUnVsZScsICdwYXJzZVJ1bGVzZXQnLCAncGFyc2VNaXhpbkNhbGwnLCAncGFyc2VDb21tZW50JywgJ3BhcnNlUnVsZXNldENhbGwnLCAncGFyc2VEaXJlY3RpdmUnKSk7CgoJCQlpZiggJG5vZGUgKXsKCQkJCSRyb290W10gPSAkbm9kZTsKCQkJfWVsc2VpZiggISR0aGlzLT5NYXRjaFJlZygnL1xcR1tcc1xuO10rLycpICl7CgkJCQlicmVhazsKCQkJfQoKICAgICAgICAgICAgaWYoICR0aGlzLT5QZWVrQ2hhcignfScpICl7CgkJCQlicmVhazsKCQkJfQoJCX0KCgkJcmV0dXJuICRyb290OwoJfQoKCgoJLy8gV2UgY3JlYXRlIGEgQ29tbWVudCBub2RlIGZvciBDU1MgY29tbWVudHMgYC8qICovYCwKCS8vIGJ1dCBrZWVwIHRoZSBMZVNTIGNvbW1lbnRzIGAvL2Agc2lsZW50LCBieSBqdXN0IHNraXBwaW5nCgkvLyBvdmVyIHRoZW0uCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQ29tbWVudCgpewoKCQlpZiggJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdICE9PSAnLycgKXsKCQkJcmV0dXJuOwoJCX0KCgkJaWYoICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zKzFdID09PSAnLycgKXsKCQkJJG1hdGNoID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHXC9cLy4qLycpOwoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajQoJ0xlc3NfVHJlZV9Db21tZW50JyxhcnJheSgkbWF0Y2hbMF0sIHRydWUsICR0aGlzLT5wb3MsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykpOwoJCX0KCgkJLy8kY29tbWVudCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1wvXCooPzpbXipdfFwqK1teXC8qXSkqXCorXC9cbj8vJyk7CgkJJGNvbW1lbnQgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEdcL1wqKD9zKS4qP1wqK1wvXG4/LycpOy8vbm90IHRoZSBzYW1lIGFzIGxlc3MuanMgdG8gcHJldmVudCBmYXRhbCBlcnJvcnMKCQlpZiggJGNvbW1lbnQgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmo0KCdMZXNzX1RyZWVfQ29tbWVudCcsYXJyYXkoJGNvbW1lbnRbMF0sIGZhbHNlLCAkdGhpcy0+cG9zLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUNvbW1lbnRzKCl7CgkJJGNvbW1lbnRzID0gYXJyYXkoKTsKCgkJd2hpbGUoICR0aGlzLT5wb3MgPCAkdGhpcy0+aW5wdXRfbGVuICl7CgkJCSRjb21tZW50ID0gJHRoaXMtPnBhcnNlQ29tbWVudCgpOwoJCQlpZiggISRjb21tZW50ICl7CgkJCQlicmVhazsKCQkJfQoKCQkJJGNvbW1lbnRzW10gPSAkY29tbWVudDsKCQl9CgoJCXJldHVybiAkY29tbWVudHM7Cgl9CgoKCgkvLwoJLy8gQSBzdHJpbmcsIHdoaWNoIHN1cHBvcnRzIGVzY2FwaW5nICIgYW5kICcKCS8vCgkvLwkgIm1pbGt5IHdheSIgJ2hlXCdzIHRoZSBvbmUhJwoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc1F1b3RlZCgpIHsKCQkkaiA9ICR0aGlzLT5wb3M7CgkJJGUgPSBmYWxzZTsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQlpZiggJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdID09PSAnficgKXsKCQkJJGorKzsKCQkJJGUgPSB0cnVlOyAvLyBFc2NhcGVkIHN0cmluZ3MKCQl9CgoJCWlmKCAkdGhpcy0+aW5wdXRbJGpdICE9ICciJyAmJiAkdGhpcy0+aW5wdXRbJGpdICE9PSAiJyIgKXsKCQkJcmV0dXJuOwoJCX0KCgkJaWYgKCRlKSB7CgkJCSR0aGlzLT5NYXRjaENoYXIoJ34nKTsKCQl9CgogICAgICAgICAgICAgICAgLy8gRml4IGZvciAjMTI0OiBtYXRjaCBlc2NhcGVkIG5ld2xpbmVzCiAgICAgICAgICAgICAgICAvLyRzdHIgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEciKCg/OlteIlxcXFxcclxuXXxcXFxcLikqKSJ8XCcoKD86W15cJ1xcXFxcclxuXXxcXFxcLikqKVwnLycpOwoJCSRzdHIgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEciKCg/OlteIlxcXFxcclxuXXxcXFxcLnxcXFxcXHJcbnxcXFxcW1xuXHJcZl0pKikifFwnKCg/OlteXCdcXFxcXHJcbl18XFxcXC58XFxcXFxyXG58XFxcXFtcblxyXGZdKSopXCcvJyk7CgoJCWlmKCAkc3RyICl7CgkJCSRyZXN1bHQgPSAkc3RyWzBdWzBdID09ICciJyA/ICRzdHJbMV0gOiAkc3RyWzJdOwoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajUoJ0xlc3NfVHJlZV9RdW90ZWQnLGFycmF5KCRzdHJbMF0sICRyZXN1bHQsICRlLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykgKTsKCQl9CgkJcmV0dXJuOwoJfQoKCgkvLwoJLy8gQSBjYXRjaC1hbGwgd29yZCwgc3VjaCBhczoKCS8vCgkvLwkgYmxhY2sgYm9yZGVyLWNvbGxhcHNlCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzS2V5d29yZCgpewoKCQkvLyRrID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHW19BLVphLXotXVtfQS1aYS16MC05LV0qLycpOwoJCSRrID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHJXxcXEdbX0EtWmEtei1dW19BLVphLXowLTktXSovJyk7CgkJaWYoICRrICl7CgkJCSRrID0gJGtbMF07CgkJCSRjb2xvciA9ICR0aGlzLT5mcm9tS2V5d29yZCgkayk7CgkJCWlmKCAkY29sb3IgKXsKCQkJCXJldHVybiAkY29sb3I7CgkJCX0KCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfS2V5d29yZCcsJGspOwoJCX0KCX0KCgkvLyBkdXBsaWNhdGUgb2YgTGVzc19UcmVlX0NvbG9yOjpGcm9tS2V5d29yZAoJcHJpdmF0ZSBmdW5jdGlvbiBGcm9tS2V5d29yZCggJGtleXdvcmQgKXsKCQkka2V5d29yZCA9IHN0cnRvbG93ZXIoJGtleXdvcmQpOwoKCQlpZiggTGVzc19Db2xvcnM6Omhhc093blByb3BlcnR5KCRrZXl3b3JkKSApewoJCQkvLyBkZXRlY3QgbmFtZWQgY29sb3IKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfQ29sb3InLHN1YnN0cihMZXNzX0NvbG9yczo6Y29sb3IoJGtleXdvcmQpLCAxKSk7CgkJfQoKCQlpZiggJGtleXdvcmQgPT09ICd0cmFuc3BhcmVudCcgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmozKCdMZXNzX1RyZWVfQ29sb3InLCBhcnJheSggYXJyYXkoMCwgMCwgMCksIDAsIHRydWUpKTsKCQl9Cgl9CgoJLy8KCS8vIEEgZnVuY3Rpb24gY2FsbAoJLy8KCS8vCSByZ2IoMjU1LCAwLCAyNTUpCgkvLwoJLy8gV2UgYWxzbyB0cnkgdG8gY2F0Y2ggSUUncyBgYWxwaGEoKWAsIGJ1dCBsZXQgdGhlIGBhbHBoYWAgcGFyc2VyCgkvLyBkZWFsIHdpdGggdGhlIGRldGFpbHMuCgkvLwoJLy8gVGhlIGFyZ3VtZW50cyBhcmUgcGFyc2VkIHdpdGggdGhlIGBlbnRpdGllcy5hcmd1bWVudHNgIHBhcnNlci4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNDYWxsKCl7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCgkJaWYoICFwcmVnX21hdGNoKCcvXFxHKFtcdy1dK3wlfHByb2dpZDpbXHdcLl0rKVwoLycsICR0aGlzLT5pbnB1dCwgJG5hbWUsMCwkdGhpcy0+cG9zKSApewoJCQlyZXR1cm47CgkJfQoJCSRuYW1lID0gJG5hbWVbMV07CgkJJG5hbWVMQyA9IHN0cnRvbG93ZXIoJG5hbWUpOwoKCQlpZiAoJG5hbWVMQyA9PT0gJ3VybCcpIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQkkdGhpcy0+cG9zICs9IHN0cmxlbigkbmFtZSk7CgoJCWlmKCAkbmFtZUxDID09PSAnYWxwaGEnICl7CgkJCSRhbHBoYV9yZXQgPSAkdGhpcy0+cGFyc2VBbHBoYSgpOwoJCQlpZiggJGFscGhhX3JldCApewoJCQkJcmV0dXJuICRhbHBoYV9yZXQ7CgkJCX0KCQl9CgoJCSR0aGlzLT5NYXRjaENoYXIoJygnKTsgLy8gUGFyc2UgdGhlICcoJyBhbmQgY29uc3VtZSB3aGl0ZXNwYWNlLgoKCQkkYXJncyA9ICR0aGlzLT5wYXJzZUVudGl0aWVzQXJndW1lbnRzKCk7CgoJCWlmKCAhJHRoaXMtPk1hdGNoQ2hhcignKScpICl7CgkJCXJldHVybjsKCQl9CgoJCWlmICgkbmFtZSkgewoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajQoJ0xlc3NfVHJlZV9DYWxsJyxhcnJheSgkbmFtZSwgJGFyZ3MsICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvKSApOwoJCX0KCX0KCgkvKioKCSAqIFBhcnNlIGEgbGlzdCBvZiBhcmd1bWVudHMKCSAqCgkgKiBAcmV0dXJuIGFycmF5CgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc0FyZ3VtZW50cygpewoKCQkkYXJncyA9IGFycmF5KCk7CgkJd2hpbGUoIHRydWUgKXsKCQkJJGFyZyA9ICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSgncGFyc2VFbnRpdGllc0Fzc2lnbm1lbnQnLCdwYXJzZUV4cHJlc3Npb24nKSApOwoJCQlpZiggISRhcmcgKXsKCQkJCWJyZWFrOwoJCQl9CgoJCQkkYXJnc1tdID0gJGFyZzsKCQkJaWYoICEkdGhpcy0+TWF0Y2hDaGFyKCcsJykgKXsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCXJldHVybiAkYXJnczsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNMaXRlcmFsKCl7CgkJcmV0dXJuICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSgncGFyc2VFbnRpdGllc0RpbWVuc2lvbicsJ3BhcnNlRW50aXRpZXNDb2xvcicsJ3BhcnNlRW50aXRpZXNRdW90ZWQnLCdwYXJzZVVuaWNvZGVEZXNjcmlwdG9yJykgKTsKCX0KCgkvLyBBc3NpZ25tZW50cyBhcmUgYXJndW1lbnQgZW50aXRpZXMgZm9yIGNhbGxzLgoJLy8gVGhleSBhcmUgcHJlc2VudCBpbiBpZSBmaWx0ZXIgcHJvcGVydGllcyBhcyBzaG93biBiZWxvdy4KCS8vCgkvLwkgZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoICpvcGFjaXR5PTUwKiApCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzQXNzaWdubWVudCgpIHsKCgkJJGtleSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1x3Kyg/PVxzPz0pLycpOwoJCWlmKCAhJGtleSApewoJCQlyZXR1cm47CgkJfQoKCQlpZiggISR0aGlzLT5NYXRjaENoYXIoJz0nKSApewoJCQlyZXR1cm47CgkJfQoKCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VFbnRpdHkoKTsKCQlpZiggJHZhbHVlICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMignTGVzc19UcmVlX0Fzc2lnbm1lbnQnLGFycmF5KCRrZXlbMF0sICR2YWx1ZSkpOwoJCX0KCX0KCgkvLwoJLy8gUGFyc2UgdXJsKCkgdG9rZW5zCgkvLwoJLy8gV2UgdXNlIGEgc3BlY2lmaWMgcnVsZSBmb3IgdXJscywgYmVjYXVzZSB0aGV5IGRvbid0IHJlYWxseSBiZWhhdmUgbGlrZQoJLy8gc3RhbmRhcmQgZnVuY3Rpb24gY2FsbHMuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGFyZ3VtZW50IGRvZXNuJ3QgaGF2ZQoJLy8gdG8gYmUgZW5jbG9zZWQgd2l0aGluIGEgc3RyaW5nLCBzbyBpdCBjYW4ndCBiZSBwYXJzZWQgYXMgYW4gRXhwcmVzc2lvbi4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNVcmwoKXsKCgoJCWlmKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gIT09ICd1JyB8fCAhJHRoaXMtPm1hdGNoUmVnKCcvXFxHdXJsXCgvJykgKXsKCQkJcmV0dXJuOwoJCX0KCgkJJHZhbHVlID0gJHRoaXMtPm1hdGNoKCBhcnJheSgncGFyc2VFbnRpdGllc1F1b3RlZCcsJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScsJy9cXEdkYXRhXDouKj9bXlwpXSsvJywnL1xcRyg/Oig/OlxcXFxbXChcKVwnIl0pfFteXChcKVwnIl0pKy8nKSApOwoJCWlmKCAhJHZhbHVlICl7CgkJCSR2YWx1ZSA9ICcnOwoJCX0KCgoJCSR0aGlzLT5leHBlY3RDaGFyKCcpJyk7CgoKCQlpZiggaXNzZXQoJHZhbHVlLT52YWx1ZSkgfHwgJHZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlX1ZhcmlhYmxlICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMignTGVzc19UcmVlX1VybCcsYXJyYXkoJHZhbHVlLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+TmV3T2JqMignTGVzc19UcmVlX1VybCcsIGFycmF5KCAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0Fub255bW91cycsJHZhbHVlKSwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvKSApOwoJfQoKCgkvLwoJLy8gQSBWYXJpYWJsZSBlbnRpdHksIHN1Y2ggYXMgYEBmaW5rYCwgaW4KCS8vCgkvLwkgd2lkdGg6IEBmaW5rICsgMnB4CgkvLwoJLy8gV2UgdXNlIGEgZGlmZmVyZW50IHBhcnNlciBmb3IgdmFyaWFibGUgZGVmaW5pdGlvbnMsCgkvLyBzZWUgYHBhcnNlcnMudmFyaWFibGVgLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc1ZhcmlhYmxlKCl7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQlpZiAoJHRoaXMtPlBlZWtDaGFyKCdAJykgJiYgKCRuYW1lID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHQEA/W1x3LV0rLycpKSkgewoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajMoJ0xlc3NfVHJlZV9WYXJpYWJsZScsIGFycmF5KCAkbmFtZVswXSwgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9Cgl9CgoKCS8vIEEgdmFyaWFibGUgZW50aXR5IHVzZWluZyB0aGUgcHJvdGVjdGl2ZSB7fSBlLmcuIEB7dmFyfQoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0aWVzVmFyaWFibGVDdXJseSgpIHsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQlpZiggJHRoaXMtPmlucHV0X2xlbiA+ICgkdGhpcy0+cG9zKzEpICYmICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXSA9PT0gJ0AnICYmICgkY3VybHkgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEdAXHsoW1x3LV0rKVx9LycpKSApewoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajMoJ0xlc3NfVHJlZV9WYXJpYWJsZScsYXJyYXkoJ0AnLiRjdXJseVsxXSwgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9Cgl9CgoJLy8KCS8vIEEgSGV4YWRlY2ltYWwgY29sb3IKCS8vCgkvLwkgIzRGM0MyRgoJLy8KCS8vIGByZ2JgIGFuZCBgaHNsYCBjb2xvcnMgYXJlIHBhcnNlZCB0aHJvdWdoIHRoZSBgZW50aXRpZXMuY2FsbGAgcGFyc2VyLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc0NvbG9yKCl7CgkJaWYgKCR0aGlzLT5QZWVrQ2hhcignIycpICYmICgkcmdiID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHIyhbQS1GYS1mMC05XXs2fXxbQS1GYS1mMC05XXszfSkvJykpKSB7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0NvbG9yJywkcmdiWzFdKTsKCQl9Cgl9CgoJLy8KCS8vIEEgRGltZW5zaW9uLCB0aGF0IGlzLCBhIG51bWJlciBhbmQgYSB1bml0CgkvLwoJLy8JIDAuNWVtIDk1JQoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFbnRpdGllc0RpbWVuc2lvbigpewoKCQkkYyA9IEBvcmQoJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdKTsKCgkJLy9JcyB0aGUgZmlyc3QgY2hhciBvZiB0aGUgZGltZW5zaW9uIDAtOSwgJy4nLCAnKycgb3IgJy0nCgkJaWYgKCgkYyA+IDU3IHx8ICRjIDwgNDMpIHx8ICRjID09PSA0NyB8fCAkYyA9PSA0NCl7CgkJCXJldHVybjsKCQl9CgoJCSR2YWx1ZSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhbKy1dP1xkKlwuP1xkKykoJXxbYS16XSspPy8nKTsKCQlpZiggJHZhbHVlICl7CgoJCQlpZiggaXNzZXQoJHZhbHVlWzJdKSApewoJCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoyKCdMZXNzX1RyZWVfRGltZW5zaW9uJywgYXJyYXkoJHZhbHVlWzFdLCR2YWx1ZVsyXSkpOwoJCQl9CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0RpbWVuc2lvbicsJHZhbHVlWzFdKTsKCQl9Cgl9CgoKCS8vCgkvLyBBIHVuaWNvZGUgZGVzY3JpcHRvciwgYXMgaXMgdXNlZCBpbiB1bmljb2RlLXJhbmdlCgkvLwoJLy8gVSswPz8gb3IgVSswMEExLTAwQTkKCS8vCglmdW5jdGlvbiBwYXJzZVVuaWNvZGVEZXNjcmlwdG9yKCkgewoJCSR1ZCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhVXCtbMC05YS1mQS1GP10rKShcLVswLTlhLWZBLUY/XSspPy8nKTsKCQlpZiggJHVkICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX1VuaWNvZGVEZXNjcmlwdG9yJywgJHVkWzBdKTsKCQl9Cgl9CgoKCS8vCgkvLyBKYXZhU2NyaXB0IGNvZGUgdG8gYmUgZXZhbHVhdGVkCgkvLwoJLy8JIGB3aW5kb3cubG9jYXRpb24uaHJlZmAKCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRW50aXRpZXNKYXZhc2NyaXB0KCl7CgkJJGUgPSBmYWxzZTsKCQkkaiA9ICR0aGlzLT5wb3M7CgkJaWYoICR0aGlzLT5pbnB1dFskal0gPT09ICd+JyApewoJCQkkaisrOwoJCQkkZSA9IHRydWU7CgkJfQoJCWlmKCAkdGhpcy0+aW5wdXRbJGpdICE9PSAnYCcgKXsKCQkJcmV0dXJuOwoJCX0KCQlpZiggJGUgKXsKCQkJJHRoaXMtPk1hdGNoQ2hhcignficpOwoJCX0KCQkkc3RyID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHYChbXmBdKilgLycpOwoJCWlmKCAkc3RyICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqMygnTGVzc19UcmVlX0phdmFzY3JpcHQnLCBhcnJheSgkc3RyWzFdLCAkdGhpcy0+cG9zLCAkZSkpOwoJCX0KCX0KCgoJLy8KCS8vIFRoZSB2YXJpYWJsZSBwYXJ0IG9mIGEgdmFyaWFibGUgZGVmaW5pdGlvbi4gVXNlZCBpbiB0aGUgYHJ1bGVgIHBhcnNlcgoJLy8KCS8vCSBAZmluazoKCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGUoKXsKCQlpZiAoJHRoaXMtPlBlZWtDaGFyKCdAJykgJiYgKCRuYW1lID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHKEBbXHctXSspXHMqOi8nKSkpIHsKCQkJcmV0dXJuICRuYW1lWzFdOwoJCX0KCX0KCgoJLy8KCS8vIFRoZSB2YXJpYWJsZSBwYXJ0IG9mIGEgdmFyaWFibGUgZGVmaW5pdGlvbi4gVXNlZCBpbiB0aGUgYHJ1bGVgIHBhcnNlcgoJLy8KCS8vIEBmaW5rKCk7CgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVJ1bGVzZXRDYWxsKCl7CgoJCWlmKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICdAJyAmJiAoJG5hbWUgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEcoQFtcdy1dKylccypcKFxzKlwpXHMqOy8nKSkgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfUnVsZXNldENhbGwnLCAkbmFtZVsxXSApOwoJCX0KCX0KCgoJLy8KCS8vIGV4dGVuZCBzeW50YXggLSB1c2VkIHRvIGV4dGVuZCBzZWxlY3RvcnMKCS8vCglmdW5jdGlvbiBwYXJzZUV4dGVuZCgkaXNSdWxlID0gZmFsc2UpewoKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSRleHRlbmRMaXN0ID0gYXJyYXkoKTsKCgoJCWlmKCAhJHRoaXMtPk1hdGNoUmVnKCAkaXNSdWxlID8gJy9cXEcmOmV4dGVuZFwoLycgOiAnL1xcRzpleHRlbmRcKC8nICkgKXsgcmV0dXJuOyB9CgoJCWRvewoJCQkkb3B0aW9uID0gbnVsbDsKCQkJJGVsZW1lbnRzID0gYXJyYXkoKTsKCQkJd2hpbGUoIHRydWUgKXsKCQkJCSRvcHRpb24gPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEcoYWxsKSg/PVxzKihcKXwsKSkvJyk7CgkJCQlpZiggJG9wdGlvbiApeyBicmVhazsgfQoJCQkJJGUgPSAkdGhpcy0+cGFyc2VFbGVtZW50KCk7CgkJCQlpZiggISRlICl7IGJyZWFrOyB9CgkJCQkkZWxlbWVudHNbXSA9ICRlOwoJCQl9CgoJCQlpZiggJG9wdGlvbiApewoJCQkJJG9wdGlvbiA9ICRvcHRpb25bMV07CgkJCX0KCgkJCSRleHRlbmRMaXN0W10gPSAkdGhpcy0+TmV3T2JqMygnTGVzc19UcmVlX0V4dGVuZCcsIGFycmF5KCAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX1NlbGVjdG9yJywkZWxlbWVudHMpLCAkb3B0aW9uLCAkaW5kZXggKSk7CgoJCX13aGlsZSggJHRoaXMtPk1hdGNoQ2hhcigiLCIpICk7CgoJCSR0aGlzLT5leHBlY3QoJy9cXEdcKS8nKTsKCgkJaWYoICRpc1J1bGUgKXsKCQkJJHRoaXMtPmV4cGVjdCgnL1xcRzsvJyk7CgkJfQoKCQlyZXR1cm4gJGV4dGVuZExpc3Q7Cgl9CgoKCS8vCgkvLyBBIE1peGluIGNhbGwsIHdpdGggYW4gb3B0aW9uYWwgYXJndW1lbnQgbGlzdAoJLy8KCS8vCSAjbWl4aW5zID4gLnNxdWFyZSgjZmZmKTsKCS8vCSAucm91bmRlZCg0cHgsIGJsYWNrKTsKCS8vCSAuYnV0dG9uOwoJLy8KCS8vIFRoZSBgd2hpbGVgIGxvb3AgaXMgdGhlcmUgYmVjYXVzZSBtaXhpbnMgY2FuIGJlCgkvLyBuYW1lc3BhY2VkLCBidXQgd2Ugb25seSBzdXBwb3J0IHRoZSBjaGlsZCBhbmQgZGVzY2VuZGFudAoJLy8gc2VsZWN0b3IgZm9yIG5vdy4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWl4aW5DYWxsKCl7CgoJCSRjaGFyID0gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdOwoJCWlmKCAkY2hhciAhPT0gJy4nICYmICRjaGFyICE9PSAnIycgKXsKCQkJcmV0dXJuOwoJCX0KCgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQkkdGhpcy0+c2F2ZSgpOyAvLyBzdG9wIHVzIGFic29yYmluZyBwYXJ0IG9mIGFuIGludmFsaWQgc2VsZWN0b3IKCgkJJGVsZW1lbnRzID0gJHRoaXMtPnBhcnNlTWl4aW5DYWxsRWxlbWVudHMoKTsKCgkJaWYoICRlbGVtZW50cyApewoKCQkJaWYoICR0aGlzLT5NYXRjaENoYXIoJygnKSApewoJCQkJJHJldHVybmVkID0gJHRoaXMtPnBhcnNlTWl4aW5BcmdzKHRydWUpOwoJCQkJJGFyZ3MgPSAkcmV0dXJuZWRbJ2FyZ3MnXTsKCQkJCSR0aGlzLT5leHBlY3RDaGFyKCcpJyk7CgkJCX1lbHNlewoJCQkJJGFyZ3MgPSBhcnJheSgpOwoJCQl9CgoJCQkkaW1wb3J0YW50ID0gJHRoaXMtPnBhcnNlSW1wb3J0YW50KCk7CgoJCQlpZiggJHRoaXMtPnBhcnNlRW5kKCkgKXsKCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCXJldHVybiAkdGhpcy0+TmV3T2JqNSgnTGVzc19UcmVlX01peGluX0NhbGwnLCBhcnJheSggJGVsZW1lbnRzLCAkYXJncywgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8sICRpbXBvcnRhbnQpKTsKCQkJfQoJCX0KCgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1peGluQ2FsbEVsZW1lbnRzKCl7CgkJJGVsZW1lbnRzID0gYXJyYXkoKTsKCQkkYyA9IG51bGw7CgoJCXdoaWxlKCB0cnVlICl7CgkJCSRlbGVtSW5kZXggPSAkdGhpcy0+cG9zOwoJCQkkZSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1sjLl0oPzpbXHctXXxcXFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKy8nKTsKCQkJaWYoICEkZSApewoJCQkJYnJlYWs7CgkJCX0KCQkJJGVsZW1lbnRzW10gPSAkdGhpcy0+TmV3T2JqNCgnTGVzc19UcmVlX0VsZW1lbnQnLCBhcnJheSgkYywgJGVbMF0sICRlbGVtSW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykpOwoJCQkkYyA9ICR0aGlzLT5NYXRjaENoYXIoJz4nKTsKCQl9CgoJCXJldHVybiAkZWxlbWVudHM7Cgl9CgoKCgkvKioKCSAqIEBwYXJhbSBib29sZWFuICRpc0NhbGwKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1peGluQXJncyggJGlzQ2FsbCApewoJCSRleHByZXNzaW9ucyA9IGFycmF5KCk7CgkJJGFyZ3NTZW1pQ29sb24gPSBhcnJheSgpOwoJCSRpc1NlbWlDb2xvblNlcGVyYXRlZCA9IG51bGw7CgkJJGFyZ3NDb21tYSA9IGFycmF5KCk7CgkJJGV4cHJlc3Npb25Db250YWluc05hbWVkID0gbnVsbDsKCQkkbmFtZSA9IG51bGw7CgkJJHJldHVybmVyID0gYXJyYXkoJ2FyZ3MnPT5hcnJheSgpLCAndmFyaWFkaWMnPT4gZmFsc2UpOwoKCQkkdGhpcy0+c2F2ZSgpOwoKCQl3aGlsZSggdHJ1ZSApewoJCQlpZiggJGlzQ2FsbCApewoJCQkJJGFyZyA9ICR0aGlzLT5NYXRjaEZ1bmNzKCBhcnJheSggJ3BhcnNlRGV0YWNoZWRSdWxlc2V0JywncGFyc2VFeHByZXNzaW9uJyApICk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+cGFyc2VDb21tZW50cygpOwoJCQkJaWYoICR0aGlzLT5pbnB1dFsgJHRoaXMtPnBvcyBdID09PSAnLicgJiYgJHRoaXMtPk1hdGNoUmVnKCcvXFxHXC57M30vJykgKXsKCQkJCQkkcmV0dXJuZXJbJ3ZhcmlhZGljJ10gPSB0cnVlOwoJCQkJCWlmKCAkdGhpcy0+TWF0Y2hDaGFyKCI7IikgJiYgISRpc1NlbWlDb2xvblNlcGVyYXRlZCApewoJCQkJCQkkaXNTZW1pQ29sb25TZXBlcmF0ZWQgPSB0cnVlOwoJCQkJCX0KCgkJCQkJaWYoICRpc1NlbWlDb2xvblNlcGVyYXRlZCApewoJCQkJCQkkYXJnc1NlbWlDb2xvbltdID0gYXJyYXkoJ3ZhcmlhZGljJz0+dHJ1ZSk7CgkJCQkJfWVsc2V7CgkJCQkJCSRhcmdzQ29tbWFbXSA9IGFycmF5KCd2YXJpYWRpYyc9PnRydWUpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCX0KCQkJCSRhcmcgPSAkdGhpcy0+TWF0Y2hGdW5jcyggYXJyYXkoJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScsJ3BhcnNlRW50aXRpZXNMaXRlcmFsJywncGFyc2VFbnRpdGllc0tleXdvcmQnKSApOwoJCQl9CgoJCQlpZiggISRhcmcgKXsKCQkJCWJyZWFrOwoJCQl9CgoKCQkJJG5hbWVMb29wID0gbnVsbDsKCQkJaWYoICRhcmcgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRXhwcmVzc2lvbiApewoJCQkJJGFyZy0+dGhyb3dBd2F5Q29tbWVudHMoKTsKCQkJfQoJCQkkdmFsdWUgPSAkYXJnOwoJCQkkdmFsID0gbnVsbDsKCgkJCWlmKCAkaXNDYWxsICl7CgkJCQkvLyBWYXJpYWJsZQoJCQkJaWYoIHByb3BlcnR5X2V4aXN0cygkYXJnLCd2YWx1ZScpICYmIGNvdW50KCRhcmctPnZhbHVlKSA9PSAxICl7CgkJCQkJJHZhbCA9ICRhcmctPnZhbHVlWzBdOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJHZhbCA9ICRhcmc7CgkJCX0KCgoJCQlpZiggJHZhbCBpbnN0YW5jZW9mIExlc3NfVHJlZV9WYXJpYWJsZSApewoKCQkJCWlmKCAkdGhpcy0+TWF0Y2hDaGFyKCc6JykgKXsKCQkJCQlpZiggJGV4cHJlc3Npb25zICl7CgkJCQkJCWlmKCAkaXNTZW1pQ29sb25TZXBlcmF0ZWQgKXsKCQkJCQkJCSR0aGlzLT5FcnJvcignQ2Fubm90IG1peCA7IGFuZCAsIGFzIGRlbGltaXRlciB0eXBlcycpOwoJCQkJCQl9CgkJCQkJCSRleHByZXNzaW9uQ29udGFpbnNOYW1lZCA9IHRydWU7CgkJCQkJfQoKCQkJCQkvLyB3ZSBkbyBub3Qgc3VwcG9ydCBzZXR0aW5nIGEgcnVsZXNldCBhcyBhIGRlZmF1bHQgdmFyaWFibGUgLSBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UKCQkJCQkvLyBIb3dldmVyIGlmIHdlIGRvIHdhbnQgdG8gYWRkIGl0LCB0aGVyZSBpcyBub3RoaW5nIGJsb2NraW5nIGl0LCBqdXN0IGRvbid0IGVycm9yCgkJCQkJLy8gYW5kIHJlbW92ZSBpc0NhbGwgZGVwZW5kZW5jeSBiZWxvdwoJCQkJCSR2YWx1ZSA9IG51bGw7CgkJCQkJaWYoICRpc0NhbGwgKXsKCQkJCQkJJHZhbHVlID0gJHRoaXMtPnBhcnNlRGV0YWNoZWRSdWxlc2V0KCk7CgkJCQkJfQoJCQkJCWlmKCAhJHZhbHVlICl7CgkJCQkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZUV4cHJlc3Npb24oKTsKCQkJCQl9CgoJCQkJCWlmKCAhJHZhbHVlICl7CgkJCQkJCWlmKCAkaXNDYWxsICl7CgkJCQkJCQkkdGhpcy0+RXJyb3IoJ2NvdWxkIG5vdCB1bmRlcnN0YW5kIHZhbHVlIGZvciBuYW1lZCBhcmd1bWVudCcpOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCQkJCSRyZXR1cm5lclsnYXJncyddID0gYXJyYXkoKTsKCQkJCQkJCXJldHVybiAkcmV0dXJuZXI7CgkJCQkJCX0KCQkJCQl9CgoJCQkJCSRuYW1lTG9vcCA9ICgkbmFtZSA9ICR2YWwtPm5hbWUpOwoJCQkJfWVsc2VpZiggISRpc0NhbGwgJiYgJHRoaXMtPk1hdGNoUmVnKCcvXFxHXC57M30vJykgKXsKCQkJCQkkcmV0dXJuZXJbJ3ZhcmlhZGljJ10gPSB0cnVlOwoJCQkJCWlmKCAkdGhpcy0+TWF0Y2hDaGFyKCI7IikgJiYgISRpc1NlbWlDb2xvblNlcGVyYXRlZCApewoJCQkJCQkkaXNTZW1pQ29sb25TZXBlcmF0ZWQgPSB0cnVlOwoJCQkJCX0KCQkJCQlpZiggJGlzU2VtaUNvbG9uU2VwZXJhdGVkICl7CgkJCQkJCSRhcmdzU2VtaUNvbG9uW10gPSBhcnJheSgnbmFtZSc9PiAkYXJnLT5uYW1lLCAndmFyaWFkaWMnID0+IHRydWUpOwoJCQkJCX1lbHNlewoJCQkJCQkkYXJnc0NvbW1hW10gPSBhcnJheSgnbmFtZSc9PiAkYXJnLT5uYW1lLCAndmFyaWFkaWMnID0+IHRydWUpOwoJCQkJCX0KCQkJCQlicmVhazsKCQkJCX1lbHNlaWYoICEkaXNDYWxsICl7CgkJCQkJJG5hbWUgPSAkbmFtZUxvb3AgPSAkdmFsLT5uYW1lOwoJCQkJCSR2YWx1ZSA9IG51bGw7CgkJCQl9CgkJCX0KCgkJCWlmKCAkdmFsdWUgKXsKCQkJCSRleHByZXNzaW9uc1tdID0gJHZhbHVlOwoJCQl9CgoJCQkkYXJnc0NvbW1hW10gPSBhcnJheSgnbmFtZSc9PiRuYW1lTG9vcCwgJ3ZhbHVlJz0+JHZhbHVlICk7CgoJCQlpZiggJHRoaXMtPk1hdGNoQ2hhcignLCcpICl7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJaWYoICR0aGlzLT5NYXRjaENoYXIoJzsnKSB8fCAkaXNTZW1pQ29sb25TZXBlcmF0ZWQgKXsKCgkJCQlpZiggJGV4cHJlc3Npb25Db250YWluc05hbWVkICl7CgkJCQkJJHRoaXMtPkVycm9yKCdDYW5ub3QgbWl4IDsgYW5kICwgYXMgZGVsaW1pdGVyIHR5cGVzJyk7CgkJCQl9CgoJCQkJJGlzU2VtaUNvbG9uU2VwZXJhdGVkID0gdHJ1ZTsKCgkJCQlpZiggY291bnQoJGV4cHJlc3Npb25zKSA+IDEgKXsKCQkJCQkkdmFsdWUgPSAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX1ZhbHVlJywgJGV4cHJlc3Npb25zKTsKCQkJCX0KCQkJCSRhcmdzU2VtaUNvbG9uW10gPSBhcnJheSgnbmFtZSc9PiRuYW1lLCAndmFsdWUnPT4kdmFsdWUgKTsKCgkJCQkkbmFtZSA9IG51bGw7CgkJCQkkZXhwcmVzc2lvbnMgPSBhcnJheSgpOwoJCQkJJGV4cHJlc3Npb25Db250YWluc05hbWVkID0gZmFsc2U7CgkJCX0KCQl9CgoJCSR0aGlzLT5mb3JnZXQoKTsKCQkkcmV0dXJuZXJbJ2FyZ3MnXSA9ICgkaXNTZW1pQ29sb25TZXBlcmF0ZWQgPyAkYXJnc1NlbWlDb2xvbiA6ICRhcmdzQ29tbWEpOwoJCXJldHVybiAkcmV0dXJuZXI7Cgl9CgoKCgkvLwoJLy8gQSBNaXhpbiBkZWZpbml0aW9uLCB3aXRoIGEgbGlzdCBvZiBwYXJhbWV0ZXJzCgkvLwoJLy8JIC5yb3VuZGVkIChAcmFkaXVzOiAycHgsIEBjb2xvcikgewoJLy8JCS4uLgoJLy8JIH0KCS8vCgkvLyBVbnRpbCB3ZSBoYXZlIGEgZmluZXIgZ3JhaW5lZCBzdGF0ZS1tYWNoaW5lLCB3ZSBoYXZlIHRvCgkvLyBkbyBhIGxvb2stYWhlYWQsIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIGEgbWl4aW4gY2FsbC4KCS8vIFNlZSB0aGUgYHJ1bGVgIGZ1bmN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgoJLy8KCS8vIFdlIHN0YXJ0IGJ5IG1hdGNoaW5nIGAucm91bmRlZCAoYCwgYW5kIHRoZW4gcHJvY2VlZCBvbiB0bwoJLy8gdGhlIGFyZ3VtZW50IGxpc3QsIHdoaWNoIGhhcyBvcHRpb25hbCBkZWZhdWx0IHZhbHVlcy4KCS8vIFdlIHN0b3JlIHRoZSBwYXJhbWV0ZXJzIGluIGBwYXJhbXNgLCB3aXRoIGEgYHZhbHVlYCBrZXksCgkvLyBpZiB0aGVyZSBpcyBhIHZhbHVlLCBzdWNoIGFzIGluIHRoZSBjYXNlIG9mIGBAcmFkaXVzYC4KCS8vCgkvLyBPbmNlIHdlJ3ZlIGdvdCBvdXIgcGFyYW1zIGxpc3QsIGFuZCBhIGNsb3NpbmcgYClgLCB3ZSBwYXJzZQoJLy8gdGhlIGB7Li4ufWAgYmxvY2suCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1peGluRGVmaW5pdGlvbigpewoJCSRjb25kID0gbnVsbDsKCgkJJGNoYXIgPSAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc107CgkJaWYoICgkY2hhciAhPT0gJy4nICYmICRjaGFyICE9PSAnIycpIHx8ICgkY2hhciA9PT0gJ3snICYmICR0aGlzLT5QZWVrUmVnKCcvXFxHW157XSpcfS8nKSkgKXsKCQkJcmV0dXJuOwoJCX0KCgkJJHRoaXMtPnNhdmUoKTsKCgkJJG1hdGNoID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHKFsjLl0oPzpbXHctXXxcXFwoPzpbQS1GYS1mMC05XXsxLDZ9ID98W15BLUZhLWYwLTldKSkrKVxzKlwoLycpOwoJCWlmKCAkbWF0Y2ggKXsKCQkJJG5hbWUgPSAkbWF0Y2hbMV07CgoJCQkkYXJnSW5mbyA9ICR0aGlzLT5wYXJzZU1peGluQXJncyggZmFsc2UgKTsKCQkJJHBhcmFtcyA9ICRhcmdJbmZvWydhcmdzJ107CgkJCSR2YXJpYWRpYyA9ICRhcmdJbmZvWyd2YXJpYWRpYyddOwoKCgkJCS8vIC5taXhpbmNhbGwoIkB7YX0iKTsKCQkJLy8gbG9va3MgYSBiaXQgbGlrZSBhIG1peGluIGRlZmluaXRpb24uLgoJCQkvLyBhbHNvCgkJCS8vIC5taXhpbmNhbGwoQGE6IHtydWxlOiBzZXQ7fSk7CgkJCS8vIHNvIHdlIGhhdmUgdG8gYmUgbmljZSBhbmQgcmVzdG9yZQoJCQlpZiggISR0aGlzLT5NYXRjaENoYXIoJyknKSApewoJCQkJJHRoaXMtPmZ1cnRoZXN0ID0gJHRoaXMtPnBvczsKCQkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCQlyZXR1cm47CgkJCX0KCgoJCQkkdGhpcy0+cGFyc2VDb21tZW50cygpOwoKCQkJaWYgKCR0aGlzLT5NYXRjaFJlZygnL1xcR3doZW4vJykpIHsgLy8gR3VhcmQKCQkJCSRjb25kID0gJHRoaXMtPmV4cGVjdCgncGFyc2VDb25kaXRpb25zJywgJ0V4cGVjdGVkIGNvbmRpdGlvbnMnKTsKCQkJfQoKCQkJJHJ1bGVzZXQgPSAkdGhpcy0+cGFyc2VCbG9jaygpOwoKCQkJaWYoIGlzX2FycmF5KCRydWxlc2V0KSApewoJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJcmV0dXJuICR0aGlzLT5OZXdPYmo1KCdMZXNzX1RyZWVfTWl4aW5fRGVmaW5pdGlvbicsIGFycmF5KCAkbmFtZSwgJHBhcmFtcywgJHJ1bGVzZXQsICRjb25kLCAkdmFyaWFkaWMpKTsKCQkJfQoKCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQl9ZWxzZXsKCQkJJHRoaXMtPmZvcmdldCgpOwoJCX0KCX0KCgkvLwoJLy8gRW50aXRpZXMgYXJlIHRoZSBzbWFsbGVzdCByZWNvZ25pemVkIHRva2VuLAoJLy8gYW5kIGNhbiBiZSBmb3VuZCBpbnNpZGUgYSBydWxlJ3MgdmFsdWUuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVudGl0eSgpewoKCQlyZXR1cm4gJHRoaXMtPk1hdGNoRnVuY3MoIGFycmF5KCdwYXJzZUVudGl0aWVzTGl0ZXJhbCcsJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScsJ3BhcnNlRW50aXRpZXNVcmwnLCdwYXJzZUVudGl0aWVzQ2FsbCcsJ3BhcnNlRW50aXRpZXNLZXl3b3JkJywncGFyc2VFbnRpdGllc0phdmFzY3JpcHQnLCdwYXJzZUNvbW1lbnQnKSApOwoJfQoKCS8vCgkvLyBBIFJ1bGUgdGVybWluYXRvci4gTm90ZSB0aGF0IHdlIHVzZSBgcGVlaygpYCB0byBjaGVjayBmb3IgJ30nLAoJLy8gYmVjYXVzZSB0aGUgYGJsb2NrYCBydWxlIHdpbGwgYmUgZXhwZWN0aW5nIGl0LCBidXQgd2Ugc3RpbGwgbmVlZCB0byBtYWtlIHN1cmUKCS8vIGl0J3MgdGhlcmUsIGlmICc7JyB3YXMgb21taXR0ZWQuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVuZCgpewoJCXJldHVybiAkdGhpcy0+TWF0Y2hDaGFyKCc7JykgfHwgJHRoaXMtPlBlZWtDaGFyKCd9Jyk7Cgl9CgoJLy8KCS8vIElFJ3MgYWxwaGEgZnVuY3Rpb24KCS8vCgkvLwkgYWxwaGEob3BhY2l0eT04OCkKCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQWxwaGEoKXsKCgkJaWYgKCAhICR0aGlzLT5NYXRjaFJlZygnL1xcR1wob3BhY2l0eT0vaScpKSB7CgkJCXJldHVybjsKCQl9CgoJCSR2YWx1ZSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1swLTldKy8nKTsKCQlpZiggJHZhbHVlICl7CgkJCSR2YWx1ZSA9ICR2YWx1ZVswXTsKCQl9ZWxzZXsKCQkJJHZhbHVlID0gJHRoaXMtPnBhcnNlRW50aXRpZXNWYXJpYWJsZSgpOwoJCQlpZiggISR2YWx1ZSApewoJCQkJcmV0dXJuOwoJCQl9CgkJfQoKCQkkdGhpcy0+ZXhwZWN0Q2hhcignKScpOwoJCXJldHVybiAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0FscGhhJywkdmFsdWUpOwoJfQoKCgkvLwoJLy8gQSBTZWxlY3RvciBFbGVtZW50CgkvLwoJLy8JIGRpdgoJLy8JICsgaDEKCS8vCSAjc29ja3MKCS8vCSBpbnB1dFt0eXBlPSJ0ZXh0Il0KCS8vCgkvLyBFbGVtZW50cyBhcmUgdGhlIGJ1aWxkaW5nIGJsb2NrcyBmb3IgU2VsZWN0b3JzLAoJLy8gdGhleSBhcmUgbWFkZSBvdXQgb2YgYSBgQ29tYmluYXRvcmAgKHNlZSBjb21iaW5hdG9yIHJ1bGUpLAoJLy8gYW5kIGFuIGVsZW1lbnQgbmFtZSwgc3VjaCBhcyBhIHRhZyBhIGNsYXNzLCBvciBgKmAuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUVsZW1lbnQoKXsKCQkkYyA9ICR0aGlzLT5wYXJzZUNvbWJpbmF0b3IoKTsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQkkZSA9ICR0aGlzLT5tYXRjaCggYXJyYXkoJy9cXEcoPzpcZCtcLlxkK3xcZCspJS8nLCAnL1xcRyg/OlsuI10/fDoqKSg/Oltcdy1dfFteXHgwMC1ceDlmXXxcXFxcKD86W0EtRmEtZjAtOV17MSw2fSA/fFteQS1GYS1mMC05XSkpKy8nLAoJCQknIyonLCAnIyYnLCAncGFyc2VBdHRyaWJ1dGUnLCAnL1xcR1woW14oKUBdK1wpLycsICcvXFxHW1wuI10oPz1AKS8nLCAncGFyc2VFbnRpdGllc1ZhcmlhYmxlQ3VybHknKSApOwoKCQlpZiggaXNfbnVsbCgkZSkgKXsKCQkJJHRoaXMtPnNhdmUoKTsKCQkJaWYoICR0aGlzLT5NYXRjaENoYXIoJygnKSApewoJCQkJaWYoICgkdiA9ICR0aGlzLT5wYXJzZVNlbGVjdG9yKCkpICYmICR0aGlzLT5NYXRjaENoYXIoJyknKSApewoJCQkJCSRlID0gJHRoaXMtPk5ld09iajEoJ0xlc3NfVHJlZV9QYXJlbicsJHYpOwoJCQkJCSR0aGlzLT5mb3JnZXQoKTsKCQkJCX1lbHNlewoJCQkJCSR0aGlzLT5yZXN0b3JlKCk7CgkJCQl9CgkJCX1lbHNlewoJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQl9CgkJfQoKCQlpZiggIWlzX251bGwoJGUpICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqNCgnTGVzc19UcmVlX0VsZW1lbnQnLGFycmF5KCAkYywgJGUsICRpbmRleCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvKSk7CgkJfQoJfQoKCS8vCgkvLyBDb21iaW5hdG9ycyBjb21iaW5lIGVsZW1lbnRzIHRvZ2V0aGVyLCBpbiBhIFNlbGVjdG9yLgoJLy8KCS8vIEJlY2F1c2Ugb3VyIHBhcnNlciBpc24ndCB3aGl0ZS1zcGFjZSBzZW5zaXRpdmUsIHNwZWNpYWwgY2FyZQoJLy8gaGFzIHRvIGJlIHRha2VuLCB3aGVuIHBhcnNpbmcgdGhlIGRlc2NlbmRhbnQgY29tYmluYXRvciwgYCBgLAoJLy8gYXMgaXQncyBhbiBlbXB0eSBzcGFjZS4gV2UgaGF2ZSB0byBjaGVjayB0aGUgcHJldmlvdXMgY2hhcmFjdGVyCgkvLyBpbiB0aGUgaW5wdXQsIHRvIHNlZSBpZiBpdCdzIGEgYCBgIGNoYXJhY3Rlci4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQ29tYmluYXRvcigpewoJCWlmKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApewoJCQkkYyA9ICR0aGlzLT5pbnB1dFskdGhpcy0+cG9zXTsKCQkJaWYgKCRjID09PSAnPicgfHwgJGMgPT09ICcrJyB8fCAkYyA9PT0gJ34nIHx8ICRjID09PSAnfCcgfHwgJGMgPT09ICdeJyApewoKCQkJCSR0aGlzLT5wb3MrKzsKCQkJCWlmKCAkdGhpcy0+aW5wdXRbJHRoaXMtPnBvc10gPT09ICdeJyApewoJCQkJCSRjID0gJ15eJzsKCQkJCQkkdGhpcy0+cG9zKys7CgkJCQl9CgoJCQkJJHRoaXMtPnNraXBXaGl0ZXNwYWNlKDApOwoKCQkJCXJldHVybiAkYzsKCQkJfQoKCQkJaWYoICR0aGlzLT5wb3MgPiAwICYmICR0aGlzLT5pc1doaXRlc3BhY2UoLTEpICl7CgkJCQlyZXR1cm4gJyAnOwoJCQl9CgkJfQoJfQoKCS8vCgkvLyBBIENTUyBzZWxlY3RvciAoc2VlIHNlbGVjdG9yIGJlbG93KQoJLy8gd2l0aCBsZXNzIGV4dGVuc2lvbnMgZS5nLiB0aGUgYWJpbGl0eSB0byBleHRlbmQgYW5kIGd1YXJkCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUxlc3NTZWxlY3RvcigpewoJCXJldHVybiAkdGhpcy0+cGFyc2VTZWxlY3Rvcih0cnVlKTsKCX0KCgkvLwoJLy8gQSBDU1MgU2VsZWN0b3IKCS8vCgkvLwkgLmNsYXNzID4gZGl2ICsgaDEKCS8vCSBsaSBhOmhvdmVyCgkvLwoJLy8gU2VsZWN0b3JzIGFyZSBtYWRlIG91dCBvZiBvbmUgb3IgbW9yZSBFbGVtZW50cywgc2VlIGFib3ZlLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VTZWxlY3RvciggJGlzTGVzcyA9IGZhbHNlICl7CgkJJGVsZW1lbnRzID0gYXJyYXkoKTsKCQkkZXh0ZW5kTGlzdCA9IGFycmF5KCk7CgkJJGNvbmRpdGlvbiA9IG51bGw7CgkJJHdoZW4gPSBmYWxzZTsKCQkkZXh0ZW5kID0gZmFsc2U7CgkJJGUgPSBudWxsOwoJCSRjID0gbnVsbDsKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoKCQl3aGlsZSggKCRpc0xlc3MgJiYgKCRleHRlbmQgPSAkdGhpcy0+cGFyc2VFeHRlbmQoKSkpIHx8ICgkaXNMZXNzICYmICgkd2hlbiA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR3doZW4vJykgKSkgfHwgKCRlID0gJHRoaXMtPnBhcnNlRWxlbWVudCgpKSApewoJCQlpZiggJHdoZW4gKXsKCQkJCSRjb25kaXRpb24gPSAkdGhpcy0+ZXhwZWN0KCdwYXJzZUNvbmRpdGlvbnMnLCAnZXhwZWN0ZWQgY29uZGl0aW9uJyk7CgkJCX1lbHNlaWYoICRjb25kaXRpb24gKXsKCQkJCS8vZXJyb3IoIkNTUyBndWFyZCBjYW4gb25seSBiZSB1c2VkIGF0IHRoZSBlbmQgb2Ygc2VsZWN0b3IiKTsKCQkJfWVsc2VpZiggJGV4dGVuZCApewoJCQkJJGV4dGVuZExpc3QgPSBhcnJheV9tZXJnZSgkZXh0ZW5kTGlzdCwkZXh0ZW5kKTsKCQkJfWVsc2V7CgkJCQkvL2lmKCBjb3VudCgkZXh0ZW5kTGlzdCkgKXsKCQkJCQkvL2Vycm9yKCJFeHRlbmQgY2FuIG9ubHkgYmUgdXNlZCBhdCB0aGUgZW5kIG9mIHNlbGVjdG9yIik7CgkJCQkvL30KCQkJCWlmKCAkdGhpcy0+cG9zIDwgJHRoaXMtPmlucHV0X2xlbiApewoJCQkJCSRjID0gJHRoaXMtPmlucHV0WyAkdGhpcy0+cG9zIF07CgkJCQl9CgkJCQkkZWxlbWVudHNbXSA9ICRlOwoJCQkJJGUgPSBudWxsOwoJCQl9CgoJCQlpZiggJGMgPT09ICd7JyB8fCAkYyA9PT0gJ30nIHx8ICRjID09PSAnOycgfHwgJGMgPT09ICcsJyB8fCAkYyA9PT0gJyknKSB7IGJyZWFrOyB9CgkJfQoKCQlpZiggJGVsZW1lbnRzICl7CgkJCXJldHVybiAkdGhpcy0+TmV3T2JqNSgnTGVzc19UcmVlX1NlbGVjdG9yJyxhcnJheSgkZWxlbWVudHMsICRleHRlbmRMaXN0LCAkY29uZGl0aW9uLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykpOwoJCX0KCQlpZiggJGV4dGVuZExpc3QgKSB7CgkJCSR0aGlzLT5FcnJvcignRXh0ZW5kIG11c3QgYmUgdXNlZCB0byBleHRlbmQgYSBzZWxlY3RvciwgaXQgY2Fubm90IGJlIHVzZWQgb24gaXRzIG93bicpOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlVGFnKCl7CgkJcmV0dXJuICggJHRhZyA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR1tBLVphLXpdW0EtWmEtei1dKlswLTldPy8nKSApID8gJHRhZyA6ICR0aGlzLT5NYXRjaENoYXIoJyonKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQXR0cmlidXRlKCl7CgoJCSR2YWwgPSBudWxsOwoKCQlpZiggISR0aGlzLT5NYXRjaENoYXIoJ1snKSApewoJCQlyZXR1cm47CgkJfQoKCQkka2V5ID0gJHRoaXMtPnBhcnNlRW50aXRpZXNWYXJpYWJsZUN1cmx5KCk7CgkJaWYoICEka2V5ICl7CgkJCSRrZXkgPSAkdGhpcy0+ZXhwZWN0KCcvXFxHKD86W19BLVphLXowLTktXCpdKlx8KT8oPzpbX0EtWmEtejAtOS1dfFxcXFwuKSsvJyk7CgkJfQoKCQkkb3AgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEdbfH4qJF5dPz0vJyk7CgkJaWYoICRvcCApewoJCQkkdmFsID0gJHRoaXMtPm1hdGNoKCBhcnJheSgncGFyc2VFbnRpdGllc1F1b3RlZCcsJy9cXEdbMC05XSslLycsJy9cXEdbXHctXSsvJywncGFyc2VFbnRpdGllc1ZhcmlhYmxlQ3VybHknKSApOwoJCX0KCgkJJHRoaXMtPmV4cGVjdENoYXIoJ10nKTsKCgkJcmV0dXJuICR0aGlzLT5OZXdPYmozKCdMZXNzX1RyZWVfQXR0cmlidXRlJyxhcnJheSggJGtleSwgJG9wWzBdLCAkdmFsKSk7Cgl9CgoJLy8KCS8vIFRoZSBgYmxvY2tgIHJ1bGUgaXMgdXNlZCBieSBgcnVsZXNldGAgYW5kIGBtaXhpbi5kZWZpbml0aW9uYC4KCS8vIEl0J3MgYSB3cmFwcGVyIGFyb3VuZCB0aGUgYHByaW1hcnlgIHJ1bGUsIHdpdGggYWRkZWQgYHt9YC4KCS8vCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQmxvY2soKXsKCQlpZiggJHRoaXMtPk1hdGNoQ2hhcigneycpICl7CgkJCSRjb250ZW50ID0gJHRoaXMtPnBhcnNlUHJpbWFyeSgpOwoJCQlpZiggJHRoaXMtPk1hdGNoQ2hhcignfScpICl7CgkJCQlyZXR1cm4gJGNvbnRlbnQ7CgkJCX0KCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZUJsb2NrUnVsZXNldCgpewoJCSRibG9jayA9ICR0aGlzLT5wYXJzZUJsb2NrKCk7CgoJCWlmKCAkYmxvY2sgKXsKCQkJJGJsb2NrID0gJHRoaXMtPk5ld09iajIoJ0xlc3NfVHJlZV9SdWxlc2V0JyxhcnJheSggbnVsbCwgJGJsb2NrKSk7CgkJfQoKCQlyZXR1cm4gJGJsb2NrOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VEZXRhY2hlZFJ1bGVzZXQoKXsKCQkkYmxvY2tSdWxlc2V0ID0gJHRoaXMtPnBhcnNlQmxvY2tSdWxlc2V0KCk7CgkJaWYoICRibG9ja1J1bGVzZXQgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0JywkYmxvY2tSdWxlc2V0KTsKCQl9Cgl9CgoJLy8KCS8vIGRpdiwgLmNsYXNzLCBib2R5ID4gcCB7Li4ufQoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VSdWxlc2V0KCl7CgkJJHNlbGVjdG9ycyA9IGFycmF5KCk7CgoJCSR0aGlzLT5zYXZlKCk7CgoJCXdoaWxlKCB0cnVlICl7CgkJCSRzID0gJHRoaXMtPnBhcnNlTGVzc1NlbGVjdG9yKCk7CgkJCWlmKCAhJHMgKXsKCQkJCWJyZWFrOwoJCQl9CgkJCSRzZWxlY3RvcnNbXSA9ICRzOwoJCQkkdGhpcy0+cGFyc2VDb21tZW50cygpOwoKCQkJaWYoICRzLT5jb25kaXRpb24gJiYgY291bnQoJHNlbGVjdG9ycykgPiAxICl7CgkJCQkkdGhpcy0+RXJyb3IoJ0d1YXJkcyBhcmUgb25seSBjdXJyZW50bHkgYWxsb3dlZCBvbiBhIHNpbmdsZSBzZWxlY3Rvci4nKTsKCQkJfQoKCQkJaWYoICEkdGhpcy0+TWF0Y2hDaGFyKCcsJykgKXsKCQkJCWJyZWFrOwoJCQl9CgkJCWlmKCAkcy0+Y29uZGl0aW9uICl7CgkJCQkkdGhpcy0+RXJyb3IoJ0d1YXJkcyBhcmUgb25seSBjdXJyZW50bHkgYWxsb3dlZCBvbiBhIHNpbmdsZSBzZWxlY3Rvci4nKTsKCQkJfQoJCQkkdGhpcy0+cGFyc2VDb21tZW50cygpOwoJCX0KCgoJCWlmKCAkc2VsZWN0b3JzICl7CgkJCSRydWxlcyA9ICR0aGlzLT5wYXJzZUJsb2NrKCk7CgkJCWlmKCBpc19hcnJheSgkcnVsZXMpICl7CgkJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJCQlyZXR1cm4gJHRoaXMtPk5ld09iajIoJ0xlc3NfVHJlZV9SdWxlc2V0JyxhcnJheSggJHNlbGVjdG9ycywgJHJ1bGVzKSk7IC8vTGVzc19FbnZpcm9ubWVudDo6JHN0cmljdEltcG9ydHMKCQkJfQoJCX0KCgkJLy8gQmFja3RyYWNrCgkJJHRoaXMtPmZ1cnRoZXN0ID0gJHRoaXMtPnBvczsKCQkkdGhpcy0+cmVzdG9yZSgpOwoJfQoKCS8qKgoJICogQ3VzdG9tIGxlc3MucGhwIHBhcnNlIGZ1bmN0aW9uIGZvciBmaW5kaW5nIHNpbXBsZSBuYW1lLXZhbHVlIGNzcyBwYWlycwoJICogZXg6IHdpZHRoOjEwMHB4OwoJICoKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU5hbWVWYWx1ZSgpewoKCQkkaW5kZXggPSAkdGhpcy0+cG9zOwoJCSR0aGlzLT5zYXZlKCk7CgoKCQkvLyRtYXRjaCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhbYS16QS1aXC1dKylccyo6XHMqKCg/OlwnIik/W2EtekEtWjAtOVwtJSBcLiwhXSs/KD86XCciKT8pXHMqKFs7fV0pLycpOwoJCSRtYXRjaCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhbYS16QS1aXC1dKylccyo6XHMqKFtcJyJdP1sjYS16QS1aMC05XC0lXC4sXSs/W1wnIl0/KSAqKCEgKmltcG9ydGFudCk/XHMqKFs7fV0pLycpOwoJCWlmKCAkbWF0Y2ggKXsKCgkJCWlmKCAkbWF0Y2hbNF0gPT0gJ30nICl7CgkJCQkkdGhpcy0+cG9zID0gJGluZGV4ICsgc3RybGVuKCRtYXRjaFswXSktMTsKCQkJfQoKCQkJaWYoICRtYXRjaFszXSApewoJCQkJJG1hdGNoWzJdIC49ICcgIWltcG9ydGFudCc7CgkJCX0KCgkJCXJldHVybiAkdGhpcy0+TmV3T2JqNCgnTGVzc19UcmVlX05hbWVWYWx1ZScsYXJyYXkoICRtYXRjaFsxXSwgJG1hdGNoWzJdLCAkaW5kZXgsICR0aGlzLT5lbnYtPmN1cnJlbnRGaWxlSW5mbykpOwoJCX0KCgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVJ1bGUoICR0cnlBbm9ueW1vdXMgPSBudWxsICl7CgoJCSRtZXJnZSA9IGZhbHNlOwoJCSRzdGFydE9mUnVsZSA9ICR0aGlzLT5wb3M7CgoJCSRjID0gJHRoaXMtPmlucHV0WyR0aGlzLT5wb3NdOwoJCWlmKCAkYyA9PT0gJy4nIHx8ICRjID09PSAnIycgfHwgJGMgPT09ICcmJyApewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+c2F2ZSgpOwoJCSRuYW1lID0gJHRoaXMtPk1hdGNoRnVuY3MoIGFycmF5KCdwYXJzZVZhcmlhYmxlJywncGFyc2VSdWxlUHJvcGVydHknKSk7CgoJCWlmKCAkbmFtZSApewoKCQkJJGlzVmFyaWFibGUgPSBpc19zdHJpbmcoJG5hbWUpOwoKCQkJJHZhbHVlID0gbnVsbDsKCQkJaWYoICRpc1ZhcmlhYmxlICl7CgkJCQkkdmFsdWUgPSAkdGhpcy0+cGFyc2VEZXRhY2hlZFJ1bGVzZXQoKTsKCQkJfQoKCQkJJGltcG9ydGFudCA9IG51bGw7CgkJCWlmKCAhJHZhbHVlICl7CgoJCQkJLy8gcHJlZmVyIHRvIHRyeSB0byBwYXJzZSBmaXJzdCBpZiBpdHMgYSB2YXJpYWJsZSBvciB3ZSBhcmUgY29tcHJlc3NpbmcKCQkJCS8vIGJ1dCBhbHdheXMgZmFsbGJhY2sgb24gdGhlIG90aGVyIG9uZQoJCQkJLy9pZiggISR0cnlBbm9ueW1vdXMgJiYgaXNfc3RyaW5nKCRuYW1lKSAmJiAkbmFtZVswXSA9PT0gJ0AnICl7CgkJCQlpZiggISR0cnlBbm9ueW1vdXMgJiYgKExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSB8fCAkaXNWYXJpYWJsZSkgKXsKCQkJCQkkdmFsdWUgPSAkdGhpcy0+TWF0Y2hGdW5jcyggYXJyYXkoJ3BhcnNlVmFsdWUnLCdwYXJzZUFub255bW91c1ZhbHVlJykpOwoJCQkJfWVsc2V7CgkJCQkJJHZhbHVlID0gJHRoaXMtPk1hdGNoRnVuY3MoIGFycmF5KCdwYXJzZUFub255bW91c1ZhbHVlJywncGFyc2VWYWx1ZScpKTsKCQkJCX0KCgkJCQkkaW1wb3J0YW50ID0gJHRoaXMtPnBhcnNlSW1wb3J0YW50KCk7CgoJCQkJLy8gYSBuYW1lIHJldHVybmVkIGJ5IHRoaXMucnVsZVByb3BlcnR5KCkgaXMgYWx3YXlzIGFuIGFycmF5IG9mIHRoZSBmb3JtOgoJCQkJLy8gW3N0cmluZy0xLCAuLi4sIHN0cmluZy1uLCAiIl0gb3IgW3N0cmluZy0xLCAuLi4sIHN0cmluZy1uLCAiKyJdCgkJCQkvLyB3aGVyZSBlYWNoIGl0ZW0gaXMgYSB0cmVlLktleXdvcmQgb3IgdHJlZS5WYXJpYWJsZQoJCQkJaWYoICEkaXNWYXJpYWJsZSAmJiBpc19hcnJheSgkbmFtZSkgKXsKCQkJCQkkbm0gPSBhcnJheV9wb3AoJG5hbWUpOwoJCQkJCWlmKCAkbm0tPnZhbHVlICl7CgkJCQkJCSRtZXJnZSA9ICRubS0+dmFsdWU7CgkJCQkJfQoJCQkJfQoJCQl9CgoKCQkJaWYoICR2YWx1ZSAmJiAkdGhpcy0+cGFyc2VFbmQoKSApewoJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJcmV0dXJuICR0aGlzLT5OZXdPYmo2KCdMZXNzX1RyZWVfUnVsZScsYXJyYXkoICRuYW1lLCAkdmFsdWUsICRpbXBvcnRhbnQsICRtZXJnZSwgJHN0YXJ0T2ZSdWxlLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQkJfWVsc2V7CgkJCQkkdGhpcy0+ZnVydGhlc3QgPSAkdGhpcy0+cG9zOwoJCQkJJHRoaXMtPnJlc3RvcmUoKTsKCQkJCWlmKCAkdmFsdWUgJiYgISR0cnlBbm9ueW1vdXMgKXsKCQkJCQlyZXR1cm4gJHRoaXMtPnBhcnNlUnVsZSh0cnVlKTsKCQkJCX0KCQkJfQoJCX1lbHNlewoJCQkkdGhpcy0+Zm9yZ2V0KCk7CgkJfQoJfQoKCWZ1bmN0aW9uIHBhcnNlQW5vbnltb3VzVmFsdWUoKXsKCgkJaWYoIHByZWdfbWF0Y2goJy9cXEcoW15AK1wvXCciKmAoO3t9LV0qKTsvJywkdGhpcy0+aW5wdXQsICRtYXRjaCwgMCwgJHRoaXMtPnBvcykgKXsKCQkJJHRoaXMtPnBvcyArPSBzdHJsZW4oJG1hdGNoWzFdKTsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfQW5vbnltb3VzJywkbWF0Y2hbMV0pOwoJCX0KCX0KCgkvLwoJLy8gQW4gQGltcG9ydCBkaXJlY3RpdmUKCS8vCgkvLwkgQGltcG9ydCAibGliIjsKCS8vCgkvLyBEZXBlbmRpbmcgb24gb3VyIGVudmlyb25tZW50LCBpbXBvcnRpbmcgaXMgZG9uZSBkaWZmZXJlbnRseToKCS8vIEluIHRoZSBicm93c2VyLCBpdCdzIGFuIFhIUiByZXF1ZXN0LCBpbiBOb2RlLCBpdCB3b3VsZCBiZSBhCgkvLyBmaWxlLXN5c3RlbSBvcGVyYXRpb24uIFRoZSBmdW5jdGlvbiB1c2VkIGZvciBpbXBvcnRpbmcgaXMKCS8vIHN0b3JlZCBpbiBgaW1wb3J0YCwgd2hpY2ggd2UgcGFzcyB0byB0aGUgSW1wb3J0IGNvbnN0cnVjdG9yLgoJLy8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VJbXBvcnQoKXsKCgkJJHRoaXMtPnNhdmUoKTsKCgkJJGRpciA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR0BpbXBvcnQ/XHMrLycpOwoKCQlpZiggJGRpciApewoJCQkkb3B0aW9ucyA9ICR0aGlzLT5wYXJzZUltcG9ydE9wdGlvbnMoKTsKCQkJJHBhdGggPSAkdGhpcy0+TWF0Y2hGdW5jcyggYXJyYXkoJ3BhcnNlRW50aXRpZXNRdW90ZWQnLCdwYXJzZUVudGl0aWVzVXJsJykpOwoKCQkJaWYoICRwYXRoICl7CgkJCQkkZmVhdHVyZXMgPSAkdGhpcy0+cGFyc2VNZWRpYUZlYXR1cmVzKCk7CgkJCQlpZiggJHRoaXMtPk1hdGNoQ2hhcignOycpICl7CgkJCQkJaWYoICRmZWF0dXJlcyApewoJCQkJCQkkZmVhdHVyZXMgPSAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX1ZhbHVlJywkZmVhdHVyZXMpOwoJCQkJCX0KCgkJCQkJJHRoaXMtPmZvcmdldCgpOwoJCQkJCXJldHVybiAkdGhpcy0+TmV3T2JqNSgnTGVzc19UcmVlX0ltcG9ydCcsYXJyYXkoICRwYXRoLCAkZmVhdHVyZXMsICRvcHRpb25zLCAkdGhpcy0+cG9zLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQkJCX0KCQkJfQoJCX0KCgkJJHRoaXMtPnJlc3RvcmUoKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlSW1wb3J0T3B0aW9ucygpewoKCQkkb3B0aW9ucyA9IGFycmF5KCk7CgoJCS8vIGxpc3Qgb2Ygb3B0aW9ucywgc3Vycm91bmRlZCBieSBwYXJlbnMKCQlpZiggISR0aGlzLT5NYXRjaENoYXIoJygnKSApewoJCQlyZXR1cm4gJG9wdGlvbnM7CgkJfQoJCWRvewoJCQkkb3B0aW9uTmFtZSA9ICR0aGlzLT5wYXJzZUltcG9ydE9wdGlvbigpOwoJCQlpZiggJG9wdGlvbk5hbWUgKXsKCQkJCSR2YWx1ZSA9IHRydWU7CgkJCQlzd2l0Y2goICRvcHRpb25OYW1lICl7CgkJCQkJY2FzZSAiY3NzIjoKCQkJCQkJJG9wdGlvbk5hbWUgPSAibGVzcyI7CgkJCQkJCSR2YWx1ZSA9IGZhbHNlOwoJCQkJCWJyZWFrOwoJCQkJCWNhc2UgIm9uY2UiOgoJCQkJCQkkb3B0aW9uTmFtZSA9ICJtdWx0aXBsZSI7CgkJCQkJCSR2YWx1ZSA9IGZhbHNlOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQkJJG9wdGlvbnNbJG9wdGlvbk5hbWVdID0gJHZhbHVlOwoJCQkJaWYoICEkdGhpcy0+TWF0Y2hDaGFyKCcsJykgKXsgYnJlYWs7IH0KCQkJfQoJCX13aGlsZSggJG9wdGlvbk5hbWUgKTsKCQkkdGhpcy0+ZXhwZWN0Q2hhcignKScpOwoJCXJldHVybiAkb3B0aW9uczsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlSW1wb3J0T3B0aW9uKCl7CgkJJG9wdCA9ICR0aGlzLT5NYXRjaFJlZygnL1xcRyhsZXNzfGNzc3xtdWx0aXBsZXxvbmNlfGlubGluZXxyZWZlcmVuY2V8b3B0aW9uYWwpLycpOwoJCWlmKCAkb3B0ICl7CgkJCXJldHVybiAkb3B0WzFdOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWVkaWFGZWF0dXJlKCkgewoJCSRub2RlcyA9IGFycmF5KCk7CgoJCWRvewoJCQkkZSA9ICR0aGlzLT5NYXRjaEZ1bmNzKGFycmF5KCdwYXJzZUVudGl0aWVzS2V5d29yZCcsJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScpKTsKCQkJaWYoICRlICl7CgkJCQkkbm9kZXNbXSA9ICRlOwoJCQl9IGVsc2VpZiAoJHRoaXMtPk1hdGNoQ2hhcignKCcpKSB7CgkJCQkkcCA9ICR0aGlzLT5wYXJzZVByb3BlcnR5KCk7CgkJCQkkZSA9ICR0aGlzLT5wYXJzZVZhbHVlKCk7CgkJCQlpZiAoJHRoaXMtPk1hdGNoQ2hhcignKScpKSB7CgkJCQkJaWYgKCRwICYmICRlKSB7CgkJCQkJCSRyID0gJHRoaXMtPk5ld09iajcoJ0xlc3NfVHJlZV9SdWxlJywgYXJyYXkoICRwLCAkZSwgbnVsbCwgbnVsbCwgJHRoaXMtPnBvcywgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvLCB0cnVlKSk7CgkJCQkJCSRub2Rlc1tdID0gJHRoaXMtPk5ld09iajEoJ0xlc3NfVHJlZV9QYXJlbicsJHIpOwoJCQkJCX0gZWxzZWlmICgkZSkgewoJCQkJCQkkbm9kZXNbXSA9ICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfUGFyZW4nLCRlKTsKCQkJCQl9IGVsc2UgewoJCQkJCQlyZXR1cm4gbnVsbDsKCQkJCQl9CgkJCQl9IGVsc2UKCQkJCQlyZXR1cm4gbnVsbDsKCQkJfQoJCX0gd2hpbGUgKCRlKTsKCgkJaWYgKCRub2RlcykgewoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajEoJ0xlc3NfVHJlZV9FeHByZXNzaW9uJywkbm9kZXMpOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlTWVkaWFGZWF0dXJlcygpIHsKCQkkZmVhdHVyZXMgPSBhcnJheSgpOwoKCQlkb3sKCQkJJGUgPSAkdGhpcy0+cGFyc2VNZWRpYUZlYXR1cmUoKTsKCQkJaWYoICRlICl7CgkJCQkkZmVhdHVyZXNbXSA9ICRlOwoJCQkJaWYgKCEkdGhpcy0+TWF0Y2hDaGFyKCcsJykpIGJyZWFrOwoJCQl9ZWxzZXsKCQkJCSRlID0gJHRoaXMtPnBhcnNlRW50aXRpZXNWYXJpYWJsZSgpOwoJCQkJaWYoICRlICl7CgkJCQkJJGZlYXR1cmVzW10gPSAkZTsKCQkJCQlpZiAoISR0aGlzLT5NYXRjaENoYXIoJywnKSkgYnJlYWs7CgkJCQl9CgkJCX0KCQl9IHdoaWxlICgkZSk7CgoJCXJldHVybiAkZmVhdHVyZXMgPyAkZmVhdHVyZXMgOiBudWxsOwoJfQoKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VNZWRpYSgpIHsKCQlpZiggJHRoaXMtPk1hdGNoUmVnKCcvXFxHQG1lZGlhLycpICl7CgkJCSRmZWF0dXJlcyA9ICR0aGlzLT5wYXJzZU1lZGlhRmVhdHVyZXMoKTsKCQkJJHJ1bGVzID0gJHRoaXMtPnBhcnNlQmxvY2soKTsKCgkJCWlmKCBpc19hcnJheSgkcnVsZXMpICl7CgkJCQlyZXR1cm4gJHRoaXMtPk5ld09iajQoJ0xlc3NfVHJlZV9NZWRpYScsYXJyYXkoICRydWxlcywgJGZlYXR1cmVzLCAkdGhpcy0+cG9zLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQkJfQoJCX0KCX0KCgoJLy8KCS8vIEEgQ1NTIERpcmVjdGl2ZQoJLy8KCS8vIEBjaGFyc2V0ICJ1dGYtOCI7CgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZURpcmVjdGl2ZSgpewoKCQlpZiggISR0aGlzLT5QZWVrQ2hhcignQCcpICl7CgkJCXJldHVybjsKCQl9CgoJCSRydWxlcyA9IG51bGw7CgkJJGluZGV4ID0gJHRoaXMtPnBvczsKCQkkaGFzQmxvY2sgPSB0cnVlOwoJCSRoYXNJZGVudGlmaWVyID0gZmFsc2U7CgkJJGhhc0V4cHJlc3Npb24gPSBmYWxzZTsKCQkkaGFzVW5rbm93biA9IGZhbHNlOwoKCgkJJHZhbHVlID0gJHRoaXMtPk1hdGNoRnVuY3MoYXJyYXkoJ3BhcnNlSW1wb3J0JywncGFyc2VNZWRpYScpKTsKCQlpZiggJHZhbHVlICl7CgkJCXJldHVybiAkdmFsdWU7CgkJfQoKCQkkdGhpcy0+c2F2ZSgpOwoKCQkkbmFtZSA9ICR0aGlzLT5NYXRjaFJlZygnL1xcR0BbYS16LV0rLycpOwoKCQlpZiggISRuYW1lICkgcmV0dXJuOwoJCSRuYW1lID0gJG5hbWVbMF07CgoKCQkkbm9uVmVuZG9yU3BlY2lmaWNOYW1lID0gJG5hbWU7CgkJJHBvcyA9IHN0cnBvcygkbmFtZSwnLScsIDIpOwoJCWlmKCAkbmFtZVsxXSA9PSAnLScgJiYgJHBvcyA+IDAgKXsKCQkJJG5vblZlbmRvclNwZWNpZmljTmFtZSA9ICJAIiAuIHN1YnN0cigkbmFtZSwgJHBvcyArIDEpOwoJCX0KCgoJCXN3aXRjaCggJG5vblZlbmRvclNwZWNpZmljTmFtZSApewoJCQkvKgoJCQljYXNlICJAZm9udC1mYWNlIjoKCQkJY2FzZSAiQHZpZXdwb3J0IjoKCQkJY2FzZSAiQHRvcC1sZWZ0IjoKCQkJY2FzZSAiQHRvcC1sZWZ0LWNvcm5lciI6CgkJCWNhc2UgIkB0b3AtY2VudGVyIjoKCQkJY2FzZSAiQHRvcC1yaWdodCI6CgkJCWNhc2UgIkB0b3AtcmlnaHQtY29ybmVyIjoKCQkJY2FzZSAiQGJvdHRvbS1sZWZ0IjoKCQkJY2FzZSAiQGJvdHRvbS1sZWZ0LWNvcm5lciI6CgkJCWNhc2UgIkBib3R0b20tY2VudGVyIjoKCQkJY2FzZSAiQGJvdHRvbS1yaWdodCI6CgkJCWNhc2UgIkBib3R0b20tcmlnaHQtY29ybmVyIjoKCQkJY2FzZSAiQGxlZnQtdG9wIjoKCQkJY2FzZSAiQGxlZnQtbWlkZGxlIjoKCQkJY2FzZSAiQGxlZnQtYm90dG9tIjoKCQkJY2FzZSAiQHJpZ2h0LXRvcCI6CgkJCWNhc2UgIkByaWdodC1taWRkbGUiOgoJCQljYXNlICJAcmlnaHQtYm90dG9tIjoKCQkJaGFzQmxvY2sgPSB0cnVlOwoJCQlicmVhazsKCQkJKi8KCQkJY2FzZSAiQGNoYXJzZXQiOgoJCQkJJGhhc0lkZW50aWZpZXIgPSB0cnVlOwoJCQkJJGhhc0Jsb2NrID0gZmFsc2U7CgkJCQlicmVhazsKCQkJY2FzZSAiQG5hbWVzcGFjZSI6CgkJCQkkaGFzRXhwcmVzc2lvbiA9IHRydWU7CgkJCQkkaGFzQmxvY2sgPSBmYWxzZTsKCQkJCWJyZWFrOwoJCQljYXNlICJAa2V5ZnJhbWVzIjoKCQkJCSRoYXNJZGVudGlmaWVyID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCQljYXNlICJAaG9zdCI6CgkJCWNhc2UgIkBwYWdlIjoKCQkJY2FzZSAiQGRvY3VtZW50IjoKCQkJY2FzZSAiQHN1cHBvcnRzIjoKCQkJCSRoYXNVbmtub3duID0gdHJ1ZTsKCQkJCWJyZWFrOwoJCX0KCgkJaWYoICRoYXNJZGVudGlmaWVyICl7CgkJCSR2YWx1ZSA9ICR0aGlzLT5wYXJzZUVudGl0eSgpOwoJCQlpZiggISR2YWx1ZSApewoJCQkJJHRoaXMtPmVycm9yKCJleHBlY3RlZCAiIC4gJG5hbWUgLiAiIGlkZW50aWZpZXIiKTsKCQkJfQoJCX0gZWxzZSBpZiggJGhhc0V4cHJlc3Npb24gKXsKCQkJJHZhbHVlID0gJHRoaXMtPnBhcnNlRXhwcmVzc2lvbigpOwoJCQlpZiggISR2YWx1ZSApewoJCQkJJHRoaXMtPmVycm9yKCJleHBlY3RlZCAiIC4gJG5hbWUuICIgZXhwcmVzc2lvbiIpOwoJCQl9CgkJfSBlbHNlIGlmICgkaGFzVW5rbm93bikgewoKCQkJJHZhbHVlID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHW157O10rLycpOwoJCQlpZiggJHZhbHVlICl7CgkJCQkkdmFsdWUgPSAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0Fub255bW91cycsdHJpbSgkdmFsdWVbMF0pKTsKCQkJfQoJCX0KCgkJaWYoICRoYXNCbG9jayApewoJCQkkcnVsZXMgPSAkdGhpcy0+cGFyc2VCbG9ja1J1bGVzZXQoKTsKCQl9CgoJCWlmKCAkcnVsZXMgfHwgKCEkaGFzQmxvY2sgJiYgJHZhbHVlICYmICR0aGlzLT5NYXRjaENoYXIoJzsnKSkpIHsKCQkJJHRoaXMtPmZvcmdldCgpOwoJCQlyZXR1cm4gJHRoaXMtPk5ld09iajUoJ0xlc3NfVHJlZV9EaXJlY3RpdmUnLGFycmF5KCRuYW1lLCAkdmFsdWUsICRydWxlcywgJGluZGV4LCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQl9CgoJCSR0aGlzLT5yZXN0b3JlKCk7Cgl9CgoKCS8vCgkvLyBBIFZhbHVlIGlzIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgb2YgRXhwcmVzc2lvbnMKCS8vCgkvLwkgZm9udC1mYW1pbHk6IEJhc2tlcnZpbGxlLCBHZW9yZ2lhLCBzZXJpZjsKCS8vCgkvLyBJbiBhIFJ1bGUsIGEgVmFsdWUgcmVwcmVzZW50cyBldmVyeXRoaW5nIGFmdGVyIHRoZSBgOmAsCgkvLyBhbmQgYmVmb3JlIHRoZSBgO2AuCgkvLwoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVZhbHVlKCl7CgkJJGV4cHJlc3Npb25zID0gYXJyYXkoKTsKCgkJZG97CgkJCSRlID0gJHRoaXMtPnBhcnNlRXhwcmVzc2lvbigpOwoJCQlpZiggJGUgKXsKCQkJCSRleHByZXNzaW9uc1tdID0gJGU7CgkJCQlpZiAoISAkdGhpcy0+TWF0Y2hDaGFyKCcsJykpIHsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX13aGlsZSgkZSk7CgoJCWlmKCAkZXhwcmVzc2lvbnMgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfVmFsdWUnLCRleHByZXNzaW9ucyk7CgkJfQoJfQoKCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VJbXBvcnRhbnQgKCl7CgkJaWYoICR0aGlzLT5QZWVrQ2hhcignIScpICYmICR0aGlzLT5NYXRjaFJlZygnL1xcRyEgKmltcG9ydGFudC8nKSApewoJCQlyZXR1cm4gJyAhaW1wb3J0YW50JzsKCQl9Cgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZVN1YiAoKXsKCgkJaWYoICR0aGlzLT5NYXRjaENoYXIoJygnKSApewoJCQkkYSA9ICR0aGlzLT5wYXJzZUFkZGl0aW9uKCk7CgkJCWlmKCAkYSApewoJCQkJJHRoaXMtPmV4cGVjdENoYXIoJyknKTsKCQkJCXJldHVybiAkdGhpcy0+TmV3T2JqMignTGVzc19UcmVlX0V4cHJlc3Npb24nLGFycmF5KCBhcnJheSgkYSksIHRydWUpICk7IC8vaW5zdGVhZCBvZiAkZS0+cGFyZW5zID0gdHJ1ZSBzbyB0aGUgdmFsdWUgaXMgY2FjaGVkCgkJCX0KCQl9Cgl9CgoKCS8qKgoJICogUGFyc2VzIG11bHRpcGxpY2F0aW9uIG9wZXJhdGlvbgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX09wZXJhdGlvbnxudWxsCgkgKi8KCWZ1bmN0aW9uIHBhcnNlTXVsdGlwbGljYXRpb24oKXsKCgkJJHJldHVybiA9ICRtID0gJHRoaXMtPnBhcnNlT3BlcmFuZCgpOwoJCWlmKCAkcmV0dXJuICl7CgkJCXdoaWxlKCB0cnVlICl7CgoJCQkJJGlzU3BhY2VkID0gJHRoaXMtPmlzV2hpdGVzcGFjZSggLTEgKTsKCgkJCQlpZiggJHRoaXMtPlBlZWtSZWcoJy9cXEdcL1sqXC9dLycpICl7CgkJCQkJYnJlYWs7CgkJCQl9CgoJCQkJJG9wID0gJHRoaXMtPk1hdGNoQ2hhcignLycpOwoJCQkJaWYoICEkb3AgKXsKCQkJCQkkb3AgPSAkdGhpcy0+TWF0Y2hDaGFyKCcqJyk7CgkJCQkJaWYoICEkb3AgKXsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoKCQkJCSRhID0gJHRoaXMtPnBhcnNlT3BlcmFuZCgpOwoKCQkJCWlmKCEkYSkgeyBicmVhazsgfQoKCQkJCSRtLT5wYXJlbnNJbk9wID0gdHJ1ZTsKCQkJCSRhLT5wYXJlbnNJbk9wID0gdHJ1ZTsKCQkJCSRyZXR1cm4gPSAkdGhpcy0+TmV3T2JqMygnTGVzc19UcmVlX09wZXJhdGlvbicsYXJyYXkoICRvcCwgYXJyYXkoICRyZXR1cm4sICRhICksICRpc1NwYWNlZCkgKTsKCQkJfQoJCX0KCQlyZXR1cm4gJHJldHVybjsKCgl9CgoKCS8qKgoJICogUGFyc2VzIGFuIGFkZGl0aW9uIG9wZXJhdGlvbgoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX09wZXJhdGlvbnxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VBZGRpdGlvbiAoKXsKCgkJJHJldHVybiA9ICRtID0gJHRoaXMtPnBhcnNlTXVsdGlwbGljYXRpb24oKTsKCQlpZiggJHJldHVybiApewoJCQl3aGlsZSggdHJ1ZSApewoKCQkJCSRpc1NwYWNlZCA9ICR0aGlzLT5pc1doaXRlc3BhY2UoIC0xICk7CgoJCQkJJG9wID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHWy0rXVxzKy8nKTsKCQkJCWlmKCAkb3AgKXsKCQkJCQkkb3AgPSAkb3BbMF07CgkJCQl9ZWxzZXsKCQkJCQlpZiggISRpc1NwYWNlZCApewoJCQkJCQkkb3AgPSAkdGhpcy0+bWF0Y2goYXJyYXkoJyMrJywnIy0nKSk7CgkJCQkJfQoJCQkJCWlmKCAhJG9wICl7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCX0KCgkJCQkkYSA9ICR0aGlzLT5wYXJzZU11bHRpcGxpY2F0aW9uKCk7CgkJCQlpZiggISRhICl7CgkJCQkJYnJlYWs7CgkJCQl9CgoJCQkJJG0tPnBhcmVuc0luT3AgPSB0cnVlOwoJCQkJJGEtPnBhcmVuc0luT3AgPSB0cnVlOwoJCQkJJHJldHVybiA9ICR0aGlzLT5OZXdPYmozKCdMZXNzX1RyZWVfT3BlcmF0aW9uJyxhcnJheSgkb3AsIGFycmF5KCRyZXR1cm4sICRhKSwgJGlzU3BhY2VkKSk7CgkJCX0KCQl9CgoJCXJldHVybiAkcmV0dXJuOwoJfQoKCgkvKioKCSAqIFBhcnNlcyB0aGUgY29uZGl0aW9ucwoJICoKCSAqIEByZXR1cm4gTGVzc19UcmVlX0NvbmRpdGlvbnxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VDb25kaXRpb25zKCkgewoJCSRpbmRleCA9ICR0aGlzLT5wb3M7CgkJJHJldHVybiA9ICRhID0gJHRoaXMtPnBhcnNlQ29uZGl0aW9uKCk7CgkJaWYoICRhICl7CgkJCXdoaWxlKCB0cnVlICl7CgkJCQlpZiggISR0aGlzLT5QZWVrUmVnKCcvXFxHLFxzKihub3RccyopP1woLycpIHx8ICAhJHRoaXMtPk1hdGNoQ2hhcignLCcpICl7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQkkYiA9ICR0aGlzLT5wYXJzZUNvbmRpdGlvbigpOwoJCQkJaWYoICEkYiApewoJCQkJCWJyZWFrOwoJCQkJfQoKCQkJCSRyZXR1cm4gPSAkdGhpcy0+TmV3T2JqNCgnTGVzc19UcmVlX0NvbmRpdGlvbicsYXJyYXkoJ29yJywgJHJldHVybiwgJGIsICRpbmRleCkpOwoJCQl9CgkJCXJldHVybiAkcmV0dXJuOwoJCX0KCX0KCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlQ29uZGl0aW9uKCkgewoJCSRpbmRleCA9ICR0aGlzLT5wb3M7CgkJJG5lZ2F0ZSA9IGZhbHNlOwoJCSRjID0gbnVsbDsKCgkJaWYgKCR0aGlzLT5NYXRjaFJlZygnL1xcR25vdC8nKSkgJG5lZ2F0ZSA9IHRydWU7CgkJJHRoaXMtPmV4cGVjdENoYXIoJygnKTsKCQkkYSA9ICR0aGlzLT5NYXRjaEZ1bmNzKGFycmF5KCdwYXJzZUFkZGl0aW9uJywncGFyc2VFbnRpdGllc0tleXdvcmQnLCdwYXJzZUVudGl0aWVzUXVvdGVkJykpOwoKCQlpZiggJGEgKXsKCQkJJG9wID0gJHRoaXMtPk1hdGNoUmVnKCcvXFxHKD86Pj18PD18PTx8Wzw9Pl0pLycpOwoJCQlpZiggJG9wICl7CgkJCQkkYiA9ICR0aGlzLT5NYXRjaEZ1bmNzKGFycmF5KCdwYXJzZUFkZGl0aW9uJywncGFyc2VFbnRpdGllc0tleXdvcmQnLCdwYXJzZUVudGl0aWVzUXVvdGVkJykpOwoJCQkJaWYoICRiICl7CgkJCQkJJGMgPSAkdGhpcy0+TmV3T2JqNSgnTGVzc19UcmVlX0NvbmRpdGlvbicsYXJyYXkoJG9wWzBdLCAkYSwgJGIsICRpbmRleCwgJG5lZ2F0ZSkpOwoJCQkJfSBlbHNlIHsKCQkJCQkkdGhpcy0+RXJyb3IoJ1VuZXhwZWN0ZWQgZXhwcmVzc2lvbicpOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJJGsgPSAkdGhpcy0+TmV3T2JqMSgnTGVzc19UcmVlX0tleXdvcmQnLCd0cnVlJyk7CgkJCQkkYyA9ICR0aGlzLT5OZXdPYmo1KCdMZXNzX1RyZWVfQ29uZGl0aW9uJyxhcnJheSgnPScsICRhLCAkaywgJGluZGV4LCAkbmVnYXRlKSk7CgkJCX0KCQkJJHRoaXMtPmV4cGVjdENoYXIoJyknKTsKCQkJcmV0dXJuICR0aGlzLT5NYXRjaFJlZygnL1xcR2FuZC8nKSA/ICR0aGlzLT5OZXdPYmozKCdMZXNzX1RyZWVfQ29uZGl0aW9uJyxhcnJheSgnYW5kJywgJGMsICR0aGlzLT5wYXJzZUNvbmRpdGlvbigpKSkgOiAkYzsKCQl9Cgl9CgoJLyoqCgkgKiBBbiBvcGVyYW5kIGlzIGFueXRoaW5nIHRoYXQgY2FuIGJlIHBhcnQgb2YgYW4gb3BlcmF0aW9uLAoJICogc3VjaCBhcyBhIENvbG9yLCBvciBhIFZhcmlhYmxlCgkgKgoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlT3BlcmFuZCAoKXsKCgkJJG5lZ2F0ZSA9IGZhbHNlOwoJCSRvZmZzZXQgPSAkdGhpcy0+cG9zKzE7CgkJaWYoICRvZmZzZXQgPj0gJHRoaXMtPmlucHV0X2xlbiApewoJCQlyZXR1cm47CgkJfQoJCSRjaGFyID0gJHRoaXMtPmlucHV0WyRvZmZzZXRdOwoJCWlmKCAkY2hhciA9PT0gJ0AnIHx8ICRjaGFyID09PSAnKCcgKXsKCQkJJG5lZ2F0ZSA9ICR0aGlzLT5NYXRjaENoYXIoJy0nKTsKCQl9CgoJCSRvID0gJHRoaXMtPk1hdGNoRnVuY3MoYXJyYXkoJ3BhcnNlU3ViJywncGFyc2VFbnRpdGllc0RpbWVuc2lvbicsJ3BhcnNlRW50aXRpZXNDb2xvcicsJ3BhcnNlRW50aXRpZXNWYXJpYWJsZScsJ3BhcnNlRW50aXRpZXNDYWxsJykpOwoKCQlpZiggJG5lZ2F0ZSApewoJCQkkby0+cGFyZW5zSW5PcCA9IHRydWU7CgkJCSRvID0gJHRoaXMtPk5ld09iajEoJ0xlc3NfVHJlZV9OZWdhdGl2ZScsJG8pOwoJCX0KCgkJcmV0dXJuICRvOwoJfQoKCgkvKioKCSAqIEV4cHJlc3Npb25zIGVpdGhlciByZXByZXNlbnQgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMsCgkgKiBvciB3aGl0ZS1zcGFjZSBkZWxpbWl0ZWQgRW50aXRpZXMuCgkgKgoJICoJIDFweCBzb2xpZCBibGFjawoJICoJIEB2YXIgKiAyCgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfRXhwcmVzc2lvbnxudWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uICgpewoJCSRlbnRpdGllcyA9IGFycmF5KCk7CgoJCWRvewoJCQkkZSA9ICR0aGlzLT5NYXRjaEZ1bmNzKGFycmF5KCdwYXJzZUFkZGl0aW9uJywncGFyc2VFbnRpdHknKSk7CgkJCWlmKCAkZSApewoJCQkJJGVudGl0aWVzW10gPSAkZTsKCQkJCS8vIG9wZXJhdGlvbnMgZG8gbm90IGFsbG93IGtleXdvcmQgIi8iIGRpbWVuc2lvbiAoZS5nLiBzbWFsbC8yMHB4KSBzbyB3ZSBzdXBwb3J0IHRoYXQgaGVyZQoJCQkJaWYoICEkdGhpcy0+UGVla1JlZygnL1xcR1wvW1wvKl0vJykgKXsKCQkJCQkkZGVsaW0gPSAkdGhpcy0+TWF0Y2hDaGFyKCcvJyk7CgkJCQkJaWYoICRkZWxpbSApewoJCQkJCQkkZW50aXRpZXNbXSA9ICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfQW5vbnltb3VzJywkZGVsaW0pOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX13aGlsZSgkZSk7CgoJCWlmKCAkZW50aXRpZXMgKXsKCQkJcmV0dXJuICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfRXhwcmVzc2lvbicsJGVudGl0aWVzKTsKCQl9Cgl9CgoKCS8qKgoJICogUGFyc2UgYSBwcm9wZXJ0eQoJICogZWc6ICdtaW4td2lkdGgnLCAnb3JpZW50YXRpb24nLCBldGMKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUHJvcGVydHkgKCl7CgkJJG5hbWUgPSAkdGhpcy0+TWF0Y2hSZWcoJy9cXEcoXCo/LT9bX2EtekEtWjAtOS1dKylccyo6LycpOwoJCWlmKCAkbmFtZSApewoJCQlyZXR1cm4gJG5hbWVbMV07CgkJfQoJfQoKCgkvKioKCSAqIFBhcnNlIGEgcnVsZSBwcm9wZXJ0eQoJICogZWc6ICdjb2xvcicsICd3aWR0aCcsICdoZWlnaHQnLCBldGMKCSAqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUnVsZVByb3BlcnR5KCl7CgkJJG9mZnNldCA9ICR0aGlzLT5wb3M7CgkJJG5hbWUgPSBhcnJheSgpOwoJCSRpbmRleCA9IGFycmF5KCk7CgkJJGxlbmd0aCA9IDA7CgoKCQkkdGhpcy0+cnVsZVByb3BlcnR5TWF0Y2goJy9cXEcoXCo/KS8nLCAkb2Zmc2V0LCAkbGVuZ3RoLCAkaW5kZXgsICRuYW1lICk7CgkJd2hpbGUoICR0aGlzLT5ydWxlUHJvcGVydHlNYXRjaCgnL1xcRygoPzpbXHctXSspfCg/OkBce1tcdy1dK1x9KSkvJywgJG9mZnNldCwgJGxlbmd0aCwgJGluZGV4LCAkbmFtZSApKTsgLy8gIQoKCQlpZiggKGNvdW50KCRuYW1lKSA+IDEpICYmICR0aGlzLT5ydWxlUHJvcGVydHlNYXRjaCgnL1xcR1xzKigoPzpcK198XCspPylccyo6LycsICRvZmZzZXQsICRsZW5ndGgsICRpbmRleCwgJG5hbWUpICl7CgkJCS8vIGF0IGxhc3QsIHdlIGhhdmUgdGhlIGNvbXBsZXRlIG1hdGNoIG5vdy4gbW92ZSBmb3J3YXJkLAoJCQkvLyBjb252ZXJ0IG5hbWUgcGFydGljbGVzIHRvIHRyZWUgb2JqZWN0cyBhbmQgcmV0dXJuOgoJCQkkdGhpcy0+c2tpcFdoaXRlc3BhY2UoJGxlbmd0aCk7CgoJCQlpZiggJG5hbWVbMF0gPT09ICcnICl7CgkJCQlhcnJheV9zaGlmdCgkbmFtZSk7CgkJCQlhcnJheV9zaGlmdCgkaW5kZXgpOwoJCQl9CgkJCWZvcmVhY2goJG5hbWUgYXMgJGsgPT4gJHMgKXsKCQkJCWlmKCAhJHMgfHwgJHNbMF0gIT09ICdAJyApewoJCQkJCSRuYW1lWyRrXSA9ICR0aGlzLT5OZXdPYmoxKCdMZXNzX1RyZWVfS2V5d29yZCcsJHMpOwoJCQkJfWVsc2V7CgkJCQkJJG5hbWVbJGtdID0gJHRoaXMtPk5ld09iajMoJ0xlc3NfVHJlZV9WYXJpYWJsZScsYXJyYXkoJ0AnIC4gc3Vic3RyKCRzLDIsLTEpLCAkaW5kZXhbJGtdLCAkdGhpcy0+ZW52LT5jdXJyZW50RmlsZUluZm8pKTsKCQkJCX0KCQkJfQoJCQlyZXR1cm4gJG5hbWU7CgkJfQoKCgl9CgoJcHJpdmF0ZSBmdW5jdGlvbiBydWxlUHJvcGVydHlNYXRjaCggJHJlLCAmJG9mZnNldCwgJiRsZW5ndGgsICAmJGluZGV4LCAmJG5hbWUgKXsKCQlwcmVnX21hdGNoKCRyZSwgJHRoaXMtPmlucHV0LCAkYSwgMCwgJG9mZnNldCk7CgkJaWYoICRhICl7CgkJCSRpbmRleFtdID0gJHRoaXMtPnBvcyArICRsZW5ndGg7CgkJCSRsZW5ndGggKz0gc3RybGVuKCRhWzBdKTsKCQkJJG9mZnNldCArPSBzdHJsZW4oJGFbMF0pOwoJCQkkbmFtZVtdID0gJGFbMV07CgkJCXJldHVybiB0cnVlOwoJCX0KCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNlcmlhbGl6ZVZhcnMoICR2YXJzICl7CgkJJHMgPSAnJzsKCgkJZm9yZWFjaCgkdmFycyBhcyAkbmFtZSA9PiAkdmFsdWUpewoJCQkkcyAuPSAoKCRuYW1lWzBdID09PSAnQCcpID8gJycgOiAnQCcpIC4gJG5hbWUgLic6ICcuICR2YWx1ZSAuICgoc3Vic3RyKCR2YWx1ZSwtMSkgPT09ICc7JykgPyAnJyA6ICc7Jyk7CgkJfQoKCQlyZXR1cm4gJHM7Cgl9CgoKCS8qKgoJICogU29tZSB2ZXJzaW9ucyBvZiBwaHAgaGF2ZSB0cm91YmxlIHdpdGggbWV0aG9kX2V4aXN0cygkYSwkYikgaWYgJGEgaXMgbm90IGFuIG9iamVjdAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGIKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc19tZXRob2QoJGEsJGIpewoJCXJldHVybiBpc19vYmplY3QoJGEpICYmIG1ldGhvZF9leGlzdHMoJGEsJGIpOwoJfQoKCgkvKioKCSAqIFJvdW5kIG51bWJlcnMgc2ltaWxhcmx5IHRvIGphdmFzY3JpcHQKCSAqIGVnOiAxLjQ5OTk5OSB0byAxIGluc3RlYWQgb2YgMgoJICoKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByb3VuZCgkaSwgJHByZWNpc2lvbiA9IDApewoKCQkkcHJlY2lzaW9uID0gcG93KDEwLCRwcmVjaXNpb24pOwoJCSRpID0gJGkqJHByZWNpc2lvbjsKCgkJJGNlaWwgPSBjZWlsKCRpKTsKCQkkZmxvb3IgPSBmbG9vcigkaSk7CgkJaWYoICgkY2VpbCAtICRpKSA8PSAoJGkgLSAkZmxvb3IpICl7CgkJCXJldHVybiAkY2VpbC8kcHJlY2lzaW9uOwoJCX1lbHNlewoJCQlyZXR1cm4gJGZsb29yLyRwcmVjaXNpb247CgkJfQoJfQoKCgkvKioKCSAqIENyZWF0ZSBMZXNzX1RyZWVfKiBvYmplY3RzIGFuZCBvcHRpb25hbGx5IGdlbmVyYXRlIGEgY2FjaGUgc3RyaW5nCgkgKgoJICogQHJldHVybiBtaXhlZAoJICovCglwdWJsaWMgZnVuY3Rpb24gTmV3T2JqMCgkY2xhc3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCk7CgkJaWYoICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApewoJCQkkb2JqLT5jYWNoZV9zdHJpbmcgPSAnIG5ldyAnLiRjbGFzcy4nKCknOwoJCX0KCQlyZXR1cm4gJG9iajsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTmV3T2JqMSgkY2xhc3MsICRhcmcpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnICk7CgkJaWYoICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApewoJCQkkb2JqLT5jYWNoZV9zdHJpbmcgPSAnIG5ldyAnLiRjbGFzcy4nKCcuTGVzc19QYXJzZXI6OkFyZ1N0cmluZygkYXJnKS4nKSc7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBOZXdPYmoyKCRjbGFzcywgJGFyZ3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnc1swXSwgJGFyZ3NbMV0gKTsKCQlpZiggJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgkJCSR0aGlzLT5PYmpDYWNoZSggJG9iaiwgJGNsYXNzLCAkYXJncyk7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBOZXdPYmozKCRjbGFzcywgJGFyZ3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnc1swXSwgJGFyZ3NbMV0sICRhcmdzWzJdICk7CgkJaWYoICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApewoJCQkkdGhpcy0+T2JqQ2FjaGUoICRvYmosICRjbGFzcywgJGFyZ3MpOwoJCX0KCQlyZXR1cm4gJG9iajsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTmV3T2JqNCgkY2xhc3MsICRhcmdzKXsKCQkkb2JqID0gbmV3ICRjbGFzcyggJGFyZ3NbMF0sICRhcmdzWzFdLCAkYXJnc1syXSwgJGFyZ3NbM10gKTsKCQlpZiggJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgkJCSR0aGlzLT5PYmpDYWNoZSggJG9iaiwgJGNsYXNzLCAkYXJncyk7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBOZXdPYmo1KCRjbGFzcywgJGFyZ3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnc1swXSwgJGFyZ3NbMV0sICRhcmdzWzJdLCAkYXJnc1szXSwgJGFyZ3NbNF0gKTsKCQlpZiggJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgkJCSR0aGlzLT5PYmpDYWNoZSggJG9iaiwgJGNsYXNzLCAkYXJncyk7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBOZXdPYmo2KCRjbGFzcywgJGFyZ3MpewoJCSRvYmogPSBuZXcgJGNsYXNzKCAkYXJnc1swXSwgJGFyZ3NbMV0sICRhcmdzWzJdLCAkYXJnc1szXSwgJGFyZ3NbNF0sICRhcmdzWzVdICk7CgkJaWYoICR0aGlzLT5DYWNoZUVuYWJsZWQoKSApewoJCQkkdGhpcy0+T2JqQ2FjaGUoICRvYmosICRjbGFzcywgJGFyZ3MpOwoJCX0KCQlyZXR1cm4gJG9iajsKCX0KCglwdWJsaWMgZnVuY3Rpb24gTmV3T2JqNygkY2xhc3MsICRhcmdzKXsKCQkkb2JqID0gbmV3ICRjbGFzcyggJGFyZ3NbMF0sICRhcmdzWzFdLCAkYXJnc1syXSwgJGFyZ3NbM10sICRhcmdzWzRdLCAkYXJnc1s1XSwgJGFyZ3NbNl0gKTsKCQlpZiggJHRoaXMtPkNhY2hlRW5hYmxlZCgpICl7CgkJCSR0aGlzLT5PYmpDYWNoZSggJG9iaiwgJGNsYXNzLCAkYXJncyk7CgkJfQoJCXJldHVybiAkb2JqOwoJfQoKCS8vY2FjaGluZwoJcHVibGljIGZ1bmN0aW9uIE9iakNhY2hlKCRvYmosICRjbGFzcywgJGFyZ3M9YXJyYXkoKSl7CgkJJG9iai0+Y2FjaGVfc3RyaW5nID0gJyBuZXcgJy4kY2xhc3MuJygnLiBzZWxmOjpBcmdDYWNoZSgkYXJncykuJyknOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBBcmdDYWNoZSgkYXJncyl7CgkJcmV0dXJuIGltcGxvZGUoJywnLGFycmF5X21hcCggYXJyYXkoJ0xlc3NfUGFyc2VyJywnQXJnU3RyaW5nJyksJGFyZ3MpKTsKCX0KCgoJLyoqCgkgKiBDb252ZXJ0IGFuIGFyZ3VtZW50IHRvIGEgc3RyaW5nIGZvciB1c2UgaW4gdGhlIHBhcnNlciBjYWNoZQoJICoKCSAqIEByZXR1cm4gc3RyaW5nCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQXJnU3RyaW5nKCRhcmcpewoKCQkkdHlwZSA9IGdldHR5cGUoJGFyZyk7CgoJCWlmKCAkdHlwZSA9PT0gJ29iamVjdCcpewoJCQkkc3RyaW5nID0gJGFyZy0+Y2FjaGVfc3RyaW5nOwoJCQl1bnNldCgkYXJnLT5jYWNoZV9zdHJpbmcpOwoJCQlyZXR1cm4gJHN0cmluZzsKCgkJfWVsc2VpZiggJHR5cGUgPT09ICdhcnJheScgKXsKCQkJJHN0cmluZyA9ICcgQXJyYXkoJzsKCQkJZm9yZWFjaCgkYXJnIGFzICRrID0+ICRhKXsKCQkJCSRzdHJpbmcgLj0gdmFyX2V4cG9ydCgkayx0cnVlKS4nID0+ICcuc2VsZjo6QXJnU3RyaW5nKCRhKS4nLCc7CgkJCX0KCQkJcmV0dXJuICRzdHJpbmcgLiAnKSc7CgkJfQoKCQlyZXR1cm4gdmFyX2V4cG9ydCgkYXJnLHRydWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBFcnJvcigkbXNnKXsKCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fUGFyc2VyKCRtc2csIG51bGwsICR0aGlzLT5mdXJ0aGVzdCwgJHRoaXMtPmVudi0+Y3VycmVudEZpbGVJbmZvKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFdpblBhdGgoJHBhdGgpewoJCXJldHVybiBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRwYXRoKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gQ2FjaGVFbmFibGVkKCl7CgkJcmV0dXJuIChMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddICYmIChMZXNzX0NhY2hlOjokY2FjaGVfZGlyIHx8IChMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NhY2hlX21ldGhvZCddID09ICdjYWxsYmFjaycpKSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/SourceMap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/SourceMap/Base64VLQ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFbmNvZGUgLyBEZWNvZGUgQmFzZTY0IFZMUS4KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSBTb3VyY2VNYXAKICovCmNsYXNzIExlc3NfU291cmNlTWFwX0Jhc2U2NFZMUSB7CgoJLyoqCgkgKiBTaGlmdAoJICoKCSAqIEB2YXIgaW50ZWdlcgoJICovCglwcml2YXRlICRzaGlmdCA9IDU7CgoJLyoqCgkgKiBNYXNrCgkgKgoJICogQHZhciBpbnRlZ2VyCgkgKi8KCXByaXZhdGUgJG1hc2sgPSAweDFGOyAvLyA9PSAoMSA8PCBzaGlmdCkgPT0gMGIwMDAxMTExMQoKCS8qKgoJICogQ29udGludWF0aW9uIGJpdAoJICoKCSAqIEB2YXIgaW50ZWdlcgoJICovCglwcml2YXRlICRjb250aW51YXRpb25CaXQgPSAweDIwOyAvLyA9PSAobWFzayAtIDEgKSA9PSAwYjAwMTAwMDAwCgoJLyoqCgkgKiBDaGFyIHRvIGludGVnZXIgbWFwCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcml2YXRlICRjaGFyVG9JbnRNYXAgPSBhcnJheSgKCQknQScgPT4gMCwgJ0InID0+IDEsICdDJyA9PiAyLCAnRCcgPT4gMywgJ0UnID0+IDQsICdGJyA9PiA1LCAnRycgPT4gNiwKCQknSCcgPT4gNywnSScgPT4gOCwgJ0onID0+IDksICdLJyA9PiAxMCwgJ0wnID0+IDExLCAnTScgPT4gMTIsICdOJyA9PiAxMywKCQknTycgPT4gMTQsICdQJyA9PiAxNSwgJ1EnID0+IDE2LCAnUicgPT4gMTcsICdTJyA9PiAxOCwgJ1QnID0+IDE5LCAnVScgPT4gMjAsCgkJJ1YnID0+IDIxLCAnVycgPT4gMjIsICdYJyA9PiAyMywgJ1knID0+IDI0LCAnWicgPT4gMjUsICdhJyA9PiAyNiwgJ2InID0+IDI3LAoJCSdjJyA9PiAyOCwgJ2QnID0+IDI5LCAnZScgPT4gMzAsICdmJyA9PiAzMSwgJ2cnID0+IDMyLCAnaCcgPT4gMzMsICdpJyA9PiAzNCwKCQknaicgPT4gMzUsICdrJyA9PiAzNiwgJ2wnID0+IDM3LCAnbScgPT4gMzgsICduJyA9PiAzOSwgJ28nID0+IDQwLCAncCcgPT4gNDEsCgkJJ3EnID0+IDQyLCAncicgPT4gNDMsICdzJyA9PiA0NCwgJ3QnID0+IDQ1LCAndScgPT4gNDYsICd2JyA9PiA0NywgJ3cnID0+IDQ4LAoJCSd4JyA9PiA0OSwgJ3knID0+IDUwLCAneicgPT4gNTEsIDAgPT4gNTIsIDEgPT4gNTMsIDIgPT4gNTQsIDMgPT4gNTUsIDQgPT4gNTYsCgkJNSA9PiA1NywJNiA9PiA1OCwgNyA9PiA1OSwgOCA9PiA2MCwgOSA9PiA2MSwgJysnID0+IDYyLCAnLycgPT4gNjMsCgkpOwoKCS8qKgoJICogSW50ZWdlciB0byBjaGFyIG1hcAoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHJpdmF0ZSAkaW50VG9DaGFyTWFwID0gYXJyYXkoCgkJMCA9PiAnQScsIDEgPT4gJ0InLCAyID0+ICdDJywgMyA9PiAnRCcsIDQgPT4gJ0UnLCA1ID0+ICdGJywgNiA9PiAnRycsCgkJNyA9PiAnSCcsIDggPT4gJ0knLCA5ID0+ICdKJywgMTAgPT4gJ0snLCAxMSA9PiAnTCcsIDEyID0+ICdNJywgMTMgPT4gJ04nLAoJCTE0ID0+ICdPJywgMTUgPT4gJ1AnLCAxNiA9PiAnUScsIDE3ID0+ICdSJywgMTggPT4gJ1MnLCAxOSA9PiAnVCcsIDIwID0+ICdVJywKCQkyMSA9PiAnVicsIDIyID0+ICdXJywgMjMgPT4gJ1gnLCAyNCA9PiAnWScsIDI1ID0+ICdaJywgMjYgPT4gJ2EnLCAyNyA9PiAnYicsCgkJMjggPT4gJ2MnLCAyOSA9PiAnZCcsIDMwID0+ICdlJywgMzEgPT4gJ2YnLCAzMiA9PiAnZycsIDMzID0+ICdoJywgMzQgPT4gJ2knLAoJCTM1ID0+ICdqJywgMzYgPT4gJ2snLCAzNyA9PiAnbCcsIDM4ID0+ICdtJywgMzkgPT4gJ24nLCA0MCA9PiAnbycsIDQxID0+ICdwJywKCQk0MiA9PiAncScsIDQzID0+ICdyJywgNDQgPT4gJ3MnLCA0NSA9PiAndCcsIDQ2ID0+ICd1JywgNDcgPT4gJ3YnLCA0OCA9PiAndycsCgkJNDkgPT4gJ3gnLCA1MCA9PiAneScsIDUxID0+ICd6JywgNTIgPT4gJzAnLCA1MyA9PiAnMScsIDU0ID0+ICcyJywgNTUgPT4gJzMnLAoJCTU2ID0+ICc0JywgNTcgPT4gJzUnLCA1OCA9PiAnNicsIDU5ID0+ICc3JywgNjAgPT4gJzgnLCA2MSA9PiAnOScsIDYyID0+ICcrJywKCQk2MyA9PiAnLycsCgkpOwoKCS8qKgoJICogQ29uc3RydWN0b3IKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCl7CgkJLy8gSSBsZWF2ZSBpdCBoZXJlIGZvciBmdXR1cmUgcmVmZXJlbmNlCgkJLy8gZm9yZWFjaChzdHJfc3BsaXQoJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nKSBhcyAkaSA9PiAkY2hhcikKCQkvLyB7CgkJLy8JICR0aGlzLT5jaGFyVG9JbnRNYXBbJGNoYXJdID0gJGk7CgkJLy8JICR0aGlzLT5pbnRUb0NoYXJNYXBbJGldID0gJGNoYXI7CgkJLy8gfQoJfQoKCS8qKgoJICogQ29udmVydCBmcm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXMKCSAqIGlzIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LglGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6CgkgKgkgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KQoJICoJIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KQoJICogV2UgZ2VuZXJhdGUgdGhlIHZhbHVlIGZvciAzMiBiaXQgbWFjaGluZXMsIGhlbmNlIC0yMTQ3NDgzNjQ4IGJlY29tZXMgMSwgbm90IDQyOTQ5NjcyOTcsCgkgKiBldmVuIG9uIGEgNjQgYml0IG1hY2hpbmUuCgkgKiBAcGFyYW0gc3RyaW5nICRhVmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRvVkxRU2lnbmVkKCRhVmFsdWUpewoJCXJldHVybiAweGZmZmZmZmZmICYgKCRhVmFsdWUgPCAwID8gKCgtJGFWYWx1ZSkgPDwgMSkgKyAxIDogKCRhVmFsdWUgPDwgMSkgKyAwKTsKCX0KCgkvKioKCSAqIENvbnZlcnQgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzCgkgKiBpcyBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOgoJICoJIDIgKDEwIGJpbmFyeSkgYmVjb21lcyAxLCAzICgxMSBiaW5hcnkpIGJlY29tZXMgLTEKCSAqCSA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTIKCSAqIFdlIGFzc3VtZSB0aGF0IHRoZSB2YWx1ZSB3YXMgZ2VuZXJhdGVkIHdpdGggYSAzMiBiaXQgbWFjaGluZSBpbiBtaW5kLgoJICogSGVuY2UKCSAqCSAxIGJlY29tZXMgLTIxNDc0ODM2NDgKCSAqIGV2ZW4gb24gYSA2NCBiaXQgbWFjaGluZS4KCSAqIEBwYXJhbSBpbnRlZ2VyICRhVmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGZyb21WTFFTaWduZWQoJGFWYWx1ZSl7CgkJcmV0dXJuICRhVmFsdWUgJiAxID8gJHRoaXMtPnplcm9GaWxsKH4kYVZhbHVlICsgMiwgMSkgfCAoLTEgLSAweDdmZmZmZmZmKSA6ICR0aGlzLT56ZXJvRmlsbCgkYVZhbHVlLCAxKTsKCX0KCgkvKioKCSAqIFJldHVybiB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRhVmFsdWUgVGhlIHZhbHVlIHRvIGVuY29kZQoJICogQHJldHVybiBzdHJpbmcgVGhlIGVuY29kZWQgdmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGVuY29kZSgkYVZhbHVlKXsKCQkkZW5jb2RlZCA9ICcnOwoJCSR2bHEgPSAkdGhpcy0+dG9WTFFTaWduZWQoJGFWYWx1ZSk7CgkJZG8KCQl7CgkJCSRkaWdpdCA9ICR2bHEgJiAkdGhpcy0+bWFzazsKCQkJJHZscSA9ICR0aGlzLT56ZXJvRmlsbCgkdmxxLCAkdGhpcy0+c2hpZnQpOwoJCQlpZigkdmxxID4gMCl7CgkJCQkkZGlnaXQgfD0gJHRoaXMtPmNvbnRpbnVhdGlvbkJpdDsKCQkJfQoJCQkkZW5jb2RlZCAuPSAkdGhpcy0+YmFzZTY0RW5jb2RlKCRkaWdpdCk7CgkJfSB3aGlsZSgkdmxxID4gMCk7CgoJCXJldHVybiAkZW5jb2RlZDsKCX0KCgkvKioKCSAqIFJldHVybiB0aGUgdmFsdWUgZGVjb2RlZCBmcm9tIGJhc2UgNjQgVkxRLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGVuY29kZWQgVGhlIGVuY29kZWQgdmFsdWUgdG8gZGVjb2RlCgkgKiBAcmV0dXJuIGludGVnZXIgVGhlIGRlY29kZWQgdmFsdWUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGRlY29kZSgkZW5jb2RlZCl7CgkJJHZscSA9IDA7CgkJJGkgPSAwOwoJCWRvCgkJewoJCQkkZGlnaXQgPSAkdGhpcy0+YmFzZTY0RGVjb2RlKCRlbmNvZGVkWyRpXSk7CgkJCSR2bHEgfD0gKCRkaWdpdCAmICR0aGlzLT5tYXNrKSA8PCAoJGkgKiAkdGhpcy0+c2hpZnQpOwoJCQkkaSsrOwoJCX0gd2hpbGUoJGRpZ2l0ICYgJHRoaXMtPmNvbnRpbnVhdGlvbkJpdCk7CgoJCXJldHVybiAkdGhpcy0+ZnJvbVZMUVNpZ25lZCgkdmxxKTsKCX0KCgkvKioKCSAqIFJpZ2h0IHNoaWZ0IHdpdGggemVybyBmaWxsLgoJICoKCSAqIEBwYXJhbSBpbnRlZ2VyICRhIG51bWJlciB0byBzaGlmdAoJICogQHBhcmFtIGludGVnZXIgJGIgbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQKCSAqIEByZXR1cm4gaW50ZWdlcgoJICovCglwdWJsaWMgZnVuY3Rpb24gemVyb0ZpbGwoJGEsICRiKXsKCQlyZXR1cm4gKCRhID49IDApID8gKCRhID4+ICRiKSA6ICgkYSA+PiAkYikgJiAoUEhQX0lOVF9NQVggPj4gKCRiIC0gMSkpOwoJfQoKCS8qKgoJICogRW5jb2RlIHNpbmdsZSA2LWJpdCBkaWdpdCBhcyBiYXNlNjQuCgkgKgoJICogQHBhcmFtIGludGVnZXIgJG51bWJlcgoJICogQHJldHVybiBzdHJpbmcKCSAqIEB0aHJvd3MgRXhjZXB0aW9uIElmIHRoZSBudW1iZXIgaXMgaW52YWxpZAoJICovCglwdWJsaWMgZnVuY3Rpb24gYmFzZTY0RW5jb2RlKCRudW1iZXIpewoJCWlmKCRudW1iZXIgPCAwIHx8ICRudW1iZXIgPiA2Myl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oc3ByaW50ZignSW52YWxpZCBudW1iZXIgIiVzIiBnaXZlbi4gTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzLicsICRudW1iZXIpKTsKCQl9CgkJcmV0dXJuICR0aGlzLT5pbnRUb0NoYXJNYXBbJG51bWJlcl07Cgl9CgoJLyoqCgkgKiBEZWNvZGUgc2luZ2xlIDYtYml0IGRpZ2l0IGZyb20gYmFzZTY0CgkgKgoJICogQHBhcmFtIHN0cmluZyAkY2hhcgoJICogQHJldHVybiBudW1iZXIKCSAqIEB0aHJvd3MgRXhjZXB0aW9uIElmIHRoZSBudW1iZXIgaXMgaW52YWxpZAoJICovCglwdWJsaWMgZnVuY3Rpb24gYmFzZTY0RGVjb2RlKCRjaGFyKXsKCQlpZighYXJyYXlfa2V5X2V4aXN0cygkY2hhciwgJHRoaXMtPmNoYXJUb0ludE1hcCkpewoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKHNwcmludGYoJ0ludmFsaWQgYmFzZSA2NCBkaWdpdCAiJXMiIGdpdmVuLicsICRjaGFyKSk7CgkJfQoJCXJldHVybiAkdGhpcy0+Y2hhclRvSW50TWFwWyRjaGFyXTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/SourceMap/Generator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogKiBTb3VyY2UgbWFwIGdlbmVyYXRvcg0KICoNCiAqIEBwYWNrYWdlIExlc3MNCiAqIEBzdWJwYWNrYWdlIE91dHB1dA0KICovDQpjbGFzcyBMZXNzX1NvdXJjZU1hcF9HZW5lcmF0b3IgZXh0ZW5kcyBMZXNzX0NvbmZpZ3VyYWJsZSB7DQoNCgkvKioNCgkgKiBXaGF0IHZlcnNpb24gb2Ygc291cmNlIG1hcCBkb2VzIHRoZSBnZW5lcmF0b3IgZ2VuZXJhdGU/DQoJICovDQoJY29uc3QgVkVSU0lPTiA9IDM7DQoNCgkvKioNCgkgKiBBcnJheSBvZiBkZWZhdWx0IG9wdGlvbnMNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJGRlZmF1bHRPcHRpb25zID0gYXJyYXkoDQoJCQkvLyBhbiBvcHRpb25hbCBzb3VyY2Ugcm9vdCwgdXNlZnVsIGZvciByZWxvY2F0aW5nIHNvdXJjZSBmaWxlcw0KCQkJLy8gb24gYSBzZXJ2ZXIgb3IgcmVtb3ZpbmcgcmVwZWF0ZWQgdmFsdWVzIGluIHRoZSAnc291cmNlcycgZW50cnkuDQoJCQkvLyBUaGlzIHZhbHVlIGlzIHByZXBlbmRlZCB0byB0aGUgaW5kaXZpZHVhbCBlbnRyaWVzIGluIHRoZSAnc291cmNlJyBmaWVsZC4NCgkJCSdzb3VyY2VSb290JwkJCT0+ICcnLA0KDQoJCQkvLyBhbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSB0aGF0IHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguDQoJCQknc291cmNlTWFwRmlsZW5hbWUnCQk9PiBudWxsLA0KDQoJCQkvLyB1cmwgb2YgdGhlIG1hcA0KCQkJJ3NvdXJjZU1hcFVSTCcJCQk9PiBudWxsLA0KDQoJCQkvLyBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZSB0byB3cml0ZSB0aGUgbWFwIHRvDQoJCQknc291cmNlTWFwV3JpdGVUbycJCT0+IG51bGwsDQoNCgkJCS8vIG91dHB1dCBzb3VyY2UgY29udGVudHM/DQoJCQknb3V0cHV0U291cmNlRmlsZXMnCQk9PiBmYWxzZSwNCg0KCQkJLy8gYmFzZSBwYXRoIGZvciBmaWxlbmFtZSBub3JtYWxpemF0aW9uDQoJCQknc291cmNlTWFwUm9vdHBhdGgnCQk9PiAnJywNCg0KCQkJLy8gYmFzZSBwYXRoIGZvciBmaWxlbmFtZSBub3JtYWxpemF0aW9uDQoJCQknc291cmNlTWFwQmFzZXBhdGgnICAgPT4gJycNCgkpOw0KDQoJLyoqDQoJICogVGhlIGJhc2U2NCBWTFEgZW5jb2Rlcg0KCSAqDQoJICogQHZhciBMZXNzX1NvdXJjZU1hcF9CYXNlNjRWTFENCgkgKi8NCglwcm90ZWN0ZWQgJGVuY29kZXI7DQoNCgkvKioNCgkgKiBBcnJheSBvZiBtYXBwaW5ncw0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbWFwcGluZ3MgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogVGhlIHJvb3Qgbm9kZQ0KCSAqDQoJICogQHZhciBMZXNzX1RyZWVfUnVsZXNldA0KCSAqLw0KCXByb3RlY3RlZCAkcm9vdDsNCg0KCS8qKg0KCSAqIEFycmF5IG9mIGNvbnRlbnRzIG1hcA0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkY29udGVudHNNYXAgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogRmlsZSB0byBjb250ZW50IG1hcA0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkc291cmNlcyA9IGFycmF5KCk7DQoJcHJvdGVjdGVkICRzb3VyY2Vfa2V5cyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBDb25zdHJ1Y3Rvcg0KCSAqDQoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290IFRoZSByb290IG5vZGUNCgkgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgQXJyYXkgb2Ygb3B0aW9ucw0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChMZXNzX1RyZWVfUnVsZXNldCAkcm9vdCwgJGNvbnRlbnRzTWFwLCAkb3B0aW9ucyA9IGFycmF5KCkpew0KCQkkdGhpcy0+cm9vdCA9ICRyb290Ow0KCQkkdGhpcy0+Y29udGVudHNNYXAgPSAkY29udGVudHNNYXA7DQoJCSR0aGlzLT5lbmNvZGVyID0gbmV3IExlc3NfU291cmNlTWFwX0Jhc2U2NFZMUSgpOw0KDQoJCSR0aGlzLT5TZXRPcHRpb25zKCRvcHRpb25zKTsNCgkJDQoJCSR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBSb290cGF0aCddID0gJHRoaXMtPmZpeFdpbmRvd3NQYXRoKCR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBSb290cGF0aCddLCB0cnVlKTsNCgkJJHRoaXMtPm9wdGlvbnNbJ3NvdXJjZU1hcEJhc2VwYXRoJ10gPSAkdGhpcy0+Zml4V2luZG93c1BhdGgoJHRoaXMtPm9wdGlvbnNbJ3NvdXJjZU1hcEJhc2VwYXRoJ10sIHRydWUpOw0KCX0NCg0KCS8qKg0KCSAqIEdlbmVyYXRlcyB0aGUgQ1NTDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZw0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZUNTUygpew0KCQkkb3V0cHV0ID0gbmV3IExlc3NfT3V0cHV0X01hcHBlZCgkdGhpcy0+Y29udGVudHNNYXAsICR0aGlzKTsNCg0KCQkvLyBjYXRjaCB0aGUgb3V0cHV0DQoJCSR0aGlzLT5yb290LT5nZW5DU1MoJG91dHB1dCk7DQoNCg0KCQkkc291cmNlTWFwVXJsCQkJCT0gJHRoaXMtPmdldE9wdGlvbignc291cmNlTWFwVVJMJyk7DQoJCSRzb3VyY2VNYXBGaWxlbmFtZQkJCT0gJHRoaXMtPmdldE9wdGlvbignc291cmNlTWFwRmlsZW5hbWUnKTsNCgkJJHNvdXJjZU1hcENvbnRlbnQJCQk9ICR0aGlzLT5nZW5lcmF0ZUpzb24oKTsNCgkJJHNvdXJjZU1hcFdyaXRlVG8JCQk9ICR0aGlzLT5nZXRPcHRpb24oJ3NvdXJjZU1hcFdyaXRlVG8nKTsNCg0KCQlpZiggISRzb3VyY2VNYXBVcmwgJiYgJHNvdXJjZU1hcEZpbGVuYW1lICl7DQoJCQkkc291cmNlTWFwVXJsID0gJHRoaXMtPm5vcm1hbGl6ZUZpbGVuYW1lKCRzb3VyY2VNYXBGaWxlbmFtZSk7DQoJCX0NCg0KCQkvLyB3cml0ZSBtYXAgdG8gYSBmaWxlDQoJCWlmKCAkc291cmNlTWFwV3JpdGVUbyApew0KCQkJJHRoaXMtPnNhdmVNYXAoJHNvdXJjZU1hcFdyaXRlVG8sICRzb3VyY2VNYXBDb250ZW50KTsNCgkJfQ0KDQoJCS8vIGlubGluZSB0aGUgbWFwDQoJCWlmKCAhJHNvdXJjZU1hcFVybCApew0KCQkJJHNvdXJjZU1hcFVybCA9IHNwcmludGYoJ2RhdGE6YXBwbGljYXRpb24vanNvbiwlcycsIExlc3NfRnVuY3Rpb25zOjplbmNvZGVVUklDb21wb25lbnQoJHNvdXJjZU1hcENvbnRlbnQpKTsNCgkJfQ0KDQoJCWlmKCAkc291cmNlTWFwVXJsICl7DQoJCQkkb3V0cHV0LT5hZGQoIHNwcmludGYoJy8qIyBzb3VyY2VNYXBwaW5nVVJMPSVzICovJywgJHNvdXJjZU1hcFVybCkgKTsNCgkJfQ0KDQoJCXJldHVybiAkb3V0cHV0LT50b1N0cmluZygpOw0KCX0NCg0KCS8qKg0KCSAqIFNhdmVzIHRoZSBzb3VyY2UgbWFwIHRvIGEgZmlsZQ0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkZmlsZSBUaGUgYWJzb2x1dGUgcGF0aCB0byBhIGZpbGUNCgkgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50IFRoZSBjb250ZW50IHRvIHdyaXRlDQoJICogQHRocm93cyBFeGNlcHRpb24gSWYgdGhlIGZpbGUgY291bGQgbm90IGJlIHNhdmVkDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNhdmVNYXAoJGZpbGUsICRjb250ZW50KXsNCgkJJGRpciA9IGRpcm5hbWUoJGZpbGUpOw0KCQkvLyBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QNCgkJaWYoICFpc19kaXIoJGRpcikgKXsNCgkJCS8vIEZJWE1FOiBjcmVhdGUgdGhlIGRpciBhdXRvbWF0aWNhbGx5Pw0KCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgZGlyZWN0b3J5ICIlcyIgZG9lcyBub3QgZXhpc3QuIENhbm5vdCBzYXZlIHRoZSBzb3VyY2UgbWFwLicsICRkaXIpKTsNCgkJfQ0KCQkvLyBGSVhNRTogcHJvcGVyIHNhdmluZywgd2l0aCBkaXIgd3JpdGUgY2hlY2shDQoJCWlmKGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlLCAkY29udGVudCkgPT09IGZhbHNlKXsNCgkJCXRocm93IG5ldyBFeGNlcHRpb24oc3ByaW50ZignQ2Fubm90IHNhdmUgdGhlIHNvdXJjZSBtYXAgdG8gIiVzIicsICRmaWxlKSk7DQoJCX0NCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogTm9ybWFsaXplcyB0aGUgZmlsZW5hbWUNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lDQoJICogQHJldHVybiBzdHJpbmcNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gbm9ybWFsaXplRmlsZW5hbWUoJGZpbGVuYW1lKXsNCg0KCQkkZmlsZW5hbWUgPSAkdGhpcy0+Zml4V2luZG93c1BhdGgoJGZpbGVuYW1lKTsNCg0KCQkkcm9vdHBhdGggPSAkdGhpcy0+Z2V0T3B0aW9uKCdzb3VyY2VNYXBSb290cGF0aCcpOw0KCQkkYmFzZVBhdGggPSAkdGhpcy0+Z2V0T3B0aW9uKCdzb3VyY2VNYXBCYXNlcGF0aCcpOw0KDQoJCS8vICJUcmltIiB0aGUgJ3NvdXJjZU1hcEJhc2VwYXRoJyBmcm9tIHRoZSBvdXRwdXQgZmlsZW5hbWUuDQoJCWlmIChzdHJwb3MoJGZpbGVuYW1lLCAkYmFzZVBhdGgpID09PSAwKSB7DQoJCQkkZmlsZW5hbWUgPSBzdWJzdHIoJGZpbGVuYW1lLCBzdHJsZW4oJGJhc2VQYXRoKSk7DQoJCX0NCg0KCQkvLyBSZW1vdmUgZXh0cmEgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMuDQoJCWlmKHN0cnBvcygkZmlsZW5hbWUsICdcXCcpID09PSAwIHx8IHN0cnBvcygkZmlsZW5hbWUsICcvJykgPT09IDApew0KCQkJJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlbmFtZSwgMSk7DQoJCX0NCg0KCQlyZXR1cm4gJHJvb3RwYXRoIC4gJGZpbGVuYW1lOw0KCX0NCg0KCS8qKg0KCSAqIEFkZHMgYSBtYXBwaW5nDQoJICoNCgkgKiBAcGFyYW0gaW50ZWdlciAkZ2VuZXJhdGVkTGluZSBUaGUgbGluZSBudW1iZXIgaW4gZ2VuZXJhdGVkIGZpbGUNCgkgKiBAcGFyYW0gaW50ZWdlciAkZ2VuZXJhdGVkQ29sdW1uIFRoZSBjb2x1bW4gbnVtYmVyIGluIGdlbmVyYXRlZCBmaWxlDQoJICogQHBhcmFtIGludGVnZXIgJG9yaWdpbmFsTGluZSBUaGUgbGluZSBudW1iZXIgaW4gb3JpZ2luYWwgZmlsZQ0KCSAqIEBwYXJhbSBpbnRlZ2VyICRvcmlnaW5hbENvbHVtbiBUaGUgY29sdW1uIG51bWJlciBpbiBvcmlnaW5hbCBmaWxlDQoJICogQHBhcmFtIHN0cmluZyAkc291cmNlRmlsZSBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gYWRkTWFwcGluZygkZ2VuZXJhdGVkTGluZSwgJGdlbmVyYXRlZENvbHVtbiwgJG9yaWdpbmFsTGluZSwgJG9yaWdpbmFsQ29sdW1uLCAkZmlsZUluZm8gKXsNCg0KCQkkdGhpcy0+bWFwcGluZ3NbXSA9IGFycmF5KA0KCQkJJ2dlbmVyYXRlZF9saW5lJyA9PiAkZ2VuZXJhdGVkTGluZSwNCgkJCSdnZW5lcmF0ZWRfY29sdW1uJyA9PiAkZ2VuZXJhdGVkQ29sdW1uLA0KCQkJJ29yaWdpbmFsX2xpbmUnID0+ICRvcmlnaW5hbExpbmUsDQoJCQknb3JpZ2luYWxfY29sdW1uJyA9PiAkb3JpZ2luYWxDb2x1bW4sDQoJCQknc291cmNlX2ZpbGUnID0+ICRmaWxlSW5mb1snY3VycmVudFVyaSddDQoJCSk7DQoNCgkJJHRoaXMtPnNvdXJjZXNbJGZpbGVJbmZvWydjdXJyZW50VXJpJ11dID0gJGZpbGVJbmZvWydmaWxlbmFtZSddOw0KCX0NCg0KDQoJLyoqDQoJICogR2VuZXJhdGVzIHRoZSBKU09OIHNvdXJjZSBtYXANCgkgKg0KCSAqIEByZXR1cm4gc3RyaW5nDQoJICogQHNlZSBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdlbmVyYXRlSnNvbigpew0KDQoJCSRzb3VyY2VNYXAgPSBhcnJheSgpOw0KCQkkbWFwcGluZ3MgPSAkdGhpcy0+Z2VuZXJhdGVNYXBwaW5ncygpOw0KDQoJCS8vIEZpbGUgdmVyc2lvbiAoYWx3YXlzIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgb2JqZWN0KSBhbmQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuDQoJCSRzb3VyY2VNYXBbJ3ZlcnNpb24nXSA9IHNlbGY6OlZFUlNJT047DQoNCg0KCQkvLyBBbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSB0aGF0IHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguDQoJCSRmaWxlID0gJHRoaXMtPmdldE9wdGlvbignc291cmNlTWFwRmlsZW5hbWUnKTsNCgkJaWYoICRmaWxlICl7DQoJCQkkc291cmNlTWFwWydmaWxlJ10gPSAkZmlsZTsNCgkJfQ0KDQoNCgkJLy8gQW4gb3B0aW9uYWwgc291cmNlIHJvb3QsIHVzZWZ1bCBmb3IgcmVsb2NhdGluZyBzb3VyY2UgZmlsZXMgb24gYSBzZXJ2ZXIgb3IgcmVtb3ZpbmcgcmVwZWF0ZWQgdmFsdWVzIGluIHRoZSAnc291cmNlcycgZW50cnkuCVRoaXMgdmFsdWUgaXMgcHJlcGVuZGVkIHRvIHRoZSBpbmRpdmlkdWFsIGVudHJpZXMgaW4gdGhlICdzb3VyY2UnIGZpZWxkLg0KCQkkcm9vdCA9ICR0aGlzLT5nZXRPcHRpb24oJ3NvdXJjZVJvb3QnKTsNCgkJaWYoICRyb290ICl7DQoJCQkkc291cmNlTWFwWydzb3VyY2VSb290J10gPSAkcm9vdDsNCgkJfQ0KDQoNCgkJLy8gQSBsaXN0IG9mIG9yaWdpbmFsIHNvdXJjZXMgdXNlZCBieSB0aGUgJ21hcHBpbmdzJyBlbnRyeS4NCgkJJHNvdXJjZU1hcFsnc291cmNlcyddID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkdGhpcy0+c291cmNlcyBhcyAkc291cmNlX3VyaSA9PiAkc291cmNlX2ZpbGVuYW1lKXsNCgkJCSRzb3VyY2VNYXBbJ3NvdXJjZXMnXVtdID0gJHRoaXMtPm5vcm1hbGl6ZUZpbGVuYW1lKCRzb3VyY2VfZmlsZW5hbWUpOw0KCQl9DQoNCg0KCQkvLyBBIGxpc3Qgb2Ygc3ltYm9sIG5hbWVzIHVzZWQgYnkgdGhlICdtYXBwaW5ncycgZW50cnkuDQoJCSRzb3VyY2VNYXBbJ25hbWVzJ10gPSBhcnJheSgpOw0KDQoJCS8vIEEgc3RyaW5nIHdpdGggdGhlIGVuY29kZWQgbWFwcGluZyBkYXRhLg0KCQkkc291cmNlTWFwWydtYXBwaW5ncyddID0gJG1hcHBpbmdzOw0KDQoJCWlmKCAkdGhpcy0+Z2V0T3B0aW9uKCdvdXRwdXRTb3VyY2VGaWxlcycpICl7DQoJCQkvLyBBbiBvcHRpb25hbCBsaXN0IG9mIHNvdXJjZSBjb250ZW50LCB1c2VmdWwgd2hlbiB0aGUgJ3NvdXJjZScgY2FuJ3QgYmUgaG9zdGVkLg0KCQkJLy8gVGhlIGNvbnRlbnRzIGFyZSBsaXN0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHNvdXJjZXMgYWJvdmUuDQoJCQkvLyAnbnVsbCcgbWF5IGJlIHVzZWQgaWYgc29tZSBvcmlnaW5hbCBzb3VyY2VzIHNob3VsZCBiZSByZXRyaWV2ZWQgYnkgbmFtZS4NCgkJCSRzb3VyY2VNYXBbJ3NvdXJjZXNDb250ZW50J10gPSAkdGhpcy0+Z2V0U291cmNlc0NvbnRlbnQoKTsNCgkJfQ0KDQoJCS8vIGxlc3MuanMgY29tcGF0IGZpeGVzDQoJCWlmKCBjb3VudCgkc291cmNlTWFwWydzb3VyY2VzJ10pICYmIGVtcHR5KCRzb3VyY2VNYXBbJ3NvdXJjZVJvb3QnXSkgKXsNCgkJCXVuc2V0KCRzb3VyY2VNYXBbJ3NvdXJjZVJvb3QnXSk7DQoJCX0NCg0KCQlyZXR1cm4ganNvbl9lbmNvZGUoJHNvdXJjZU1hcCk7DQoJfQ0KDQoJLyoqDQoJICogUmV0dXJucyB0aGUgc291cmNlcyBjb250ZW50cw0KCSAqDQoJICogQHJldHVybiBhcnJheXxudWxsDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFNvdXJjZXNDb250ZW50KCl7DQoJCWlmKGVtcHR5KCR0aGlzLT5zb3VyY2VzKSl7DQoJCQlyZXR1cm47DQoJCX0NCgkJJGNvbnRlbnQgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCR0aGlzLT5zb3VyY2VzIGFzICRzb3VyY2VGaWxlKXsNCgkJCSRjb250ZW50W10gPSBmaWxlX2dldF9jb250ZW50cygkc291cmNlRmlsZSk7DQoJCX0NCgkJcmV0dXJuICRjb250ZW50Ow0KCX0NCg0KCS8qKg0KCSAqIEdlbmVyYXRlcyB0aGUgbWFwcGluZ3Mgc3RyaW5nDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZw0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZU1hcHBpbmdzKCl7DQoNCgkJaWYoICFjb3VudCgkdGhpcy0+bWFwcGluZ3MpICl7DQoJCQlyZXR1cm4gJyc7DQoJCX0NCg0KCQkkdGhpcy0+c291cmNlX2tleXMgPSBhcnJheV9mbGlwKGFycmF5X2tleXMoJHRoaXMtPnNvdXJjZXMpKTsNCg0KDQoJCS8vIGdyb3VwIG1hcHBpbmdzIGJ5IGdlbmVyYXRlZCBsaW5lIG51bWJlci4NCgkJJGdyb3VwZWRNYXAgPSAkZ3JvdXBlZE1hcEVuY29kZWQgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCR0aGlzLT5tYXBwaW5ncyBhcyAkbSl7DQoJCQkkZ3JvdXBlZE1hcFskbVsnZ2VuZXJhdGVkX2xpbmUnXV1bXSA9ICRtOw0KCQl9DQoJCWtzb3J0KCRncm91cGVkTWFwKTsNCg0KCQkkbGFzdEdlbmVyYXRlZExpbmUgPSAkbGFzdE9yaWdpbmFsSW5kZXggPSAkbGFzdE9yaWdpbmFsTGluZSA9ICRsYXN0T3JpZ2luYWxDb2x1bW4gPSAwOw0KDQoJCWZvcmVhY2goJGdyb3VwZWRNYXAgYXMgJGxpbmVOdW1iZXIgPT4gJGxpbmVfbWFwKXsNCgkJCXdoaWxlKCsrJGxhc3RHZW5lcmF0ZWRMaW5lIDwgJGxpbmVOdW1iZXIpew0KCQkJCSRncm91cGVkTWFwRW5jb2RlZFtdID0gJzsnOw0KCQkJfQ0KDQoJCQkkbGluZU1hcEVuY29kZWQgPSBhcnJheSgpOw0KCQkJJGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwOw0KDQoJCQlmb3JlYWNoKCRsaW5lX21hcCBhcyAkbSl7DQoJCQkJJG1hcEVuY29kZWQgPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCRtWydnZW5lcmF0ZWRfY29sdW1uJ10gLSAkbGFzdEdlbmVyYXRlZENvbHVtbik7DQoJCQkJJGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAkbVsnZ2VuZXJhdGVkX2NvbHVtbiddOw0KDQoJCQkJLy8gZmluZCB0aGUgaW5kZXgNCgkJCQlpZiggJG1bJ3NvdXJjZV9maWxlJ10gKXsNCgkJCQkJJGluZGV4ID0gJHRoaXMtPmZpbmRGaWxlSW5kZXgoJG1bJ3NvdXJjZV9maWxlJ10pOw0KCQkJCQlpZiggJGluZGV4ICE9PSBmYWxzZSApew0KCQkJCQkJJG1hcEVuY29kZWQgLj0gJHRoaXMtPmVuY29kZXItPmVuY29kZSgkaW5kZXggLSAkbGFzdE9yaWdpbmFsSW5kZXgpOw0KCQkJCQkJJGxhc3RPcmlnaW5hbEluZGV4ID0gJGluZGV4Ow0KDQoJCQkJCQkvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzDQoJCQkJCQkkbWFwRW5jb2RlZCAuPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCRtWydvcmlnaW5hbF9saW5lJ10gLSAxIC0gJGxhc3RPcmlnaW5hbExpbmUpOw0KCQkJCQkJJGxhc3RPcmlnaW5hbExpbmUgPSAkbVsnb3JpZ2luYWxfbGluZSddIC0gMTsNCg0KCQkJCQkJJG1hcEVuY29kZWQgLj0gJHRoaXMtPmVuY29kZXItPmVuY29kZSgkbVsnb3JpZ2luYWxfY29sdW1uJ10gLSAkbGFzdE9yaWdpbmFsQ29sdW1uKTsNCgkJCQkJCSRsYXN0T3JpZ2luYWxDb2x1bW4gPSAkbVsnb3JpZ2luYWxfY29sdW1uJ107DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkkbGluZU1hcEVuY29kZWRbXSA9ICRtYXBFbmNvZGVkOw0KCQkJfQ0KDQoJCQkkZ3JvdXBlZE1hcEVuY29kZWRbXSA9IGltcGxvZGUoJywnLCAkbGluZU1hcEVuY29kZWQpIC4gJzsnOw0KCQl9DQoNCgkJcmV0dXJuIHJ0cmltKGltcGxvZGUoJGdyb3VwZWRNYXBFbmNvZGVkKSwgJzsnKTsNCgl9DQoNCgkvKioNCgkgKiBGaW5kcyB0aGUgaW5kZXggZm9yIHRoZSBmaWxlbmFtZQ0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUNCgkgKiBAcmV0dXJuIGludGVnZXJ8ZmFsc2UNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZmluZEZpbGVJbmRleCgkZmlsZW5hbWUpew0KCQlyZXR1cm4gJHRoaXMtPnNvdXJjZV9rZXlzWyRmaWxlbmFtZV07DQoJfQ0KDQoJLyoqDQoJICogZml4IHdpbmRvd3MgcGF0aHMNCgkgKiBAcGFyYW0gIHN0cmluZyAkcGF0aA0KCSAqIEByZXR1cm4gc3RyaW5nICAgICAgDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGZpeFdpbmRvd3NQYXRoKCRwYXRoLCAkYWRkRW5kU2xhc2ggPSBmYWxzZSl7DQoJCSRzbGFzaCA9ICgkYWRkRW5kU2xhc2gpID8gJy8nIDogJyc7DQoJCWlmKCAhZW1wdHkoJHBhdGgpICl7DQoJCQkkcGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHBhdGgpOw0KCQkJJHBhdGggPSBydHJpbSgkcGF0aCwnLycpIC4gJHNsYXNoOw0KCQl9DQoNCgkJcmV0dXJuICRwYXRoOw0KCX0NCg0KfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/SourceMap/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBUcmVlCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlewoKCXB1YmxpYyAkY2FjaGVfc3RyaW5nOwoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUygpewoJCSRvdXRwdXQgPSBuZXcgTGVzc19PdXRwdXQoKTsKCQkkdGhpcy0+Z2VuQ1NTKCRvdXRwdXQpOwoJCXJldHVybiAkb3V0cHV0LT50b1N0cmluZygpOwoJfQoKCiAgICAvKioKICAgICAqIEdlbmVyYXRlIENTUyBieSBhZGRpbmcgaXQgdG8gdGhlIG91dHB1dCBvYmplY3QKICAgICAqCiAgICAgKiBAcGFyYW0gTGVzc19PdXRwdXQgJG91dHB1dCBUaGUgb3V0cHV0CiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbkNTUygkb3V0cHV0KXt9CgoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0W10gJHJ1bGVzCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb3V0cHV0UnVsZXNldCggJG91dHB1dCwgJHJ1bGVzICl7CgoJCSRydWxlQ250ID0gY291bnQoJHJ1bGVzKTsKCQlMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwrKzsKCgoJCS8vIENvbXByZXNzZWQKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICl7CgkJCSRvdXRwdXQtPmFkZCgneycpOwoJCQlmb3IoICRpID0gMDsgJGkgPCAkcnVsZUNudDsgJGkrKyApewoJCQkJJHJ1bGVzWyRpXS0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJCX0KCgkJCSRvdXRwdXQtPmFkZCggJ30nICk7CgkJCUxlc3NfRW52aXJvbm1lbnQ6OiR0YWJMZXZlbC0tOwoJCQlyZXR1cm47CgkJfQoKCgkJLy8gTm9uLWNvbXByZXNzZWQKCQkkdGFiU2V0U3RyID0gIlxuIi5zdHJfcmVwZWF0KCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2luZGVudGF0aW9uJ10gLCBMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwtMSApOwoJCSR0YWJSdWxlU3RyID0gJHRhYlNldFN0ci5MZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2luZGVudGF0aW9uJ107CgoJCSRvdXRwdXQtPmFkZCggIiB7IiApOwoJCWZvcigkaSA9IDA7ICRpIDwgJHJ1bGVDbnQ7ICRpKysgKXsKCQkJJG91dHB1dC0+YWRkKCAkdGFiUnVsZVN0ciApOwoJCQkkcnVsZXNbJGldLT5nZW5DU1MoICRvdXRwdXQgKTsKCQl9CgkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsLS07CgkJJG91dHB1dC0+YWRkKCAkdGFiU2V0U3RyLid9JyApOwoKCX0KCglwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCR2aXNpdG9yKXt9CgoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gUmVmZXJlbmNlZEFycmF5KCRydWxlcyl7CgkJZm9yZWFjaCgkcnVsZXMgYXMgJHJ1bGUpewoJCQlpZiggbWV0aG9kX2V4aXN0cygkcnVsZSwgJ21hcmtSZWZlcmVuY2VkJykgKXsKCQkJCSRydWxlLT5tYXJrUmVmZXJlbmNlZCgpOwoJCQl9CgkJfQoJfQoKCgkvKioKCSAqIFJlcXVpcmVzIHBocCA1LjMrCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gX19zZXRfc3RhdGUoJGFyZ3MpewoKCQkkY2xhc3MgPSBnZXRfY2FsbGVkX2NsYXNzKCk7CgkJJG9iaiA9IG5ldyAkY2xhc3MobnVsbCxudWxsLG51bGwsbnVsbCk7CgkJZm9yZWFjaCgkYXJncyBhcyAka2V5ID0+ICR2YWwpewoJCQkkb2JqLT4ka2V5ID0gJHZhbDsKCQl9CgkJcmV0dXJuICRvYmo7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Alpha.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBbHBoYQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9BbHBoYSBleHRlbmRzIExlc3NfVHJlZXsKCXB1YmxpYyAkdmFsdWU7CglwdWJsaWMgJHR5cGUgPSAnQWxwaGEnOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsKXsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsOwoJfQoKCS8vZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJLy8JJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0KCAkdGhpcy0+dmFsdWUgKTsKCS8vfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpewoKCQlpZiggaXNfb2JqZWN0KCR0aGlzLT52YWx1ZSkgKXsKCQkJJHRoaXMtPnZhbHVlID0gJHRoaXMtPnZhbHVlLT5jb21waWxlKCRlbnYpOwoJCX0KCgkJcmV0dXJuICR0aGlzOwoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgoJCSRvdXRwdXQtPmFkZCggImFscGhhKG9wYWNpdHk9IiApOwoKCQlpZiggaXNfc3RyaW5nKCR0aGlzLT52YWx1ZSkgKXsKCQkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dmFsdWUgKTsKCQl9ZWxzZXsKCQkJJHRoaXMtPnZhbHVlLT5nZW5DU1MoICRvdXRwdXQpOwoJCX0KCgkJJG91dHB1dC0+YWRkKCAnKScgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKCQlyZXR1cm4gImFscGhhKG9wYWNpdHk9IiAuIChpc19zdHJpbmcoJHRoaXMtPnZhbHVlKSA/ICR0aGlzLT52YWx1ZSA6ICR0aGlzLT52YWx1ZS0+dG9DU1MoKSkgLiAiKSI7Cgl9CgoKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Anonymous.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBbm9ueW1vdXMKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQW5vbnltb3VzIGV4dGVuZHMgTGVzc19UcmVlewoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkcXVvdGU7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRtYXBMaW5lczsKCXB1YmxpYyAkY3VycmVudEZpbGVJbmZvOwoJcHVibGljICR0eXBlID0gJ0Fub255bW91cyc7CgoJLyoqCgkgKiBAcGFyYW0gaW50ZWdlciAkaW5kZXgKCSAqIEBwYXJhbSBib29sZWFuICRtYXBMaW5lcwoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgJG1hcExpbmVzID0gbnVsbCApewoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPm1hcExpbmVzID0gJG1hcExpbmVzOwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCR0aGlzLT52YWx1ZSwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+bWFwTGluZXMpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCR4KXsKCQlpZiggIWlzX29iamVjdCgkeCkgKXsKCQkJcmV0dXJuIC0xOwoJCX0KCgkJJGxlZnQgPSAkdGhpcy0+dG9DU1MoKTsKCQkkcmlnaHQgPSAkeC0+dG9DU1MoKTsKCgkJaWYoICRsZWZ0ID09PSAkcmlnaHQgKXsKCQkJcmV0dXJuIDA7CgkJfQoKCQlyZXR1cm4gJGxlZnQgPCAkcmlnaHQgPyAtMSA6IDE7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkb3V0cHV0LT5hZGQoICR0aGlzLT52YWx1ZSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4LCAkdGhpcy0+bWFwTGluZXMgKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKCQlyZXR1cm4gJHRoaXMtPnZhbHVlOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Assignment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NpZ25tZW50CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0Fzc2lnbm1lbnQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICRrZXk7CglwdWJsaWMgJHZhbHVlOwoJcHVibGljICR0eXBlID0gJ0Fzc2lnbm1lbnQnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgka2V5LCAkdmFsKSB7CgkJJHRoaXMtPmtleSA9ICRrZXk7CgkJJHRoaXMtPnZhbHVlID0gJHZhbDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnZhbHVlICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudikgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fzc2lnbm1lbnQoICR0aGlzLT5rZXksICR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KSk7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5rZXkgLiAnPScgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0NzcygpewoJCXJldHVybiAkdGhpcy0+a2V5IC4gJz0nIC4gJHRoaXMtPnZhbHVlLT50b0NTUygpOwoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Attribute.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBdHRyaWJ1dGUKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQXR0cmlidXRlIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAka2V5OwoJcHVibGljICRvcDsKCXB1YmxpYyAkdmFsdWU7CglwdWJsaWMgJHR5cGUgPSAnQXR0cmlidXRlJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGtleSwgJG9wLCAkdmFsdWUpewoJCSR0aGlzLT5rZXkgPSAka2V5OwoJCSR0aGlzLT5vcCA9ICRvcDsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgoJCSRrZXlfb2JqID0gaXNfb2JqZWN0KCR0aGlzLT5rZXkpOwoJCSR2YWxfb2JqID0gaXNfb2JqZWN0KCR0aGlzLT52YWx1ZSk7CgoJCWlmKCAhJGtleV9vYmogJiYgISR2YWxfb2JqICl7CgkJCXJldHVybiAkdGhpczsKCQl9CgoJCXJldHVybiBuZXcgTGVzc19UcmVlX0F0dHJpYnV0ZSgKCQkJJGtleV9vYmogPyAkdGhpcy0+a2V5LT5jb21waWxlKCRlbnYpIDogJHRoaXMtPmtleSAsCgkJCSR0aGlzLT5vcCwKCQkJJHZhbF9vYmogPyAkdGhpcy0+dmFsdWUtPmNvbXBpbGUoJGVudikgOiAkdGhpcy0+dmFsdWUpOwoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dG9DU1MoKSApOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0NTUygpewoJCSR2YWx1ZSA9ICR0aGlzLT5rZXk7CgoJCWlmKCAkdGhpcy0+b3AgKXsKCQkJJHZhbHVlIC49ICR0aGlzLT5vcDsKCQkJJHZhbHVlIC49IChpc19vYmplY3QoJHRoaXMtPnZhbHVlKSA/ICR0aGlzLT52YWx1ZS0+dG9DU1MoKSA6ICR0aGlzLT52YWx1ZSk7CgkJfQoKCQlyZXR1cm4gJ1snIC4gJHZhbHVlIC4gJ10nOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Call.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgovKioKICogQ2FsbAogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9DYWxsIGV4dGVuZHMgTGVzc19UcmVlewogICAgcHVibGljICR2YWx1ZTsKCiAgICBwcm90ZWN0ZWQgJG5hbWU7CiAgICBwcm90ZWN0ZWQgJGFyZ3M7CiAgICBwcm90ZWN0ZWQgJGluZGV4OwogICAgcHJvdGVjdGVkICRjdXJyZW50RmlsZUluZm87CiAgICBwdWJsaWMgJHR5cGUgPSAnQ2FsbCc7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lLCAkYXJncywgJGluZGV4LCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApewoJCSR0aGlzLT5uYW1lID0gJG5hbWU7CgkJJHRoaXMtPmFyZ3MgPSAkYXJnczsKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKXsKCQkkdGhpcy0+YXJncyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCAkdGhpcy0+YXJncyApOwoJfQoKICAgIC8vCiAgICAvLyBXaGVuIGV2YWx1YXRpbmcgYSBmdW5jdGlvbiBjYWxsLAogICAgLy8gd2UgZWl0aGVyIGZpbmQgdGhlIGZ1bmN0aW9uIGluIGB0cmVlLmZ1bmN0aW9uc2AgWzFdLAogICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBjYWxsIGl0LCBwYXNzaW5nIHRoZSAgZXZhbHVhdGVkIGFyZ3VtZW50cywKICAgIC8vIG9yIHdlIHNpbXBseSBwcmludCBpdCBvdXQgYXMgaXQgYXBwZWFyZWQgb3JpZ2luYWxseSBbMl0uCiAgICAvLwogICAgLy8gVGhlICpmdW5jdGlvbnMuanMqIGZpbGUgY29udGFpbnMgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucy4KICAgIC8vCiAgICAvLyBUaGUgcmVhc29uIHdoeSB3ZSBldmFsdWF0ZSB0aGUgYXJndW1lbnRzLCBpcyBpbiB0aGUgY2FzZSB3aGVyZQogICAgLy8gd2UgdHJ5IHRvIHBhc3MgYSB2YXJpYWJsZSB0byBhIGZ1bmN0aW9uLCBsaWtlOiBgc2F0dXJhdGUoQGNvbG9yKWAuCiAgICAvLyBUaGUgZnVuY3Rpb24gc2hvdWxkIHJlY2VpdmUgdGhlIHZhbHVlLCBub3QgdGhlIHZhcmlhYmxlLgogICAgLy8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnY9bnVsbCl7CgkJJGFyZ3MgPSBhcnJheSgpOwoJCWZvcmVhY2goJHRoaXMtPmFyZ3MgYXMgJGEpewoJCQkkYXJnc1tdID0gJGEtPmNvbXBpbGUoJGVudik7CgkJfQoKCQkkbmFtZUxDID0gc3RydG9sb3dlcigkdGhpcy0+bmFtZSk7CgkJc3dpdGNoKCRuYW1lTEMpewoJCQljYXNlICclJzoKCQkJJG5hbWVMQyA9ICdfcGVyY2VudCc7CgkJCWJyZWFrOwoKCQkJY2FzZSAnZ2V0LXVuaXQnOgoJCQkkbmFtZUxDID0gJ2dldHVuaXQnOwoJCQlicmVhazsKCgkJCWNhc2UgJ2RhdGEtdXJpJzoKCQkJJG5hbWVMQyA9ICdkYXRhdXJpJzsKCQkJYnJlYWs7CgoJCQljYXNlICdzdmctZ3JhZGllbnQnOgoJCQkkbmFtZUxDID0gJ3N2Z2dyYWRpZW50JzsKCQkJYnJlYWs7CgkJfQoKCQkkcmVzdWx0ID0gbnVsbDsKCQlpZiggJG5hbWVMQyA9PT0gJ2RlZmF1bHQnICl7CgkJCSRyZXN1bHQgPSBMZXNzX1RyZWVfRGVmYXVsdEZ1bmM6OmNvbXBpbGUoKTsKCgkJfWVsc2V7CgoJCQlpZiggbWV0aG9kX2V4aXN0cygnTGVzc19GdW5jdGlvbnMnLCRuYW1lTEMpICl7IC8vIDEuCgkJCQl0cnkgewoKCQkJCQkkZnVuYyA9IG5ldyBMZXNzX0Z1bmN0aW9ucygkZW52LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvKTsKCQkJCQkkcmVzdWx0ID0gY2FsbF91c2VyX2Z1bmNfYXJyYXkoIGFycmF5KCRmdW5jLCRuYW1lTEMpLCRhcmdzKTsKCgkJCQl9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKCQkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ2Vycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24gYCcgLiAkdGhpcy0+bmFtZSAuICdgICcuJGUtPmdldE1lc3NhZ2UoKS4nIGluZGV4OiAnLiAkdGhpcy0+aW5kZXgpOwoJCQkJfQoJCQl9IGVsc2VpZiggaXNzZXQoICRlbnYtPmZ1bmN0aW9uc1skbmFtZUxDXSApICYmIGlzX2NhbGxhYmxlKCAkZW52LT5mdW5jdGlvbnNbJG5hbWVMQ10gKSApIHsKCQkJCXRyeSB7CgkJCQkJJHJlc3VsdCA9IGNhbGxfdXNlcl9mdW5jX2FycmF5KCAkZW52LT5mdW5jdGlvbnNbJG5hbWVMQ10sICRhcmdzICk7CgkJCQl9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKCQkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJ2Vycm9yIGV2YWx1YXRpbmcgZnVuY3Rpb24gYCcgLiAkdGhpcy0+bmFtZSAuICdgICcuJGUtPmdldE1lc3NhZ2UoKS4nIGluZGV4OiAnLiAkdGhpcy0+aW5kZXgpOwoJCQkJfQoJCQl9CgkJfQoKCQlpZiggJHJlc3VsdCAhPT0gbnVsbCApewoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9DYWxsKCAkdGhpcy0+bmFtZSwgJGFyZ3MsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPm5hbWUgLiAnKCcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCSRhcmdzX2xlbiA9IGNvdW50KCR0aGlzLT5hcmdzKTsKCQlmb3IoJGkgPSAwOyAkaSA8ICRhcmdzX2xlbjsgJGkrKyApewoJCQkkdGhpcy0+YXJnc1skaV0tPmdlbkNTUyggJG91dHB1dCApOwoJCQlpZiggJGkgKyAxIDwgJGFyZ3NfbGVuICl7CgkJCQkkb3V0cHV0LT5hZGQoICcsICcgKTsKCQkJfQoJCX0KCgkJJG91dHB1dC0+YWRkKCAnKScgKTsKCX0KCgogICAgLy9wdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKICAgIC8vICAgIHJldHVybiAkdGhpcy0+Y29tcGlsZSgpLT50b0NTUygpOwogICAgLy99Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Color.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDb2xvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9Db2xvciBleHRlbmRzIExlc3NfVHJlZXsKCXB1YmxpYyAkcmdiOwoJcHVibGljICRhbHBoYTsKCXB1YmxpYyAkaXNUcmFuc3BhcmVudEtleXdvcmQ7CglwdWJsaWMgJHR5cGUgPSAnQ29sb3InOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmdiLCAkYSA9IDEsICRpc1RyYW5zcGFyZW50S2V5d29yZCA9IG51bGwgKXsKCgkJaWYoICRpc1RyYW5zcGFyZW50S2V5d29yZCApewoJCQkkdGhpcy0+cmdiID0gJHJnYjsKCQkJJHRoaXMtPmFscGhhID0gJGE7CgkJCSR0aGlzLT5pc1RyYW5zcGFyZW50S2V5d29yZCA9IHRydWU7CgkJCXJldHVybjsKCQl9CgoJCSR0aGlzLT5yZ2IgPSBhcnJheSgpOwoJCWlmKCBpc19hcnJheSgkcmdiKSApewoJCQkkdGhpcy0+cmdiID0gJHJnYjsKCQl9ZWxzZSBpZiggc3RybGVuKCRyZ2IpID09IDYgKXsKCQkJZm9yZWFjaChzdHJfc3BsaXQoJHJnYiwgMikgYXMgJGMpewoJCQkJJHRoaXMtPnJnYltdID0gaGV4ZGVjKCRjKTsKCQkJfQoJCX1lbHNlewoJCQlmb3JlYWNoKHN0cl9zcGxpdCgkcmdiLCAxKSBhcyAkYyl7CgkJCQkkdGhpcy0+cmdiW10gPSBoZXhkZWMoJGMuJGMpOwoJCQl9CgkJfQoJCSR0aGlzLT5hbHBoYSA9IGlzX251bWVyaWMoJGEpID8gJGEgOiAxOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CgkJcmV0dXJuICR0aGlzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBsdW1hKCl7CgkJJHIgPSAkdGhpcy0+cmdiWzBdIC8gMjU1OwoJCSRnID0gJHRoaXMtPnJnYlsxXSAvIDI1NTsKCQkkYiA9ICR0aGlzLT5yZ2JbMl0gLyAyNTU7CgoJCSRyID0gKCRyIDw9IDAuMDM5MjgpID8gJHIgLyAxMi45MiA6IHBvdygoKCRyICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpOwoJCSRnID0gKCRnIDw9IDAuMDM5MjgpID8gJGcgLyAxMi45MiA6IHBvdygoKCRnICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpOwoJCSRiID0gKCRiIDw9IDAuMDM5MjgpID8gJGIgLyAxMi45MiA6IHBvdygoKCRiICsgMC4wNTUpIC8gMS4wNTUpLCAyLjQpOwoKCQlyZXR1cm4gMC4yMTI2ICogJHIgKyAwLjcxNTIgKiAkZyArIDAuMDcyMiAqICRiOwoJfQoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+dG9DU1MoKSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUyggJGRvTm90Q29tcHJlc3MgPSBmYWxzZSApewoJCSRjb21wcmVzcyA9IExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSAmJiAhJGRvTm90Q29tcHJlc3M7CgkJJGFscGhhID0gTGVzc19GdW5jdGlvbnM6OmZyb3VuZCggJHRoaXMtPmFscGhhICk7CgoKCQkvLwoJCS8vIElmIHdlIGhhdmUgc29tZSB0cmFuc3BhcmVuY3ksIHRoZSBvbmx5IHdheSB0byByZXByZXNlbnQgaXQKCQkvLyBpcyB2aWEgYHJnYmFgLiBPdGhlcndpc2UsIHdlIHVzZSB0aGUgaGV4IHJlcHJlc2VudGF0aW9uLAoJCS8vIHdoaWNoIGhhcyBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGJyb3dzZXJzLgoJCS8vIFZhbHVlcyBhcmUgY2FwcGVkIGJldHdlZW4gYDBgIGFuZCBgMjU1YCwgcm91bmRlZCBhbmQgemVyby1wYWRkZWQuCgkJLy8KCQlpZiggJGFscGhhIDwgMSApewoJCQlpZiggKCAkYWxwaGEgPT09IDAgfHwgJGFscGhhID09PSAwLjAgKSAmJiBpc3NldCgkdGhpcy0+aXNUcmFuc3BhcmVudEtleXdvcmQpICYmICR0aGlzLT5pc1RyYW5zcGFyZW50S2V5d29yZCApewoJCQkJcmV0dXJuICd0cmFuc3BhcmVudCc7CgkJCX0KCgkJCSR2YWx1ZXMgPSBhcnJheSgpOwoJCQlmb3JlYWNoKCR0aGlzLT5yZ2IgYXMgJGMpewoJCQkJJHZhbHVlc1tdID0gTGVzc19GdW5jdGlvbnM6OmNsYW1wKCByb3VuZCgkYyksIDI1NSk7CgkJCX0KCQkJJHZhbHVlc1tdID0gJGFscGhhOwoKCQkJJGdsdWUgPSAoJGNvbXByZXNzID8gJywnIDogJywgJyk7CgkJCXJldHVybiAicmdiYSgiIC4gaW1wbG9kZSgkZ2x1ZSwgJHZhbHVlcykgLiAiKSI7CgkJfWVsc2V7CgoJCQkkY29sb3IgPSAkdGhpcy0+dG9SR0IoKTsKCgkJCWlmKCAkY29tcHJlc3MgKXsKCgkJCQkvLyBDb252ZXJ0IGNvbG9yIHRvIHNob3J0IGZvcm1hdAoJCQkJaWYoICRjb2xvclsxXSA9PT0gJGNvbG9yWzJdICYmICRjb2xvclszXSA9PT0gJGNvbG9yWzRdICYmICRjb2xvcls1XSA9PT0gJGNvbG9yWzZdKSB7CgkJCQkJJGNvbG9yID0gJyMnLiRjb2xvclsxXSAuICRjb2xvclszXSAuICRjb2xvcls1XTsKCQkJCX0KCQkJfQoKCQkJcmV0dXJuICRjb2xvcjsKCQl9Cgl9CgoJLy8KCS8vIE9wZXJhdGlvbnMgaGF2ZSB0byBiZSBkb25lIHBlci1jaGFubmVsLCBpZiBub3QsCgkvLyBjaGFubmVscyB3aWxsIHNwaWxsIG9udG8gZWFjaCBvdGhlci4gT25jZSB3ZSBoYXZlCgkvLyBvdXIgcmVzdWx0LCBpbiB0aGUgZm9ybSBvZiBhbiBpbnRlZ2VyIHRyaXBsZXQsCgkvLyB3ZSBjcmVhdGUgYSBuZXcgQ29sb3Igbm9kZSB0byBob2xkIHRoZSByZXN1bHQuCgkvLwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkb3AKCSAqLwoJcHVibGljIGZ1bmN0aW9uIG9wZXJhdGUoICRvcCwgJG90aGVyKSB7CgkJJHJnYiA9IGFycmF5KCk7CgkJJGFscGhhID0gJHRoaXMtPmFscGhhICogKDEgLSAkb3RoZXItPmFscGhhKSArICRvdGhlci0+YWxwaGE7CgkJZm9yICgkYyA9IDA7ICRjIDwgMzsgJGMrKykgewoJCQkkcmdiWyRjXSA9IExlc3NfRnVuY3Rpb25zOjpvcGVyYXRlKCAkb3AsICR0aGlzLT5yZ2JbJGNdLCAkb3RoZXItPnJnYlskY10pOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvcigkcmdiLCAkYWxwaGEpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b1JHQigpewoJCXJldHVybiAkdGhpcy0+dG9IZXgoJHRoaXMtPnJnYik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHRvSFNMKCl7CgkJJHIgPSAkdGhpcy0+cmdiWzBdIC8gMjU1OwoJCSRnID0gJHRoaXMtPnJnYlsxXSAvIDI1NTsKCQkkYiA9ICR0aGlzLT5yZ2JbMl0gLyAyNTU7CgkJJGEgPSAkdGhpcy0+YWxwaGE7CgoJCSRtYXggPSBtYXgoJHIsICRnLCAkYik7CgkJJG1pbiA9IG1pbigkciwgJGcsICRiKTsKCQkkbCA9ICgkbWF4ICsgJG1pbikgLyAyOwoJCSRkID0gJG1heCAtICRtaW47CgoJCSRoID0gJHMgPSAwOwoJCWlmKCAkbWF4ICE9PSAkbWluICl7CgkJCSRzID0gJGwgPiAwLjUgPyAkZCAvICgyIC0gJG1heCAtICRtaW4pIDogJGQgLyAoJG1heCArICRtaW4pOwoKCQkJc3dpdGNoICgkbWF4KSB7CgkJCQljYXNlICRyOiAkaCA9ICgkZyAtICRiKSAvICRkICsgKCRnIDwgJGIgPyA2IDogMCk7IGJyZWFrOwoJCQkJY2FzZSAkZzogJGggPSAoJGIgLSAkcikgLyAkZCArIDI7CQkJCSBicmVhazsKCQkJCWNhc2UgJGI6ICRoID0gKCRyIC0gJGcpIC8gJGQgKyA0OwkJCQkgYnJlYWs7CgkJCX0KCQkJJGggLz0gNjsKCQl9CgkJcmV0dXJuIGFycmF5KCdoJyA9PiAkaCAqIDM2MCwgJ3MnID0+ICRzLCAnbCcgPT4gJGwsICdhJyA9PiAkYSApOwoJfQoKCS8vQWRhcHRlZCBmcm9tIGh0dHA6Ly9tamlqYWNrc29uLmNvbS8yMDA4LzAyL3JnYi10by1oc2wtYW5kLXJnYi10by1oc3YtY29sb3ItbW9kZWwtY29udmVyc2lvbi1hbGdvcml0aG1zLWluLWphdmFzY3JpcHQKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0hTVigpIHsKCQkkciA9ICR0aGlzLT5yZ2JbMF0gLyAyNTU7CgkJJGcgPSAkdGhpcy0+cmdiWzFdIC8gMjU1OwoJCSRiID0gJHRoaXMtPnJnYlsyXSAvIDI1NTsKCQkkYSA9ICR0aGlzLT5hbHBoYTsKCgkJJG1heCA9IG1heCgkciwgJGcsICRiKTsKCQkkbWluID0gbWluKCRyLCAkZywgJGIpOwoKCQkkdiA9ICRtYXg7CgoJCSRkID0gJG1heCAtICRtaW47CgkJaWYgKCRtYXggPT09IDApIHsKCQkJJHMgPSAwOwoJCX0gZWxzZSB7CgkJCSRzID0gJGQgLyAkbWF4OwoJCX0KCgkJJGggPSAwOwoJCWlmKCAkbWF4ICE9PSAkbWluICl7CgkJCXN3aXRjaCgkbWF4KXsKCQkJCWNhc2UgJHI6ICRoID0gKCRnIC0gJGIpIC8gJGQgKyAoJGcgPCAkYiA/IDYgOiAwKTsgYnJlYWs7CgkJCQljYXNlICRnOiAkaCA9ICgkYiAtICRyKSAvICRkICsgMjsgYnJlYWs7CgkJCQljYXNlICRiOiAkaCA9ICgkciAtICRnKSAvICRkICsgNDsgYnJlYWs7CgkJCX0KCQkJJGggLz0gNjsKCQl9CgkJcmV0dXJuIGFycmF5KCdoJz0+ICRoICogMzYwLCAncyc9PiAkcywgJ3YnPT4gJHYsICdhJyA9PiAkYSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0FSR0IoKXsKCQkkYXJnYiA9IGFycmF5X21lcmdlKCAoYXJyYXkpIExlc3NfUGFyc2VyOjpyb3VuZCgkdGhpcy0+YWxwaGEgKiAyNTUpLCAkdGhpcy0+cmdiKTsKCQlyZXR1cm4gJHRoaXMtPnRvSGV4KCAkYXJnYiApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCR4KXsKCgkJaWYoICFwcm9wZXJ0eV9leGlzdHMoICR4LCAncmdiJyApICl7CgkJCXJldHVybiAtMTsKCQl9CgoKCQlyZXR1cm4gKCR4LT5yZ2JbMF0gPT09ICR0aGlzLT5yZ2JbMF0gJiYKCQkJJHgtPnJnYlsxXSA9PT0gJHRoaXMtPnJnYlsxXSAmJgoJCQkkeC0+cmdiWzJdID09PSAkdGhpcy0+cmdiWzJdICYmCgkJCSR4LT5hbHBoYSA9PT0gJHRoaXMtPmFscGhhKSA/IDAgOiAtMTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9IZXgoICR2ICl7CgoJCSRyZXQgPSAnIyc7CgkJZm9yZWFjaCgkdiBhcyAkYyl7CgkJCSRjID0gTGVzc19GdW5jdGlvbnM6OmNsYW1wKCBMZXNzX1BhcnNlcjo6cm91bmQoJGMpLCAyNTUpOwoJCQlpZiggJGMgPCAxNiApewoJCQkJJHJldCAuPSAnMCc7CgkJCX0KCQkJJHJldCAuPSBkZWNoZXgoJGMpOwoJCX0KCgkJcmV0dXJuICRyZXQ7Cgl9CgoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAka2V5d29yZAoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21LZXl3b3JkKCAka2V5d29yZCApewoJCSRrZXl3b3JkID0gc3RydG9sb3dlcigka2V5d29yZCk7CgoJCWlmKCBMZXNzX0NvbG9yczo6aGFzT3duUHJvcGVydHkoJGtleXdvcmQpICl7CgkJCS8vIGRldGVjdCBuYW1lZCBjb2xvcgoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9Db2xvcihzdWJzdHIoTGVzc19Db2xvcnM6OmNvbG9yKCRrZXl3b3JkKSwgMSkpOwoJCX0KCgkJaWYoICRrZXl3b3JkID09PSAndHJhbnNwYXJlbnQnICl7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0NvbG9yKCBhcnJheSgwLCAwLCAwKSwgMCwgdHJ1ZSk7CgkJfQoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Comment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDb21tZW50CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0NvbW1lbnQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkc2lsZW50OwoJcHVibGljICRpc1JlZmVyZW5jZWQ7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCXB1YmxpYyAkdHlwZSA9ICdDb21tZW50JzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkc2lsZW50LCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApewoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCQkkdGhpcy0+c2lsZW50ID0gISEgJHNpbGVudDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoJCS8vaWYoICR0aGlzLT5kZWJ1Z0luZm8gKXsKCQkJLy8kb3V0cHV0LT5hZGQoIHRyZWUuZGVidWdJbmZvKCRlbnYsICR0aGlzKSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4KTsKCQkvL30KCQkkb3V0cHV0LT5hZGQoIHRyaW0oJHRoaXMtPnZhbHVlKSApOy8vVE9ETyBzaG91bGRuJ3QgbmVlZCB0byB0cmltLCB3ZSBzaG91bGRuJ3QgZ3JhYiB0aGUgXG4KCX0KCglwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKCQlyZXR1cm4gTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddID8gJycgOiAkdGhpcy0+dmFsdWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzU2lsZW50KCl7CgkJJGlzUmVmZXJlbmNlID0gKCR0aGlzLT5jdXJyZW50RmlsZUluZm8gJiYgaXNzZXQoJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10pICYmICghaXNzZXQoJHRoaXMtPmlzUmVmZXJlbmNlZCkgfHwgISR0aGlzLT5pc1JlZmVyZW5jZWQpICk7CgkJJGlzQ29tcHJlc3NlZCA9IExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSAmJiAhcHJlZ19tYXRjaCgnL15cL1wqIS8nLCAkdGhpcy0+dmFsdWUpOwoJCXJldHVybiAkdGhpcy0+c2lsZW50IHx8ICRpc1JlZmVyZW5jZSB8fCAkaXNDb21wcmVzc2VkOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CgkJcmV0dXJuICR0aGlzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBtYXJrUmVmZXJlbmNlZCgpewoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSB0cnVlOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Condition.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDb25kaXRpb24KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfQ29uZGl0aW9uIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkb3A7CglwdWJsaWMgJGx2YWx1ZTsKCXB1YmxpYyAkcnZhbHVlOwoJcHVibGljICRpbmRleDsKCXB1YmxpYyAkbmVnYXRlOwoJcHVibGljICR0eXBlID0gJ0NvbmRpdGlvbic7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvcCwgJGwsICRyLCAkaSA9IDAsICRuZWdhdGUgPSBmYWxzZSkgewoJCSR0aGlzLT5vcCA9IHRyaW0oJG9wKTsKCQkkdGhpcy0+bHZhbHVlID0gJGw7CgkJJHRoaXMtPnJ2YWx1ZSA9ICRyOwoJCSR0aGlzLT5pbmRleCA9ICRpOwoJCSR0aGlzLT5uZWdhdGUgPSAkbmVnYXRlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoJHZpc2l0b3IpewoJCSR0aGlzLT5sdmFsdWUgPSAkdmlzaXRvci0+dmlzaXRPYmooICR0aGlzLT5sdmFsdWUgKTsKCQkkdGhpcy0+cnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+cnZhbHVlICk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudikgewoJCSRhID0gJHRoaXMtPmx2YWx1ZS0+Y29tcGlsZSgkZW52KTsKCQkkYiA9ICR0aGlzLT5ydmFsdWUtPmNvbXBpbGUoJGVudik7CgoJCXN3aXRjaCggJHRoaXMtPm9wICl7CgkJCWNhc2UgJ2FuZCc6CgkJCQkkcmVzdWx0ID0gJGEgJiYgJGI7CgkJCWJyZWFrOwoKCQkJY2FzZSAnb3InOgoJCQkJJHJlc3VsdCA9ICRhIHx8ICRiOwoJCQlicmVhazsKCgkJCWRlZmF1bHQ6CgkJCQlpZiggTGVzc19QYXJzZXI6OmlzX21ldGhvZCgkYSwgJ2NvbXBhcmUnKSApewoJCQkJCSRyZXN1bHQgPSAkYS0+Y29tcGFyZSgkYik7CgkJCQl9ZWxzZWlmKCBMZXNzX1BhcnNlcjo6aXNfbWV0aG9kKCRiLCAnY29tcGFyZScpICl7CgkJCQkJJHJlc3VsdCA9ICRiLT5jb21wYXJlKCRhKTsKCQkJCX1lbHNlewoJCQkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcignVW5hYmxlIHRvIHBlcmZvcm0gY29tcGFyaXNvbicsIG51bGwsICR0aGlzLT5pbmRleCk7CgkJCQl9CgoJCQkJc3dpdGNoICgkcmVzdWx0KSB7CgkJCQkJY2FzZSAtMToKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPm9wID09PSAnPCcgfHwgJHRoaXMtPm9wID09PSAnPTwnIHx8ICR0aGlzLT5vcCA9PT0gJzw9JzsKCQkJCQlicmVhazsKCgkJCQkJY2FzZSAgMDoKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPm9wID09PSAnPScgfHwgJHRoaXMtPm9wID09PSAnPj0nIHx8ICR0aGlzLT5vcCA9PT0gJz08JyB8fCAkdGhpcy0+b3AgPT09ICc8PSc7CgkJCQkJYnJlYWs7CgoJCQkJCWNhc2UgIDE6CgkJCQkJJHJlc3VsdCA9ICR0aGlzLT5vcCA9PT0gJz4nIHx8ICR0aGlzLT5vcCA9PT0gJz49JzsKCQkJCQlicmVhazsKCQkJCX0KCQkJYnJlYWs7CgkJfQoKCQlyZXR1cm4gJHRoaXMtPm5lZ2F0ZSA/ICEkcmVzdWx0IDogJHJlc3VsdDsKICAgIH0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/DefaultFunc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEZWZhdWx0RnVuYwogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9EZWZhdWx0RnVuY3sKCglzdGF0aWMgJGVycm9yXzsKCXN0YXRpYyAkdmFsdWVfOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29tcGlsZSgpewoJCWlmKCBzZWxmOjokZXJyb3JfICl7CgkJCXRocm93IG5ldyBFeGNlcHRpb24oc2VsZjo6JGVycm9yXyk7CgkJfQoJCWlmKCBzZWxmOjokdmFsdWVfICE9PSBudWxsICl7CgkJCXJldHVybiBzZWxmOjokdmFsdWVfID8gbmV3IExlc3NfVHJlZV9LZXl3b3JkKCd0cnVlJykgOiBuZXcgTGVzc19UcmVlX0tleXdvcmQoJ2ZhbHNlJyk7CgkJfQoJfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdmFsdWUoICR2ICl7CgkJc2VsZjo6JHZhbHVlXyA9ICR2OwoJfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXJyb3IoICRlICl7CgkJc2VsZjo6JGVycm9yXyA9ICRlOwoJfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzZXQoKXsKCQlzZWxmOjokdmFsdWVfID0gc2VsZjo6JGVycm9yXyA9IG51bGw7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/DetachedRuleset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEZXRhY2hlZFJ1bGVzZXQKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0IGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkcnVsZXNldDsKCXB1YmxpYyAkZnJhbWVzOwoJcHVibGljICR0eXBlID0gJ0RldGFjaGVkUnVsZXNldCc7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkcnVsZXNldCwgJGZyYW1lcyA9IG51bGwgKXsKCQkkdGhpcy0+cnVsZXNldCA9ICRydWxlc2V0OwoJCSR0aGlzLT5mcmFtZXMgPSAkZnJhbWVzOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoJHZpc2l0b3IpIHsKCQkkdGhpcy0+cnVsZXNldCA9ICR2aXNpdG9yLT52aXNpdE9iaigkdGhpcy0+cnVsZXNldCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgkJaWYoICR0aGlzLT5mcmFtZXMgKXsKCQkJJGZyYW1lcyA9ICR0aGlzLT5mcmFtZXM7CgkJfWVsc2V7CgkJCSRmcmFtZXMgPSAkZW52LT5mcmFtZXM7CgkJfQoJCXJldHVybiBuZXcgTGVzc19UcmVlX0RldGFjaGVkUnVsZXNldCgkdGhpcy0+cnVsZXNldCwgJGZyYW1lcyk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNhbGxFdmFsKCRlbnYpIHsKCQlpZiggJHRoaXMtPmZyYW1lcyApewoJCQlyZXR1cm4gJHRoaXMtPnJ1bGVzZXQtPmNvbXBpbGUoICRlbnYtPmNvcHlFdmFsRW52KCBhcnJheV9tZXJnZSgkdGhpcy0+ZnJhbWVzLCRlbnYtPmZyYW1lcykgKSApOwoJCX0KCQlyZXR1cm4gJHRoaXMtPnJ1bGVzZXQtPmNvbXBpbGUoICRlbnYgKTsKCX0KfQoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Dimension.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEaW1lbnNpb24KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGltZW5zaW9uIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkdmFsdWU7CglwdWJsaWMgJHVuaXQ7CglwdWJsaWMgJHR5cGUgPSAnRGltZW5zaW9uJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkdW5pdCA9IG51bGwpewogICAgICAgICR0aGlzLT52YWx1ZSA9IGZsb2F0dmFsKCR2YWx1ZSk7CgoJCWlmKCAkdW5pdCAmJiAoJHVuaXQgaW5zdGFuY2VvZiBMZXNzX1RyZWVfVW5pdCkgKXsKCQkJJHRoaXMtPnVuaXQgPSAkdW5pdDsKCQl9ZWxzZWlmKCAkdW5pdCApewoJCQkkdGhpcy0+dW5pdCA9IG5ldyBMZXNzX1RyZWVfVW5pdCggYXJyYXkoJHVuaXQpICk7CgkJfWVsc2V7CgkJCSR0aGlzLT51bml0ID0gbmV3IExlc3NfVHJlZV9Vbml0KCApOwoJCX0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCSR0aGlzLT51bml0ID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+dW5pdCApOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0NvbG9yKCkgewogICAgICAgIHJldHVybiBuZXcgTGVzc19UcmVlX0NvbG9yKGFycmF5KCR0aGlzLT52YWx1ZSwgJHRoaXMtPnZhbHVlLCAkdGhpcy0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydzdHJpY3RVbml0cyddICYmICEkdGhpcy0+dW5pdC0+aXNTaW5ndWxhcigpICl7CgkJCXRocm93IG5ldyBMZXNzX0V4Y2VwdGlvbl9Db21waWxlcigiTXVsdGlwbGUgdW5pdHMgaW4gZGltZW5zaW9uLiBDb3JyZWN0IHRoZSB1bml0cyBvciB1c2UgdGhlIHVuaXQgZnVuY3Rpb24uIEJhZCB1bml0OiAiLiR0aGlzLT51bml0LT50b1N0cmluZygpKTsKCQl9CgoJCSR2YWx1ZSA9IExlc3NfRnVuY3Rpb25zOjpmcm91bmQoICR0aGlzLT52YWx1ZSApOwoJCSRzdHJWYWx1ZSA9IChzdHJpbmcpJHZhbHVlOwoKCQlpZiggJHZhbHVlICE9PSAwICYmICR2YWx1ZSA8IDAuMDAwMDAxICYmICR2YWx1ZSA+IC0wLjAwMDAwMSApewoJCQkvLyB3b3VsZCBiZSBvdXRwdXQgMWUtNiBldGMuCgkJCSRzdHJWYWx1ZSA9IG51bWJlcl9mb3JtYXQoJHN0clZhbHVlLDEwKTsKCQkJJHN0clZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXC4/MCskLycsJycsICRzdHJWYWx1ZSk7CgkJfQoKCQlpZiggTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICl7CgkJCS8vIFplcm8gdmFsdWVzIGRvZXNuJ3QgbmVlZCBhIHVuaXQKCQkJaWYoICR2YWx1ZSA9PT0gMCAmJiAkdGhpcy0+dW5pdC0+aXNMZW5ndGgoKSApewoJCQkJJG91dHB1dC0+YWRkKCAkc3RyVmFsdWUgKTsKCQkJCXJldHVybiAkc3RyVmFsdWU7CgkJCX0KCgkJCS8vIEZsb2F0IHZhbHVlcyBkb2Vzbid0IG5lZWQgYSBsZWFkaW5nIHplcm8KCQkJaWYoICR2YWx1ZSA+IDAgJiYgJHZhbHVlIDwgMSAmJiAkc3RyVmFsdWVbMF0gPT09ICcwJyApewoJCQkJJHN0clZhbHVlID0gc3Vic3RyKCRzdHJWYWx1ZSwxKTsKCQkJfQoJCX0KCgkJJG91dHB1dC0+YWRkKCAkc3RyVmFsdWUgKTsKCQkkdGhpcy0+dW5pdC0+Z2VuQ1NTKCAkb3V0cHV0ICk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKXsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQ1NTKCk7CiAgICB9CgogICAgLy8gSW4gYW4gb3BlcmF0aW9uIGJldHdlZW4gdHdvIERpbWVuc2lvbnMsCiAgICAvLyB3ZSBkZWZhdWx0IHRvIHRoZSBmaXJzdCBEaW1lbnNpb24ncyB1bml0LAogICAgLy8gc28gYDFweCArIDJlbWAgd2lsbCB5aWVsZCBgM3B4YC4KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9wCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvcGVyYXRlKCAkb3AsICRvdGhlcil7CgoJCSR2YWx1ZSA9IExlc3NfRnVuY3Rpb25zOjpvcGVyYXRlKCAkb3AsICR0aGlzLT52YWx1ZSwgJG90aGVyLT52YWx1ZSk7CgkJJHVuaXQgPSBjbG9uZSAkdGhpcy0+dW5pdDsKCgkJaWYoICRvcCA9PT0gJysnIHx8ICRvcCA9PT0gJy0nICl7CgoJCQlpZiggISR1bml0LT5udW1lcmF0b3IgJiYgISR1bml0LT5kZW5vbWluYXRvciApewoJCQkJJHVuaXQtPm51bWVyYXRvciA9ICRvdGhlci0+dW5pdC0+bnVtZXJhdG9yOwoJCQkJJHVuaXQtPmRlbm9taW5hdG9yID0gJG90aGVyLT51bml0LT5kZW5vbWluYXRvcjsKCQkJfWVsc2VpZiggISRvdGhlci0+dW5pdC0+bnVtZXJhdG9yICYmICEkb3RoZXItPnVuaXQtPmRlbm9taW5hdG9yICl7CgkJCQkvLyBkbyBub3RoaW5nCgkJCX1lbHNlewoJCQkJJG90aGVyID0gJG90aGVyLT5jb252ZXJ0VG8oICR0aGlzLT51bml0LT51c2VkVW5pdHMoKSk7CgoJCQkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0VW5pdHMnXSAmJiAkb3RoZXItPnVuaXQtPnRvU3RyaW5nKCkgIT09ICR1bml0LT50b0NTUygpICl7CgkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJJbmNvbXBhdGlibGUgdW5pdHMuIENoYW5nZSB0aGUgdW5pdHMgb3IgdXNlIHRoZSB1bml0IGZ1bmN0aW9uLiBCYWQgdW5pdHM6ICciIC4gJHVuaXQtPnRvU3RyaW5nKCkgLiAiJyBhbmQgIiAuICRvdGhlci0+dW5pdC0+dG9TdHJpbmcoKSAuICInLiIpOwoJCQkJfQoKCQkJCSR2YWx1ZSA9IExlc3NfRnVuY3Rpb25zOjpvcGVyYXRlKCAkb3AsICR0aGlzLT52YWx1ZSwgJG90aGVyLT52YWx1ZSk7CgkJCX0KCQl9ZWxzZWlmKCAkb3AgPT09ICcqJyApewoJCQkkdW5pdC0+bnVtZXJhdG9yID0gYXJyYXlfbWVyZ2UoJHVuaXQtPm51bWVyYXRvciwgJG90aGVyLT51bml0LT5udW1lcmF0b3IpOwoJCQkkdW5pdC0+ZGVub21pbmF0b3IgPSBhcnJheV9tZXJnZSgkdW5pdC0+ZGVub21pbmF0b3IsICRvdGhlci0+dW5pdC0+ZGVub21pbmF0b3IpOwoJCQlzb3J0KCR1bml0LT5udW1lcmF0b3IpOwoJCQlzb3J0KCR1bml0LT5kZW5vbWluYXRvcik7CgkJCSR1bml0LT5jYW5jZWwoKTsKCQl9ZWxzZWlmKCAkb3AgPT09ICcvJyApewoJCQkkdW5pdC0+bnVtZXJhdG9yID0gYXJyYXlfbWVyZ2UoJHVuaXQtPm51bWVyYXRvciwgJG90aGVyLT51bml0LT5kZW5vbWluYXRvcik7CgkJCSR1bml0LT5kZW5vbWluYXRvciA9IGFycmF5X21lcmdlKCR1bml0LT5kZW5vbWluYXRvciwgJG90aGVyLT51bml0LT5udW1lcmF0b3IpOwoJCQlzb3J0KCR1bml0LT5udW1lcmF0b3IpOwoJCQlzb3J0KCR1bml0LT5kZW5vbWluYXRvcik7CgkJCSR1bml0LT5jYW5jZWwoKTsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkdmFsdWUsICR1bml0KTsKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGFyZSgkb3RoZXIpIHsKCQlpZiAoJG90aGVyIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbikgewoKCQkJaWYoICR0aGlzLT51bml0LT5pc0VtcHR5KCkgfHwgJG90aGVyLT51bml0LT5pc0VtcHR5KCkgKXsKCQkJCSRhID0gJHRoaXM7CgkJCQkkYiA9ICRvdGhlcjsKCQkJfSBlbHNlIHsKCQkJCSRhID0gJHRoaXMtPnVuaWZ5KCk7CgkJCQkkYiA9ICRvdGhlci0+dW5pZnkoKTsKCQkJCWlmKCAkYS0+dW5pdC0+Y29tcGFyZSgkYi0+dW5pdCkgIT09IDAgKXsKCQkJCQlyZXR1cm4gLTE7CgkJCQl9CgkJCX0KCQkJJGFWYWx1ZSA9ICRhLT52YWx1ZTsKCQkJJGJWYWx1ZSA9ICRiLT52YWx1ZTsKCgkJCWlmICgkYlZhbHVlID4gJGFWYWx1ZSkgewoJCQkJcmV0dXJuIC0xOwoJCQl9IGVsc2VpZiAoJGJWYWx1ZSA8ICRhVmFsdWUpIHsKCQkJCXJldHVybiAxOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIDA7CgkJCX0KCQl9IGVsc2UgewoJCQlyZXR1cm4gLTE7CgkJfQoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB1bmlmeSgpIHsKCQlyZXR1cm4gJHRoaXMtPmNvbnZlcnRUbyhhcnJheSgnbGVuZ3RoJz0+ICdweCcsICdkdXJhdGlvbic9PiAncycsICdhbmdsZScgPT4gJ3JhZCcgKSk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbnZlcnRUbygkY29udmVyc2lvbnMpIHsKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJJHVuaXQgPSBjbG9uZSAkdGhpcy0+dW5pdDsKCgkJaWYoIGlzX3N0cmluZygkY29udmVyc2lvbnMpICl7CgkJCSRkZXJpdmVkQ29udmVyc2lvbnMgPSBhcnJheSgpOwoJCQlmb3JlYWNoKCBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zOjokZ3JvdXBzIGFzICRpICl7CgkJCQlpZiggaXNzZXQoTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JHskaX1bJGNvbnZlcnNpb25zXSkgKXsKCQkJCQkkZGVyaXZlZENvbnZlcnNpb25zID0gYXJyYXkoICRpID0+ICRjb252ZXJzaW9ucyk7CgkJCQl9CgkJCX0KCQkJJGNvbnZlcnNpb25zID0gJGRlcml2ZWRDb252ZXJzaW9uczsKCQl9CgoKCQlmb3JlYWNoKCRjb252ZXJzaW9ucyBhcyAkZ3JvdXBOYW1lID0+ICR0YXJnZXRVbml0KXsKCQkJJGdyb3VwID0gTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JHskZ3JvdXBOYW1lfTsKCgkJCS8vbnVtZXJhdG9yCgkJCWZvcmVhY2goJHVuaXQtPm51bWVyYXRvciBhcyAkaSA9PiAkYXRvbWljVW5pdCl7CgkJCQkkYXRvbWljVW5pdCA9ICR1bml0LT5udW1lcmF0b3JbJGldOwoJCQkJaWYoICFpc3NldCgkZ3JvdXBbJGF0b21pY1VuaXRdKSApewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCSR2YWx1ZSA9ICR2YWx1ZSAqICgkZ3JvdXBbJGF0b21pY1VuaXRdIC8gJGdyb3VwWyR0YXJnZXRVbml0XSk7CgoJCQkJJHVuaXQtPm51bWVyYXRvclskaV0gPSAkdGFyZ2V0VW5pdDsKCQkJfQoKCQkJLy9kZW5vbWluYXRvcgoJCQlmb3JlYWNoKCR1bml0LT5kZW5vbWluYXRvciBhcyAkaSA9PiAkYXRvbWljVW5pdCl7CgkJCQkkYXRvbWljVW5pdCA9ICR1bml0LT5kZW5vbWluYXRvclskaV07CgkJCQlpZiggIWlzc2V0KCRncm91cFskYXRvbWljVW5pdF0pICl7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJJHZhbHVlID0gJHZhbHVlIC8gKCRncm91cFskYXRvbWljVW5pdF0gLyAkZ3JvdXBbJHRhcmdldFVuaXRdKTsKCgkJCQkkdW5pdC0+ZGVub21pbmF0b3JbJGldID0gJHRhcmdldFVuaXQ7CgkJCX0KCQl9CgoJCSR1bml0LT5jYW5jZWwoKTsKCgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRGltZW5zaW9uKCAkdmFsdWUsICR1bml0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Directive.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEaXJlY3RpdmUKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRGlyZWN0aXZlIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkbmFtZTsKCXB1YmxpYyAkdmFsdWU7CglwdWJsaWMgJHJ1bGVzOwoJcHVibGljICRpbmRleDsKCXB1YmxpYyAkaXNSZWZlcmVuY2VkOwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJGRlYnVnSW5mbzsKCXB1YmxpYyAkdHlwZSA9ICdEaXJlY3RpdmUnOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwgJHZhbHVlID0gbnVsbCwgJHJ1bGVzLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgJGRlYnVnSW5mbyA9IG51bGwgKXsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCQlpZiggJHJ1bGVzICl7CgkJCSR0aGlzLT5ydWxlcyA9ICRydWxlczsKCQkJJHRoaXMtPnJ1bGVzLT5hbGxvd0ltcG9ydHMgPSB0cnVlOwoJCX0KCgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJCSR0aGlzLT5kZWJ1Z0luZm8gPSAkZGVidWdJbmZvOwoJfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCWlmKCAkdGhpcy0+cnVsZXMgKXsKCQkJJHRoaXMtPnJ1bGVzID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+cnVsZXMgKTsKCQl9CgkJaWYoICR0aGlzLT52YWx1ZSApewoJCQkkdGhpcy0+dmFsdWUgPSAkdmlzaXRvci0+dmlzaXRPYmooICR0aGlzLT52YWx1ZSApOwoJCX0KCX0KCgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJJHJ1bGVzID0gJHRoaXMtPnJ1bGVzOwoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPm5hbWUsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCWlmKCAkdGhpcy0+dmFsdWUgKXsKCQkJJG91dHB1dC0+YWRkKCcgJyk7CgkJCSR0aGlzLT52YWx1ZS0+Z2VuQ1NTKCRvdXRwdXQpOwoJCX0KCQlpZiggJHRoaXMtPnJ1bGVzICl7CgkJCUxlc3NfVHJlZTo6b3V0cHV0UnVsZXNldCggJG91dHB1dCwgYXJyYXkoJHRoaXMtPnJ1bGVzKSk7CgkJfSBlbHNlIHsKCQkJJG91dHB1dC0+YWRkKCc7Jyk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpewoKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJJHJ1bGVzID0gJHRoaXMtPnJ1bGVzOwoJCWlmKCAkdmFsdWUgKXsKCQkJJHZhbHVlID0gJHZhbHVlLT5jb21waWxlKCRlbnYpOwoJCX0KCgkJaWYoICRydWxlcyApewoJCQkkcnVsZXMgPSAkcnVsZXMtPmNvbXBpbGUoJGVudik7CgkJCSRydWxlcy0+cm9vdCA9IHRydWU7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9EaXJlY3RpdmUoICR0aGlzLT5uYW1lLCAkdmFsdWUsICRydWxlcywgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+ZGVidWdJbmZvICk7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiB2YXJpYWJsZSgkbmFtZSl7CgkJaWYoICR0aGlzLT5ydWxlcyApewoJCQlyZXR1cm4gJHRoaXMtPnJ1bGVzLT52YXJpYWJsZSgkbmFtZSk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmaW5kKCRzZWxlY3Rvcil7CgkJaWYoICR0aGlzLT5ydWxlcyApewoJCQlyZXR1cm4gJHRoaXMtPnJ1bGVzLT5maW5kKCRzZWxlY3RvciwgJHRoaXMpOwoJCX0KCX0KCgkvL3J1bGVzZXRzOiBmdW5jdGlvbiAoKSB7IGlmICh0aGlzLnJ1bGVzKSByZXR1cm4gdHJlZS5SdWxlc2V0LnByb3RvdHlwZS5ydWxlc2V0cy5hcHBseSh0aGlzLnJ1bGVzKTsgfSwKCglwdWJsaWMgZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKXsKCQkkdGhpcy0+aXNSZWZlcmVuY2VkID0gdHJ1ZTsKCQlpZiggJHRoaXMtPnJ1bGVzICl7CgkJCUxlc3NfVHJlZTo6UmVmZXJlbmNlZEFycmF5KCR0aGlzLT5ydWxlcy0+cnVsZXMpOwoJCX0KCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Element.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFbGVtZW50CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0VsZW1lbnQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICRjb21iaW5hdG9yID0gJyc7CglwdWJsaWMgJHZhbHVlID0gJyc7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJHR5cGUgPSAnRWxlbWVudCc7CgoJcHVibGljICR2YWx1ZV9pc19vYmplY3QgPSBmYWxzZTsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbWJpbmF0b3IsICR2YWx1ZSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKXsKCgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJCSR0aGlzLT52YWx1ZV9pc19vYmplY3QgPSBpc19vYmplY3QoJHZhbHVlKTsKCgkJaWYoICRjb21iaW5hdG9yICl7CgkJCSR0aGlzLT5jb21iaW5hdG9yID0gJGNvbWJpbmF0b3I7CgkJfQoKCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKXsKCQlpZiggJHRoaXMtPnZhbHVlX2lzX29iamVjdCApeyAvL29iamVjdCBvciBzdHJpbmcKCQkJJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+dmFsdWUgKTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgoJCWlmKCBMZXNzX0Vudmlyb25tZW50OjokbWl4aW5fc3RhY2sgKXsKCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfRWxlbWVudCgkdGhpcy0+Y29tYmluYXRvciwgKCR0aGlzLT52YWx1ZV9pc19vYmplY3QgPyAkdGhpcy0+dmFsdWUtPmNvbXBpbGUoJGVudikgOiAkdGhpcy0+dmFsdWUpLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8gKTsKCQl9CgoJCWlmKCAkdGhpcy0+dmFsdWVfaXNfb2JqZWN0ICl7CgkJCSR0aGlzLT52YWx1ZSA9ICR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KTsKCQl9CgoJCXJldHVybiAkdGhpczsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnRvQ1NTKCksICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUygpewoKCQlpZiggJHRoaXMtPnZhbHVlX2lzX29iamVjdCApewoJCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWUtPnRvQ1NTKCk7CgkJfWVsc2V7CgkJCSR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKCQl9CgoKCQlpZiggJHZhbHVlID09PSAnJyAmJiAkdGhpcy0+Y29tYmluYXRvciAmJiAkdGhpcy0+Y29tYmluYXRvciA9PT0gJyYnICl7CgkJCXJldHVybiAnJzsKCQl9CgoKCQlyZXR1cm4gTGVzc19FbnZpcm9ubWVudDo6JF9vdXRwdXRNYXBbJHRoaXMtPmNvbWJpbmF0b3JdIC4gJHZhbHVlOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Expression.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFeHByZXNzaW9uCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0V4cHJlc3Npb24gZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICR2YWx1ZSA9IGFycmF5KCk7CglwdWJsaWMgJHBhcmVucyA9IGZhbHNlOwoJcHVibGljICRwYXJlbnNJbk9wID0gZmFsc2U7CglwdWJsaWMgJHR5cGUgPSAnRXhwcmVzc2lvbic7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkdmFsdWUsICRwYXJlbnMgPSBudWxsICl7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJCSR0aGlzLT5wYXJlbnMgPSAkcGFyZW5zOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICl7CgkJJHRoaXMtPnZhbHVlID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoICR0aGlzLT52YWx1ZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpIHsKCgkJJGRvdWJsZVBhcmVuID0gZmFsc2U7CgoJCWlmKCAkdGhpcy0+cGFyZW5zICYmICEkdGhpcy0+cGFyZW5zSW5PcCApewoJCQlMZXNzX0Vudmlyb25tZW50OjokcGFyZW5zU3RhY2srKzsKCQl9CgoJCSRyZXR1cm5WYWx1ZSA9IG51bGw7CgkJaWYoICR0aGlzLT52YWx1ZSApewoKCQkJJGNvdW50ID0gY291bnQoJHRoaXMtPnZhbHVlKTsKCgkJCWlmKCAkY291bnQgPiAxICl7CgoJCQkJJHJldCA9IGFycmF5KCk7CgkJCQlmb3JlYWNoKCR0aGlzLT52YWx1ZSBhcyAkZSl7CgkJCQkJJHJldFtdID0gJGUtPmNvbXBpbGUoJGVudik7CgkJCQl9CgkJCQkkcmV0dXJuVmFsdWUgPSBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oJHJldCk7CgoJCQl9ZWxzZXsKCgkJCQlpZiggKCR0aGlzLT52YWx1ZVswXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHByZXNzaW9uKSAmJiAkdGhpcy0+dmFsdWVbMF0tPnBhcmVucyAmJiAhJHRoaXMtPnZhbHVlWzBdLT5wYXJlbnNJbk9wICl7CgkJCQkJJGRvdWJsZVBhcmVuID0gdHJ1ZTsKCQkJCX0KCgkJCQkkcmV0dXJuVmFsdWUgPSAkdGhpcy0+dmFsdWVbMF0tPmNvbXBpbGUoJGVudik7CgkJCX0KCgkJfSBlbHNlIHsKCQkJJHJldHVyblZhbHVlID0gJHRoaXM7CgkJfQoKCQlpZiggJHRoaXMtPnBhcmVucyApewoJCQlpZiggISR0aGlzLT5wYXJlbnNJbk9wICl7CgkJCQlMZXNzX0Vudmlyb25tZW50OjokcGFyZW5zU3RhY2stLTsKCgkJCX1lbHNlaWYoICFMZXNzX0Vudmlyb25tZW50Ojppc01hdGhPbigpICYmICEkZG91YmxlUGFyZW4gKXsKCQkJCSRyZXR1cm5WYWx1ZSA9IG5ldyBMZXNzX1RyZWVfUGFyZW4oJHJldHVyblZhbHVlKTsKCgkJCX0KCQl9CgkJcmV0dXJuICRyZXR1cm5WYWx1ZTsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoJCSR2YWxfbGVuID0gY291bnQoJHRoaXMtPnZhbHVlKTsKCQlmb3IoICRpID0gMDsgJGkgPCAkdmFsX2xlbjsgJGkrKyApewoJCQkkdGhpcy0+dmFsdWVbJGldLT5nZW5DU1MoICRvdXRwdXQgKTsKCQkJaWYoICRpICsgMSA8ICR2YWxfbGVuICl7CgkJCQkkb3V0cHV0LT5hZGQoICcgJyApOwoJCQl9CgkJfQoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aHJvd0F3YXlDb21tZW50cygpIHsKCgkJaWYoIGlzX2FycmF5KCR0aGlzLT52YWx1ZSkgKXsKCQkJJG5ld192YWx1ZSA9IGFycmF5KCk7CgkJCWZvcmVhY2goJHRoaXMtPnZhbHVlIGFzICR2KXsKCQkJCWlmKCAkdiBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db21tZW50ICl7CgkJCQkJY29udGludWU7CgkJCQl9CgkJCQkkbmV3X3ZhbHVlW10gPSAkdjsKCQkJfQoJCQkkdGhpcy0+dmFsdWUgPSAkbmV3X3ZhbHVlOwoJCX0KCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Extend.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFeHRlbmQKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfRXh0ZW5kIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkc2VsZWN0b3I7CglwdWJsaWMgJG9wdGlvbjsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJHNlbGZTZWxlY3RvcnMgPSBhcnJheSgpOwoJcHVibGljICRhbGxvd0JlZm9yZTsKCXB1YmxpYyAkYWxsb3dBZnRlcjsKCXB1YmxpYyAkZmlyc3RFeHRlbmRPblRoaXNTZWxlY3RvclBhdGg7CglwdWJsaWMgJHR5cGUgPSAnRXh0ZW5kJzsKCXB1YmxpYyAkcnVsZXNldDsKCgoJcHVibGljICRvYmplY3RfaWQ7CglwdWJsaWMgJHBhcmVudF9pZHMgPSBhcnJheSgpOwoKCS8qKgoJICogQHBhcmFtIGludGVnZXIgJGluZGV4CgkgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc2VsZWN0b3IsICRvcHRpb24sICRpbmRleCl7CgkJc3RhdGljICRpID0gMDsKCQkkdGhpcy0+c2VsZWN0b3IgPSAkc2VsZWN0b3I7CgkJJHRoaXMtPm9wdGlvbiA9ICRvcHRpb247CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoKCQlzd2l0Y2goJG9wdGlvbil7CgkJCWNhc2UgImFsbCI6CgkJCQkkdGhpcy0+YWxsb3dCZWZvcmUgPSB0cnVlOwoJCQkJJHRoaXMtPmFsbG93QWZ0ZXIgPSB0cnVlOwoJCQlicmVhazsKCQkJZGVmYXVsdDoKCQkJCSR0aGlzLT5hbGxvd0JlZm9yZSA9IGZhbHNlOwoJCQkJJHRoaXMtPmFsbG93QWZ0ZXIgPSBmYWxzZTsKCQkJYnJlYWs7CgkJfQoKCQkkdGhpcy0+b2JqZWN0X2lkID0gJGkrKzsKCQkkdGhpcy0+cGFyZW50X2lkcyA9IGFycmF5KCR0aGlzLT5vYmplY3RfaWQpOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICl7CgkJJHRoaXMtPnNlbGVjdG9yID0gJHZpc2l0b3ItPnZpc2l0T2JqKCAkdGhpcy0+c2VsZWN0b3IgKTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApewoJCUxlc3NfUGFyc2VyOjokaGFzX2V4dGVuZHMgPSB0cnVlOwoJCSR0aGlzLT5zZWxlY3RvciA9ICR0aGlzLT5zZWxlY3Rvci0+Y29tcGlsZSgkZW52KTsKCQlyZXR1cm4gJHRoaXM7CgkJLy9yZXR1cm4gbmV3IExlc3NfVHJlZV9FeHRlbmQoICR0aGlzLT5zZWxlY3Rvci0+Y29tcGlsZSgkZW52KSwgJHRoaXMtPm9wdGlvbiwgJHRoaXMtPmluZGV4KTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZmluZFNlbGZTZWxlY3RvcnMoICRzZWxlY3RvcnMgKXsKCQkkc2VsZkVsZW1lbnRzID0gYXJyYXkoKTsKCgoJCWZvciggJGkgPSAwLCAkc2VsZWN0b3JzX2xlbiA9IGNvdW50KCRzZWxlY3RvcnMpOyAkaSA8ICRzZWxlY3RvcnNfbGVuOyAkaSsrICl7CgkJCSRzZWxlY3RvckVsZW1lbnRzID0gJHNlbGVjdG9yc1skaV0tPmVsZW1lbnRzOwoJCQkvLyBkdXBsaWNhdGUgdGhlIGxvZ2ljIGluIGdlbkNTUyBmdW5jdGlvbiBpbnNpZGUgdGhlIHNlbGVjdG9yIG5vZGUuCgkJCS8vIGZ1dHVyZSBUT0RPIC0gbW92ZSBib3RoIGxvZ2ljcyBpbnRvIHRoZSBzZWxlY3RvciBqb2luZXIgdmlzaXRvcgoJCQlpZiggJGkgJiYgJHNlbGVjdG9yRWxlbWVudHMgJiYgJHNlbGVjdG9yRWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPT09ICIiKSB7CgkJCQkkc2VsZWN0b3JFbGVtZW50c1swXS0+Y29tYmluYXRvciA9ICcgJzsKCQkJfQoJCQkkc2VsZkVsZW1lbnRzID0gYXJyYXlfbWVyZ2UoICRzZWxmRWxlbWVudHMsICRzZWxlY3RvcnNbJGldLT5lbGVtZW50cyApOwoJCX0KCgkJJHRoaXMtPnNlbGZTZWxlY3RvcnMgPSBhcnJheShuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCRzZWxmRWxlbWVudHMpKTsKCX0KCn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBDU1MgQGltcG9ydCBub2RlCiAqCiAqIFRoZSBnZW5lcmFsIHN0cmF0ZWd5IGhlcmUgaXMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHdhaXQKICogZm9yIHRoZSBwYXJzaW5nIHRvIGJlIGNvbXBsZXRlZCwgYmVmb3JlIHdlIHN0YXJ0IGltcG9ydGluZwogKiB0aGUgZmlsZS4gVGhhdCdzIGJlY2F1c2UgaW4gdGhlIGNvbnRleHQgb2YgYSBicm93c2VyLAogKiBtb3N0IG9mIHRoZSB0aW1lIHdpbGwgYmUgc3BlbnQgd2FpdGluZyBmb3IgdGhlIHNlcnZlciB0byByZXNwb25kLgogKgogKiBPbiBjcmVhdGlvbiwgd2UgcHVzaCB0aGUgaW1wb3J0IHBhdGggdG8gb3VyIGltcG9ydCBxdWV1ZSwgdGhvdWdoCiAqIGBpbXBvcnQscHVzaGAsIHdlIGFsc28gcGFzcyBpdCBhIGNhbGxiYWNrLCB3aGljaCBpdCdsbCBjYWxsIG9uY2UKICogdGhlIGZpbGUgaGFzIGJlZW4gZmV0Y2hlZCwgYW5kIHBhcnNlZC4KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfSW1wb3J0IGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkb3B0aW9uczsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJHBhdGg7CglwdWJsaWMgJGZlYXR1cmVzOwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJGNzczsKCXB1YmxpYyAkc2tpcDsKCXB1YmxpYyAkcm9vdDsKCXB1YmxpYyAkdHlwZSA9ICdJbXBvcnQnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcGF0aCwgJGZlYXR1cmVzLCAkb3B0aW9ucywgJGluZGV4LCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCApewoJCSR0aGlzLT5vcHRpb25zID0gJG9wdGlvbnM7CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5wYXRoID0gJHBhdGg7CgkJJHRoaXMtPmZlYXR1cmVzID0gJGZlYXR1cmVzOwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoKCQlpZiggaXNfYXJyYXkoJG9wdGlvbnMpICl7CgkJCSR0aGlzLT5vcHRpb25zICs9IGFycmF5KCdpbmxpbmUnPT5mYWxzZSk7CgoJCQlpZiggaXNzZXQoJHRoaXMtPm9wdGlvbnNbJ2xlc3MnXSkgfHwgJHRoaXMtPm9wdGlvbnNbJ2lubGluZSddICl7CgkJCQkkdGhpcy0+Y3NzID0gIWlzc2V0KCR0aGlzLT5vcHRpb25zWydsZXNzJ10pIHx8ICEkdGhpcy0+b3B0aW9uc1snbGVzcyddIHx8ICR0aGlzLT5vcHRpb25zWydpbmxpbmUnXTsKCQkJfSBlbHNlIHsKCQkJCSRwYXRoVmFsdWUgPSAkdGhpcy0+Z2V0UGF0aCgpOwoJCQkJaWYoICRwYXRoVmFsdWUgJiYgcHJlZ19tYXRjaCgnL2NzcyhbXD87XS4qKT8kLycsJHBhdGhWYWx1ZSkgKXsKCQkJCQkkdGhpcy0+Y3NzID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCX0KCi8vCi8vIFRoZSBhY3R1YWwgaW1wb3J0IG5vZGUgZG9lc24ndCByZXR1cm4gYW55dGhpbmcsIHdoZW4gY29udmVydGVkIHRvIENTUy4KLy8gVGhlIHJlYXNvbiBpcyB0aGF0IGl0J3MgdXNlZCBhdCB0aGUgZXZhbHVhdGlvbiBzdGFnZSwgc28gdGhhdCB0aGUgcnVsZXMKLy8gaXQgaW1wb3J0cyBjYW4gYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBydWxlcy4KLy8KLy8gSW4gYGV2YWxgLCB3ZSBtYWtlIHN1cmUgYWxsIEltcG9ydCBub2RlcyBnZXQgZXZhbHVhdGVkLCByZWN1cnNpdmVseSwgc28KLy8gd2UgZW5kIHVwIHdpdGggYSBmbGF0IHN0cnVjdHVyZSwgd2hpY2ggY2FuIGVhc2lseSBiZSBpbXBvcnRlZCBpbiB0aGUgcGFyZW50Ci8vIHJ1bGVzZXQuCi8vCgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcil7CgoJCWlmKCAkdGhpcy0+ZmVhdHVyZXMgKXsKCQkJJHRoaXMtPmZlYXR1cmVzID0gJHZpc2l0b3ItPnZpc2l0T2JqKCR0aGlzLT5mZWF0dXJlcyk7CgkJfQoJCSR0aGlzLT5wYXRoID0gJHZpc2l0b3ItPnZpc2l0T2JqKCR0aGlzLT5wYXRoKTsKCgkJaWYoICEkdGhpcy0+b3B0aW9uc1snaW5saW5lJ10gJiYgJHRoaXMtPnJvb3QgKXsKCQkJJHRoaXMtPnJvb3QgPSAkdmlzaXRvci0+dmlzaXQoJHRoaXMtPnJvb3QpOwoJCX0KCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoJCWlmKCAkdGhpcy0+Y3NzICl7CgoJCQkkb3V0cHV0LT5hZGQoICdAaW1wb3J0ICcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoKCQkJJHRoaXMtPnBhdGgtPmdlbkNTUyggJG91dHB1dCApOwoJCQlpZiggJHRoaXMtPmZlYXR1cmVzICl7CgkJCQkkb3V0cHV0LT5hZGQoICcgJyApOwoJCQkJJHRoaXMtPmZlYXR1cmVzLT5nZW5DU1MoICRvdXRwdXQgKTsKCQkJfQoJCQkkb3V0cHV0LT5hZGQoICc7JyApOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9DU1MoKXsKCQkkZmVhdHVyZXMgPSAkdGhpcy0+ZmVhdHVyZXMgPyAnICcgLiAkdGhpcy0+ZmVhdHVyZXMtPnRvQ1NTKCkgOiAnJzsKCgkJaWYgKCR0aGlzLT5jc3MpIHsKCQkJcmV0dXJuICJAaW1wb3J0ICIgLiAkdGhpcy0+cGF0aC0+dG9DU1MoKSAuICRmZWF0dXJlcyAuICI7XG4iOwoJCX0gZWxzZSB7CgkJCXJldHVybiAiIjsKCQl9Cgl9CgoJLyoqCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGF0aCgpewoJCWlmICgkdGhpcy0+cGF0aCBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQpIHsKCQkJJHBhdGggPSAkdGhpcy0+cGF0aC0+dmFsdWU7CgkJCSRwYXRoID0gKCBpc3NldCgkdGhpcy0+Y3NzKSB8fCBwcmVnX21hdGNoKCcvKFwuW2Etel0qJCl8KFtcPztdLiopJC8nLCRwYXRoKSkgPyAkcGF0aCA6ICRwYXRoIC4gJy5sZXNzJzsKCQl9IGVsc2UgaWYgKCR0aGlzLT5wYXRoIGluc3RhbmNlb2YgTGVzc19UcmVlX1VSTCkgewoJCQkkcGF0aCA9ICR0aGlzLT5wYXRoLT52YWx1ZS0+dmFsdWU7CgkJfWVsc2V7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJLy9yZW1vdmUgcXVlcnkgc3RyaW5nIGFuZCBmcmFnbWVudAoJCXJldHVybiBwcmVnX3JlcGxhY2UoJy9bXD8jXVteXD9dKiQvJywnJywkcGF0aCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGVGb3JJbXBvcnQoICRlbnYgKXsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9JbXBvcnQoICR0aGlzLT5wYXRoLT5jb21waWxlKCRlbnYpLCAkdGhpcy0+ZmVhdHVyZXMsICR0aGlzLT5vcHRpb25zLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlUGF0aCgkZW52KSB7CgkJJHBhdGggPSAkdGhpcy0+cGF0aC0+Y29tcGlsZSgkZW52KTsKCQkkcm9vdHBhdGggPSAnJzsKCQlpZiggJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyAmJiAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyb290cGF0aCddICl7CgkJCSRyb290cGF0aCA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3Jvb3RwYXRoJ107CgkJfQoKCgkJaWYoICEoJHBhdGggaW5zdGFuY2VvZiBMZXNzX1RyZWVfVVJMKSApewoJCQlpZiggJHJvb3RwYXRoICl7CgkJCQkkcGF0aFZhbHVlID0gJHBhdGgtPnZhbHVlOwoJCQkJLy8gQWRkIHRoZSBiYXNlIHBhdGggaWYgdGhlIGltcG9ydCBpcyByZWxhdGl2ZQoJCQkJaWYoICRwYXRoVmFsdWUgJiYgTGVzc19FbnZpcm9ubWVudDo6aXNQYXRoUmVsYXRpdmUoJHBhdGhWYWx1ZSkgKXsKCQkJCQkkcGF0aC0+dmFsdWUgPSAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWyd1cmlfcm9vdCddLiRwYXRoVmFsdWU7CgkJCQl9CgkJCX0KCQkJJHBhdGgtPnZhbHVlID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCgkcGF0aC0+dmFsdWUpOwoJCX0KCgoKCQlyZXR1cm4gJHBhdGg7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoICRlbnYgKXsKCgkJJGV2YWxkID0gJHRoaXMtPmNvbXBpbGVGb3JJbXBvcnQoJGVudik7CgoJCS8vZ2V0IHBhdGggJiB1cmkKCQkkcGF0aF9hbmRfdXJpID0gbnVsbDsKCQlpZiggaXNfY2FsbGFibGUoTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbXBvcnRfY2FsbGJhY2snXSkgKXsKCQkJJHBhdGhfYW5kX3VyaSA9IGNhbGxfdXNlcl9mdW5jKExlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2NhbGxiYWNrJ10sJGV2YWxkKTsKCQl9CgoJCWlmKCAhJHBhdGhfYW5kX3VyaSApewoJCQkkcGF0aF9hbmRfdXJpID0gJGV2YWxkLT5QYXRoQW5kVXJpKCk7CgkJfQoKCQlpZiggJHBhdGhfYW5kX3VyaSApewoJCQlsaXN0KCRmdWxsX3BhdGgsICR1cmkpID0gJHBhdGhfYW5kX3VyaTsKCQl9ZWxzZXsKCQkJJGZ1bGxfcGF0aCA9ICR1cmkgPSAkZXZhbGQtPmdldFBhdGgoKTsKCQl9CgoKCQkvL2ltcG9ydCBvbmNlCgkJaWYoICRldmFsZC0+c2tpcCggJGZ1bGxfcGF0aCwgJGVudikgKXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoKCQlpZiggJHRoaXMtPm9wdGlvbnNbJ2lubGluZSddICl7CgkJCS8vdG9kbyBuZWVkcyB0byByZWZlcmVuY2UgY3NzIGZpbGUgbm90IGltcG9ydAoJCQkvLyRjb250ZW50cyA9IG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCR0aGlzLT5yb290LCAwLCBhcnJheSgnZmlsZW5hbWUnPT4kdGhpcy0+aW1wb3J0ZWRGaWxlbmFtZSksIHRydWUgKTsKCgkJCUxlc3NfUGFyc2VyOjpBZGRQYXJzZWRGaWxlKCRmdWxsX3BhdGgpOwoJCQkkY29udGVudHMgPSBuZXcgTGVzc19UcmVlX0Fub255bW91cyggZmlsZV9nZXRfY29udGVudHMoJGZ1bGxfcGF0aCksIDAsIGFycmF5KCksIHRydWUgKTsKCgkJCWlmKCAkdGhpcy0+ZmVhdHVyZXMgKXsKCQkJCXJldHVybiBuZXcgTGVzc19UcmVlX01lZGlhKCBhcnJheSgkY29udGVudHMpLCAkdGhpcy0+ZmVhdHVyZXMtPnZhbHVlICk7CgkJCX0KCgkJCXJldHVybiBhcnJheSggJGNvbnRlbnRzICk7CgkJfQoKCQkvLyBvcHRpb25hbCAobmVlZCB0byBiZSBiZWZvcmUgIkNTUyIgdG8gc3VwcG9ydCBvcHRpb25hbCBDU1MgaW1wb3J0cy4gQ1NTIHNob3VsZCBiZSBjaGVja2VkIG9ubHkgaWYgZW1wdHkoJHRoaXMtPmN1cnJlbnRGaWxlSW5mbykpCgkJaWYoIGlzc2V0KCR0aGlzLT5vcHRpb25zWydvcHRpb25hbCddKSAmJiAkdGhpcy0+b3B0aW9uc1snb3B0aW9uYWwnXSAmJiAhZmlsZV9leGlzdHMoJGZ1bGxfcGF0aCkgJiYgKCEkZXZhbGQtPmNzcyB8fCAhZW1wdHkoJHRoaXMtPmN1cnJlbnRGaWxlSW5mbykpKSB7CgkJCXJldHVybiBhcnJheSgpOwoJCX0KCgoJCS8vIGNzcyA/CgkJaWYoICRldmFsZC0+Y3NzICl7CgkJCSRmZWF0dXJlcyA9ICggJGV2YWxkLT5mZWF0dXJlcyA/ICRldmFsZC0+ZmVhdHVyZXMtPmNvbXBpbGUoJGVudikgOiBudWxsICk7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX0ltcG9ydCggJHRoaXMtPmNvbXBpbGVQYXRoKCAkZW52KSwgJGZlYXR1cmVzLCAkdGhpcy0+b3B0aW9ucywgJHRoaXMtPmluZGV4KTsKCQl9CgoKCQlyZXR1cm4gJHRoaXMtPlBhcnNlSW1wb3J0KCAkZnVsbF9wYXRoLCAkdXJpLCAkZW52ICk7Cgl9CgoKCS8qKgoJICogVXNpbmcgdGhlIGltcG9ydCBkaXJlY3RvcmllcywgZ2V0IHRoZSBmdWxsIGFic29sdXRlIHBhdGggYW5kIHVyaSBvZiB0aGUgaW1wb3J0CgkgKgoJICogQHBhcmFtIExlc3NfVHJlZV9JbXBvcnQgJGV2YWxkCgkgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBQYXRoQW5kVXJpKCl7CgoJCSRldmFsZF9wYXRoID0gJHRoaXMtPmdldFBhdGgoKTsKCgkJaWYoICRldmFsZF9wYXRoICl7CgoJCQkkaW1wb3J0X2RpcnMgPSBhcnJheSgpOwoKCQkJaWYoIExlc3NfRW52aXJvbm1lbnQ6OmlzUGF0aFJlbGF0aXZlKCRldmFsZF9wYXRoKSApewoJCQkJLy9pZiB0aGUgcGF0aCBpcyByZWxhdGl2ZSwgdGhlIGZpbGUgc2hvdWxkIGJlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQoJCQkJJGltcG9ydF9kaXJzWyAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydjdXJyZW50RGlyZWN0b3J5J10gXSA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3VyaV9yb290J107CgoJCQl9ZWxzZXsKCQkJCS8vb3RoZXJ3aXNlLCB0aGUgZmlsZSBzaG91bGQgYmUgcmVsYXRpdmUgdG8gdGhlIHNlcnZlciByb290CgkJCQkkaW1wb3J0X2RpcnNbICR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ2VudHJ5UGF0aCddIF0gPSAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydlbnRyeVVyaSddOwoKCQkJCS8vaWYgdGhlIHVzZXIgc3VwcGxpZWQgZW50cnlQYXRoIGlzbid0IHRoZSBhY3R1YWwgcm9vdAoJCQkJJGltcG9ydF9kaXJzWyAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIF0gPSAnJzsKCgkJCX0KCgkJCS8vIGFsd2F5cyBsb29rIGluIHVzZXIgc3VwcGxpZWQgaW1wb3J0IGRpcmVjdG9yaWVzCgkJCSRpbXBvcnRfZGlycyA9IGFycmF5X21lcmdlKCAkaW1wb3J0X2RpcnMsIExlc3NfUGFyc2VyOjokb3B0aW9uc1snaW1wb3J0X2RpcnMnXSApOwoKCgkJCWZvcmVhY2goICRpbXBvcnRfZGlycyBhcyAkcm9vdHBhdGggPT4gJHJvb3R1cmkpewoJCQkJaWYoIGlzX2NhbGxhYmxlKCRyb290dXJpKSApewoJCQkJCWxpc3QoJHBhdGgsICR1cmkpID0gY2FsbF91c2VyX2Z1bmMoJHJvb3R1cmksICRldmFsZF9wYXRoKTsKCQkJCQlpZiggaXNfc3RyaW5nKCRwYXRoKSApewoJCQkJCQkkZnVsbF9wYXRoID0gJHBhdGg7CgkJCQkJCXJldHVybiBhcnJheSggJGZ1bGxfcGF0aCwgJHVyaSApOwoJCQkJCX0KCQkJCX1lbHNlaWYoICFlbXB0eSgkcm9vdHBhdGgpICl7CgoKCQkJCQlpZiggJHJvb3R1cmkgKXsKCQkJCQkJaWYoIHN0cnBvcygkZXZhbGRfcGF0aCwkcm9vdHVyaSkgPT09IDAgKXsKCQkJCQkJCSRldmFsZF9wYXRoID0gc3Vic3RyKCAkZXZhbGRfcGF0aCwgc3RybGVuKCRyb290dXJpKSApOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQkkcGF0aCA9IHJ0cmltKCRyb290cGF0aCwnL1xcJykuJy8nLmx0cmltKCRldmFsZF9wYXRoLCcvXFwnKTsKCgkJCQkJaWYoIGZpbGVfZXhpc3RzKCRwYXRoKSApewoJCQkJCQkkZnVsbF9wYXRoID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCgkcGF0aCk7CgkJCQkJCSR1cmkgPSBMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKGRpcm5hbWUoJHJvb3R1cmkuJGV2YWxkX3BhdGgpKTsKCQkJCQkJcmV0dXJuIGFycmF5KCAkZnVsbF9wYXRoLCAkdXJpICk7CgkJCQkJfSBlbHNlaWYoIGZpbGVfZXhpc3RzKCRwYXRoLicubGVzcycpICl7CgkJCQkJCSRmdWxsX3BhdGggPSBMZXNzX0Vudmlyb25tZW50Ojpub3JtYWxpemVQYXRoKCRwYXRoLicubGVzcycpOwoJCQkJCQkkdXJpID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aChkaXJuYW1lKCRyb290dXJpLiRldmFsZF9wYXRoLicubGVzcycpKTsKCQkJCQkJcmV0dXJuIGFycmF5KCAkZnVsbF9wYXRoLCAkdXJpICk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoKCgkvKioKCSAqIFBhcnNlIHRoZSBpbXBvcnQgdXJsIGFuZCByZXR1cm4gdGhlIHJ1bGVzCgkgKgoJICogQHJldHVybiBMZXNzX1RyZWVfTWVkaWF8YXJyYXkKCSAqLwogICAgcHVibGljIGZ1bmN0aW9uIFBhcnNlSW1wb3J0KCAkZnVsbF9wYXRoLCAkdXJpLCAkZW52ICl7CgoJCSRpbXBvcnRfZW52ID0gY2xvbmUgJGVudjsKCQlpZiggKGlzc2V0KCR0aGlzLT5vcHRpb25zWydyZWZlcmVuY2UnXSkgJiYgJHRoaXMtPm9wdGlvbnNbJ3JlZmVyZW5jZSddKSB8fCBpc3NldCgkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSkgKXsKCQkJJGltcG9ydF9lbnYtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10gPSB0cnVlOwoJCX0KCgkJaWYoIChpc3NldCgkdGhpcy0+b3B0aW9uc1snbXVsdGlwbGUnXSkgJiYgJHRoaXMtPm9wdGlvbnNbJ211bHRpcGxlJ10pICl7CgkJCSRpbXBvcnRfZW52LT5pbXBvcnRNdWx0aXBsZSA9IHRydWU7CgkJfQoKCQkkcGFyc2VyID0gbmV3IExlc3NfUGFyc2VyKCRpbXBvcnRfZW52KTsKCQkkcm9vdCA9ICRwYXJzZXItPnBhcnNlRmlsZSgkZnVsbF9wYXRoLCAkdXJpLCB0cnVlKTsKCgoJCSRydWxlc2V0ID0gbmV3IExlc3NfVHJlZV9SdWxlc2V0KGFycmF5KCksICRyb290LT5ydWxlcyApOwoJCSRydWxlc2V0LT5ldmFsSW1wb3J0cygkaW1wb3J0X2Vudik7CgoJCXJldHVybiAkdGhpcy0+ZmVhdHVyZXMgPyBuZXcgTGVzc19UcmVlX01lZGlhKCRydWxlc2V0LT5ydWxlcywgJHRoaXMtPmZlYXR1cmVzLT52YWx1ZSkgOiAkcnVsZXNldC0+cnVsZXM7Cgl9CgoKCS8qKgoJICogU2hvdWxkIHRoZSBpbXBvcnQgYmUgc2tpcHBlZD8KCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW58bnVsbAoJICovCglwcml2YXRlIGZ1bmN0aW9uIFNraXAoJHBhdGgsICRlbnYpewoKCQkkcGF0aCA9IExlc3NfUGFyc2VyOjp3aW5QYXRoKHJlYWxwYXRoKCRwYXRoKSk7CgoJCWlmKCAkcGF0aCAmJiBMZXNzX1BhcnNlcjo6RmlsZVBhcnNlZCgkcGF0aCkgKXsKCgkJCWlmKCBpc3NldCgkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSkgKXsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgoJCQlyZXR1cm4gIWlzc2V0KCR0aGlzLT5vcHRpb25zWydtdWx0aXBsZSddKSAmJiAhJGVudi0+aW1wb3J0TXVsdGlwbGU7CgkJfQoKCX0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Javascript.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBKYXZhc2NyaXB0CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0phdmFzY3JpcHQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICR0eXBlID0gJ0phdmFzY3JpcHQnOwoJcHVibGljICRlc2NhcGVkOwoJcHVibGljICRleHByZXNzaW9uOwoJcHVibGljICRpbmRleDsKCgkvKioKCSAqIEBwYXJhbSBib29sZWFuICRpbmRleAoJICogQHBhcmFtIGJvb2xlYW4gJGVzY2FwZWQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJpbmcsICRpbmRleCwgJGVzY2FwZWQpewoJCSR0aGlzLT5lc2NhcGVkID0gJGVzY2FwZWQ7CgkJJHRoaXMtPmV4cHJlc3Npb24gPSAkc3RyaW5nOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgpewoJCXJldHVybiBuZXcgTGVzc19UcmVlX0Fub255bW91cygnLyogU29ycnksIGNhbiBub3QgZG8gSmF2YVNjcmlwdCBldmFsdWF0aW9uIGluIFBIUC4uLiA6KCAqLycpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Keyword.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBLZXl3b3JkCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX0tleXdvcmQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkdHlwZSA9ICdLZXl3b3JkJzsKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpewoJCSR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgpewoJCXJldHVybiAkdGhpczsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJcHVibGljIGZ1bmN0aW9uIGdlbkNTUyggJG91dHB1dCApewoKCQlpZiggJHRoaXMtPnZhbHVlID09PSAnJScpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJJbnZhbGlkICUgd2l0aG91dCBudW1iZXIiKTsKCQl9CgoJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnZhbHVlICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUoJG90aGVyKSB7CgkJaWYgKCRvdGhlciBpbnN0YW5jZW9mIExlc3NfVHJlZV9LZXl3b3JkKSB7CgkJCXJldHVybiAkb3RoZXItPnZhbHVlID09PSAkdGhpcy0+dmFsdWUgPyAwIDogMTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gLTE7CgkJfQoJfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Media.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBNZWRpYQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9NZWRpYSBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJGZlYXR1cmVzOwoJcHVibGljICRydWxlczsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCXB1YmxpYyAkaXNSZWZlcmVuY2VkOwoJcHVibGljICR0eXBlID0gJ01lZGlhJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlID0gYXJyYXkoKSwgJGZlYXR1cmVzID0gYXJyYXkoKSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwgKXsKCgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoKCQkkc2VsZWN0b3JzID0gJHRoaXMtPmVtcHR5U2VsZWN0b3JzKCk7CgoJCSR0aGlzLT5mZWF0dXJlcyA9IG5ldyBMZXNzX1RyZWVfVmFsdWUoJGZlYXR1cmVzKTsKCgkJJHRoaXMtPnJ1bGVzID0gYXJyYXkobmV3IExlc3NfVHJlZV9SdWxlc2V0KCRzZWxlY3RvcnMsICR2YWx1ZSkpOwoJCSR0aGlzLT5ydWxlc1swXS0+YWxsb3dJbXBvcnRzID0gdHJ1ZTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCSR0aGlzLT5mZWF0dXJlcyA9ICR2aXNpdG9yLT52aXNpdE9iaigkdGhpcy0+ZmVhdHVyZXMpOwoJCSR0aGlzLT5ydWxlcyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5ydWxlcyk7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCgkJJG91dHB1dC0+YWRkKCAnQG1lZGlhICcsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCApOwoJCSR0aGlzLT5mZWF0dXJlcy0+Z2VuQ1NTKCAkb3V0cHV0ICk7CgkJTGVzc19UcmVlOjpvdXRwdXRSdWxlc2V0KCAkb3V0cHV0LCAkdGhpcy0+cnVsZXMpOwoKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkZW52KSB7CgoJCSRtZWRpYSA9IG5ldyBMZXNzX1RyZWVfTWVkaWEoYXJyYXkoKSwgYXJyYXkoKSwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvICk7CgoJCSRzdHJpY3RNYXRoQnlwYXNzID0gZmFsc2U7CgkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0TWF0aCddID09PSBmYWxzZSkgewoJCQkkc3RyaWN0TWF0aEJ5cGFzcyA9IHRydWU7CgkJCUxlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0TWF0aCddID0gdHJ1ZTsKCQl9CgoJCSRtZWRpYS0+ZmVhdHVyZXMgPSAkdGhpcy0+ZmVhdHVyZXMtPmNvbXBpbGUoJGVudik7CgoJCWlmKCAkc3RyaWN0TWF0aEJ5cGFzcyApewoJCQlMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdE1hdGgnXSA9IGZhbHNlOwoJCX0KCgkJJGVudi0+bWVkaWFQYXRoW10gPSAkbWVkaWE7CgkJJGVudi0+bWVkaWFCbG9ja3NbXSA9ICRtZWRpYTsKCgkJYXJyYXlfdW5zaGlmdCgkZW52LT5mcmFtZXMsICR0aGlzLT5ydWxlc1swXSk7CgkJJG1lZGlhLT5ydWxlcyA9IGFycmF5KCR0aGlzLT5ydWxlc1swXS0+Y29tcGlsZSgkZW52KSk7CgkJYXJyYXlfc2hpZnQoJGVudi0+ZnJhbWVzKTsKCgkJYXJyYXlfcG9wKCRlbnYtPm1lZGlhUGF0aCk7CgoJCXJldHVybiAhJGVudi0+bWVkaWFQYXRoID8gJG1lZGlhLT5jb21waWxlVG9wKCRlbnYpIDogJG1lZGlhLT5jb21waWxlTmVzdGVkKCRlbnYpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2YXJpYWJsZSgkbmFtZSkgewoJCXJldHVybiAkdGhpcy0+cnVsZXNbMF0tPnZhcmlhYmxlKCRuYW1lKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZmluZCgkc2VsZWN0b3IpIHsKCQlyZXR1cm4gJHRoaXMtPnJ1bGVzWzBdLT5maW5kKCRzZWxlY3RvciwgJHRoaXMpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBlbXB0eVNlbGVjdG9ycygpewoJCSRlbCA9IG5ldyBMZXNzX1RyZWVfRWxlbWVudCgnJywnJicsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyApOwoJCSRzZWxzID0gYXJyYXkoIG5ldyBMZXNzX1RyZWVfU2VsZWN0b3IoYXJyYXkoJGVsKSwgYXJyYXkoKSwgbnVsbCwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvKSApOwoJCSRzZWxzWzBdLT5tZWRpYUVtcHR5ID0gdHJ1ZTsKICAgICAgICByZXR1cm4gJHNlbHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hcmtSZWZlcmVuY2VkKCl7CgkJJHRoaXMtPnJ1bGVzWzBdLT5tYXJrUmVmZXJlbmNlZCgpOwoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSB0cnVlOwoJCUxlc3NfVHJlZTo6UmVmZXJlbmNlZEFycmF5KCR0aGlzLT5ydWxlc1swXS0+cnVsZXMpOwoJfQoKCS8vIGV2YWx0b3AKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlVG9wKCRlbnYpIHsKCQkkcmVzdWx0ID0gJHRoaXM7CgoJCWlmIChjb3VudCgkZW52LT5tZWRpYUJsb2NrcykgPiAxKSB7CgkJCSRzZWxlY3RvcnMgPSAkdGhpcy0+ZW1wdHlTZWxlY3RvcnMoKTsKCQkJJHJlc3VsdCA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldCgkc2VsZWN0b3JzLCAkZW52LT5tZWRpYUJsb2Nrcyk7CgkJCSRyZXN1bHQtPm11bHRpTWVkaWEgPSB0cnVlOwoJCX0KCgkJJGVudi0+bWVkaWFCbG9ja3MgPSBhcnJheSgpOwoJCSRlbnYtPm1lZGlhUGF0aCA9IGFycmF5KCk7CgoJCXJldHVybiAkcmVzdWx0OwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlTmVzdGVkKCRlbnYpIHsKCQkkcGF0aCA9IGFycmF5X21lcmdlKCRlbnYtPm1lZGlhUGF0aCwgYXJyYXkoJHRoaXMpKTsKCgkJLy8gRXh0cmFjdCB0aGUgbWVkaWEtcXVlcnkgY29uZGl0aW9ucyBzZXBhcmF0ZWQgd2l0aCBgLGAgKE9SKS4KCQlmb3JlYWNoICgkcGF0aCBhcyAka2V5ID0+ICRwKSB7CgkJCSR2YWx1ZSA9ICRwLT5mZWF0dXJlcyBpbnN0YW5jZW9mIExlc3NfVHJlZV9WYWx1ZSA/ICRwLT5mZWF0dXJlcy0+dmFsdWUgOiAkcC0+ZmVhdHVyZXM7CgkJCSRwYXRoWyRrZXldID0gaXNfYXJyYXkoJHZhbHVlKSA/ICR2YWx1ZSA6IGFycmF5KCR2YWx1ZSk7CgkJfQoKCQkvLyBUcmFjZSBhbGwgcGVybXV0YXRpb25zIHRvIGdlbmVyYXRlIHRoZSByZXN1bHRpbmcgbWVkaWEtcXVlcnkuCgkJLy8KCQkvLyAoYSwgYiBhbmQgYykgd2l0aCBuZXN0ZWQgKGQsIGUpIC0+CgkJLy8JYSBhbmQgZAoJCS8vCWEgYW5kIGUKCQkvLwliIGFuZCBjIGFuZCBkCgkJLy8JYiBhbmQgYyBhbmQgZQoKCQkkcGVybXV0ZWQgPSAkdGhpcy0+cGVybXV0ZSgkcGF0aCk7CgkJJGV4cHJlc3Npb25zID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRwZXJtdXRlZCBhcyAkcGF0aCl7CgoJCQlmb3IoICRpPTAsICRsZW49Y291bnQoJHBhdGgpOyAkaSA8ICRsZW47ICRpKyspewoJCQkJJHBhdGhbJGldID0gTGVzc19QYXJzZXI6OmlzX21ldGhvZCgkcGF0aFskaV0sICd0b0NTUycpID8gJHBhdGhbJGldIDogbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoJHBhdGhbJGldKTsKCQkJfQoKCQkJZm9yKCAkaSA9IGNvdW50KCRwYXRoKSAtIDE7ICRpID4gMDsgJGktLSApewoJCQkJYXJyYXlfc3BsaWNlKCRwYXRoLCAkaSwgMCwgYXJyYXkobmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoJ2FuZCcpKSk7CgkJCX0KCgkJCSRleHByZXNzaW9uc1tdID0gbmV3IExlc3NfVHJlZV9FeHByZXNzaW9uKCRwYXRoKTsKCQl9CgkJJHRoaXMtPmZlYXR1cmVzID0gbmV3IExlc3NfVHJlZV9WYWx1ZSgkZXhwcmVzc2lvbnMpOwoKCgoJCS8vIEZha2UgYSB0cmVlLW5vZGUgdGhhdCBkb2Vzbid0IG91dHB1dCBhbnl0aGluZy4KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9SdWxlc2V0KGFycmF5KCksIGFycmF5KCkpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwZXJtdXRlKCRhcnIpIHsKCQlpZiAoISRhcnIpCgkJCXJldHVybiBhcnJheSgpOwoKCQlpZiAoY291bnQoJGFycikgPT0gMSkKCQkJcmV0dXJuICRhcnJbMF07CgoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN0ID0gJHRoaXMtPnBlcm11dGUoYXJyYXlfc2xpY2UoJGFyciwgMSkpOwoJCWZvcmVhY2ggKCRyZXN0IGFzICRyKSB7CgkJCWZvcmVhY2ggKCRhcnJbMF0gYXMgJGEpIHsKCQkJCSRyZXN1bHRbXSA9IGFycmF5X21lcmdlKAoJCQkJCWlzX2FycmF5KCRhKSA/ICRhIDogYXJyYXkoJGEpLAoJCQkJCWlzX2FycmF5KCRyKSA/ICRyIDogYXJyYXkoJHIpCgkJCQkpOwoJCQl9CgkJfQoKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYnViYmxlU2VsZWN0b3JzKCRzZWxlY3RvcnMpIHsKCgkJaWYoICEkc2VsZWN0b3JzKSByZXR1cm47CgoJCSR0aGlzLT5ydWxlcyA9IGFycmF5KG5ldyBMZXNzX1RyZWVfUnVsZXNldCggJHNlbGVjdG9ycywgYXJyYXkoJHRoaXMtPnJ1bGVzWzBdKSkpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Mixin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Mixin/Call.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgpjbGFzcyBMZXNzX1RyZWVfTWl4aW5fQ2FsbCBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHNlbGVjdG9yOwoJcHVibGljICRhcmd1bWVudHM7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CgoJcHVibGljICRpbXBvcnRhbnQ7CglwdWJsaWMgJHR5cGUgPSAnTWl4aW5DYWxsJzsKCgkvKioKCSAqIGxlc3MuanM6IHRyZWUubWl4aW4uQ2FsbAoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRlbGVtZW50cywgJGFyZ3MsICRpbmRleCwgJGN1cnJlbnRGaWxlSW5mbywgJGltcG9ydGFudCA9IGZhbHNlKXsKCQkkdGhpcy0+c2VsZWN0b3IgPSBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCRlbGVtZW50cyk7CgkJJHRoaXMtPmFyZ3VtZW50cyA9ICRhcmdzOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCQkkdGhpcy0+aW1wb3J0YW50ID0gJGltcG9ydGFudDsKCX0KCgkvL2Z1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcil7CgkvLwkkdGhpcy0+c2VsZWN0b3IgPSAkdmlzaXRvci0+dmlzaXQoJHRoaXMtPnNlbGVjdG9yKTsKCS8vCSR0aGlzLT5hcmd1bWVudHMgPSAkdmlzaXRvci0+dmlzaXQoJHRoaXMtPmFyZ3VtZW50cyk7CgkvL30KCgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgoJCSRydWxlcyA9IGFycmF5KCk7CgkJJG1hdGNoID0gZmFsc2U7CgkJJGlzT25lRm91bmQgPSBmYWxzZTsKCQkkY2FuZGlkYXRlcyA9IGFycmF5KCk7CgkJJGRlZmF1bHRVc2VkID0gZmFsc2U7CgkJJGNvbmRpdGlvblJlc3VsdCA9IGFycmF5KCk7CgoJCSRhcmdzID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR0aGlzLT5hcmd1bWVudHMgYXMgJGEpewoJCQkkYXJnc1tdID0gYXJyYXkoJ25hbWUnPT4gJGFbJ25hbWUnXSwgJ3ZhbHVlJyA9PiAkYVsndmFsdWUnXS0+Y29tcGlsZSgkZW52KSApOwoJCX0KCgkJZm9yZWFjaCgkZW52LT5mcmFtZXMgYXMgJGZyYW1lKXsKCgkJCSRtaXhpbnMgPSAkZnJhbWUtPmZpbmQoJHRoaXMtPnNlbGVjdG9yKTsKCgkJCWlmKCAhJG1peGlucyApewoJCQkJY29udGludWU7CgkJCX0KCgkJCSRpc09uZUZvdW5kID0gdHJ1ZTsKCQkJJGRlZk5vbmUgPSAwOwoJCQkkZGVmVHJ1ZSA9IDE7CgkJCSRkZWZGYWxzZSA9IDI7CgoJCQkvLyBUbyBtYWtlIGBkZWZhdWx0KClgIGZ1bmN0aW9uIGluZGVwZW5kZW50IG9mIGRlZmluaXRpb24gb3JkZXIgd2UgaGF2ZSB0d28gInN1YnBhc3NlcyIgaGVyZS4KCQkJLy8gQXQgZmlyc3Qgd2UgZXZhbHVhdGUgZWFjaCBndWFyZCAqdHdpY2UqICh3aXRoIGBkZWZhdWx0KCkgPT0gdHJ1ZWAgYW5kIGBkZWZhdWx0KCkgPT0gZmFsc2VgKSwKCQkJLy8gYW5kIGJ1aWxkIGNhbmRpZGF0ZSBsaXN0IHdpdGggY29ycmVzcG9uZGluZyBmbGFncy4gVGhlbiwgd2hlbiB3ZSBrbm93IGFsbCBwb3NzaWJsZSBtYXRjaGVzLAoJCQkvLyB3ZSBtYWtlIGEgZmluYWwgZGVjaXNpb24uCgoJCQkkbWl4aW5zX2xlbiA9IGNvdW50KCRtaXhpbnMpOwoJCQlmb3IoICRtID0gMDsgJG0gPCAkbWl4aW5zX2xlbjsgJG0rKyApewoJCQkJJG1peGluID0gJG1peGluc1skbV07CgoJCQkJaWYoICR0aGlzLT5Jc1JlY3Vyc2l2ZSggJGVudiwgJG1peGluICkgKXsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQlpZiggJG1peGluLT5tYXRjaEFyZ3MoJGFyZ3MsICRlbnYpICl7CgoJCQkJCSRjYW5kaWRhdGUgPSBhcnJheSgnbWl4aW4nID0+ICRtaXhpbiwgJ2dyb3VwJyA9PiAkZGVmTm9uZSk7CgoJCQkJCWlmKCAkbWl4aW4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldCApewoKCQkJCQkJZm9yKCAkZiA9IDA7ICRmIDwgMjsgJGYrKyApewoJCQkJCQkJTGVzc19UcmVlX0RlZmF1bHRGdW5jOjp2YWx1ZSgkZik7CgkJCQkJCQkkY29uZGl0aW9uUmVzdWx0WyRmXSA9ICRtaXhpbi0+bWF0Y2hDb25kaXRpb24oICRhcmdzLCAkZW52KTsKCQkJCQkJfQoJCQkJCQlpZiggJGNvbmRpdGlvblJlc3VsdFswXSB8fCAkY29uZGl0aW9uUmVzdWx0WzFdICl7CgkJCQkJCQlpZiggJGNvbmRpdGlvblJlc3VsdFswXSAhPSAkY29uZGl0aW9uUmVzdWx0WzFdICl7CgkJCQkJCQkJJGNhbmRpZGF0ZVsnZ3JvdXAnXSA9ICRjb25kaXRpb25SZXN1bHRbMV0gPyAkZGVmVHJ1ZSA6ICRkZWZGYWxzZTsKCQkJCQkJCX0KCgkJCQkJCQkkY2FuZGlkYXRlc1tdID0gJGNhbmRpZGF0ZTsKCQkJCQkJfQoJCQkJCX1lbHNlewoJCQkJCQkkY2FuZGlkYXRlc1tdID0gJGNhbmRpZGF0ZTsKCQkJCQl9CgoJCQkJCSRtYXRjaCA9IHRydWU7CgkJCQl9CgkJCX0KCgkJCUxlc3NfVHJlZV9EZWZhdWx0RnVuYzo6cmVzZXQoKTsKCgoJCQkkY291bnQgPSBhcnJheSgwLCAwLCAwKTsKCQkJZm9yKCAkbSA9IDA7ICRtIDwgY291bnQoJGNhbmRpZGF0ZXMpOyAkbSsrICl7CgkJCQkkY291bnRbICRjYW5kaWRhdGVzWyRtXVsnZ3JvdXAnXSBdKys7CgkJCX0KCgkJCWlmKCAkY291bnRbJGRlZk5vbmVdID4gMCApewoJCQkJJGRlZmF1bHRSZXN1bHQgPSAkZGVmRmFsc2U7CgkJCX0gZWxzZSB7CgkJCQkkZGVmYXVsdFJlc3VsdCA9ICRkZWZUcnVlOwoJCQkJaWYoICgkY291bnRbJGRlZlRydWVdICsgJGNvdW50WyRkZWZGYWxzZV0pID4gMSApewoJCQkJCXRocm93IG5ldyBFeGNlcHRpb24oICdBbWJpZ3VvdXMgdXNlIG9mIGBkZWZhdWx0KClgIGZvdW5kIHdoZW4gbWF0Y2hpbmcgZm9yIGAnIC4gJHRoaXMtPmZvcm1hdCgkYXJncykgLiAnYCcgKTsKCQkJCX0KCQkJfQoKCgkJCSRjYW5kaWRhdGVzX2xlbmd0aCA9IGNvdW50KCRjYW5kaWRhdGVzKTsKCQkJJGxlbmd0aF8xID0gKCRjYW5kaWRhdGVzX2xlbmd0aCA9PSAxKTsKCgkJCWZvciggJG0gPSAwOyAkbSA8ICRjYW5kaWRhdGVzX2xlbmd0aDsgJG0rKyl7CgkJCQkkY2FuZGlkYXRlID0gJGNhbmRpZGF0ZXNbJG1dWydncm91cCddOwoJCQkJaWYoICgkY2FuZGlkYXRlID09PSAkZGVmTm9uZSkgfHwgKCRjYW5kaWRhdGUgPT09ICRkZWZhdWx0UmVzdWx0KSApewoJCQkJCXRyeXsKCQkJCQkJJG1peGluID0gJGNhbmRpZGF0ZXNbJG1dWydtaXhpbiddOwoJCQkJCQlpZiggISgkbWl4aW4gaW5zdGFuY2VvZiBMZXNzX1RyZWVfTWl4aW5fRGVmaW5pdGlvbikgKXsKCQkJCQkJCSRtaXhpbiA9IG5ldyBMZXNzX1RyZWVfTWl4aW5fRGVmaW5pdGlvbignJywgYXJyYXkoKSwgJG1peGluLT5ydWxlcywgbnVsbCwgZmFsc2UpOwoJCQkJCQkJJG1peGluLT5vcmlnaW5hbFJ1bGVzZXQgPSAkbWl4aW5zWyRtXS0+b3JpZ2luYWxSdWxlc2V0OwoJCQkJCQl9CgkJCQkJCSRydWxlcyA9IGFycmF5X21lcmdlKCRydWxlcywgJG1peGluLT5ldmFsQ2FsbCgkZW52LCAkYXJncywgJHRoaXMtPmltcG9ydGFudCktPnJ1bGVzKTsKCQkJCQl9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKCQkJCQkJLy90aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJGUtPmdldE1lc3NhZ2UoKSwgJGUtPmluZGV4LCBudWxsLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydmaWxlbmFtZSddKTsKCQkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCRlLT5nZXRNZXNzYWdlKCksIG51bGwsIG51bGwsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJaWYoICRtYXRjaCApewoJCQkJaWYoICEkdGhpcy0+Y3VycmVudEZpbGVJbmZvIHx8ICFpc3NldCgkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSkgfHwgISR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddICl7CgkJCQkJTGVzc19UcmVlOjpSZWZlcmVuY2VkQXJyYXkoJHJ1bGVzKTsKCQkJCX0KCgkJCQlyZXR1cm4gJHJ1bGVzOwoJCQl9CgkJfQoKCQlpZiggJGlzT25lRm91bmQgKXsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCdObyBtYXRjaGluZyBkZWZpbml0aW9uIHdhcyBmb3VuZCBmb3IgYCcuJHRoaXMtPkZvcm1hdCggJGFyZ3MgKS4nYCcsIG51bGwsICR0aGlzLT5pbmRleCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyk7CgoJCX1lbHNlewoJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIodHJpbSgkdGhpcy0+c2VsZWN0b3ItPnRvQ1NTKCkpIC4gIiBpcyB1bmRlZmluZWQgaW4gIi4kdGhpcy0+Y3VycmVudEZpbGVJbmZvWydmaWxlbmFtZSddLCBudWxsLCAkdGhpcy0+aW5kZXgpOwoJCX0KCgl9CgoJLyoqCgkgKiBGb3JtYXQgdGhlIGFyZ3MgZm9yIHVzZSBpbiBleGNlcHRpb24gbWVzc2FnZXMKCSAqCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gRm9ybWF0KCRhcmdzKXsKCQkkbWVzc2FnZSA9IGFycmF5KCk7CgkJaWYoICRhcmdzICl7CgkJCWZvcmVhY2goJGFyZ3MgYXMgJGEpewoJCQkJJGFyZ1ZhbHVlID0gJyc7CgkJCQlpZiggJGFbJ25hbWUnXSApewoJCQkJCSRhcmdWYWx1ZSAuPSAkYVsnbmFtZSddIC4gJzonOwoJCQkJfQoJCQkJaWYoIGlzX29iamVjdCgkYVsndmFsdWUnXSkgKXsKCQkJCQkkYXJnVmFsdWUgLj0gJGFbJ3ZhbHVlJ10tPnRvQ1NTKCk7CgkJCQl9ZWxzZXsKCQkJCQkkYXJnVmFsdWUgLj0gJz8/Pyc7CgkJCQl9CgkJCQkkbWVzc2FnZVtdID0gJGFyZ1ZhbHVlOwoJCQl9CgkJfQoJCXJldHVybiBpbXBsb2RlKCcsICcsJG1lc3NhZ2UpOwoJfQoKCgkvKioKCSAqIEFyZSB3ZSBpbiBhIHJlY3Vyc2l2ZSBtaXhpbiBjYWxsPwoJICoKCSAqIEByZXR1cm4gYm9vbAoJICovCglwcml2YXRlIGZ1bmN0aW9uIElzUmVjdXJzaXZlKCAkZW52LCAkbWl4aW4gKXsKCgkJZm9yZWFjaCgkZW52LT5mcmFtZXMgYXMgJHJlY3VyX2ZyYW1lKXsKCQkJaWYoICEoJG1peGluIGluc3RhbmNlb2YgTGVzc19UcmVlX01peGluX0RlZmluaXRpb24pICl7CgoJCQkJaWYoICRtaXhpbiA9PT0gJHJlY3VyX2ZyYW1lICl7CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgoJCQkJaWYoIGlzc2V0KCRyZWN1cl9mcmFtZS0+b3JpZ2luYWxSdWxlc2V0KSAmJiAkbWl4aW4tPnJ1bGVzZXRfaWQgPT09ICRyZWN1cl9mcmFtZS0+b3JpZ2luYWxSdWxlc2V0ICl7CgkJCQkJcmV0dXJuIHRydWU7CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCn0KCgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Mixin/Definition.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uIGV4dGVuZHMgTGVzc19UcmVlX1J1bGVzZXR7CglwdWJsaWMgJG5hbWU7CglwdWJsaWMgJHNlbGVjdG9yczsKCXB1YmxpYyAkcGFyYW1zOwoJcHVibGljICRhcml0eQkJPSAwOwoJcHVibGljICRydWxlczsKCXB1YmxpYyAkbG9va3VwcwkJPSBhcnJheSgpOwoJcHVibGljICRyZXF1aXJlZAk9IDA7CglwdWJsaWMgJGZyYW1lcwkJPSBhcnJheSgpOwoJcHVibGljICRjb25kaXRpb247CglwdWJsaWMgJHZhcmlhZGljOwoJcHVibGljICR0eXBlCQk9ICdNaXhpbkRlZmluaXRpb24nOwoKCgkvLyBsZXNzLmpzIDogL2xpYi9sZXNzL3RyZWUvbWl4aW4uanMgOiB0cmVlLm1peGluLkRlZmluaXRpb24KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwgJHBhcmFtcywgJHJ1bGVzLCAkY29uZGl0aW9uLCAkdmFyaWFkaWMgPSBmYWxzZSwgJGZyYW1lcyA9IGFycmF5KCkgKXsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCSR0aGlzLT5zZWxlY3RvcnMgPSBhcnJheShuZXcgTGVzc19UcmVlX1NlbGVjdG9yKGFycmF5KCBuZXcgTGVzc19UcmVlX0VsZW1lbnQobnVsbCwgJG5hbWUpKSkpOwoKCQkkdGhpcy0+cGFyYW1zID0gJHBhcmFtczsKCQkkdGhpcy0+Y29uZGl0aW9uID0gJGNvbmRpdGlvbjsKCQkkdGhpcy0+dmFyaWFkaWMgPSAkdmFyaWFkaWM7CgkJJHRoaXMtPnJ1bGVzID0gJHJ1bGVzOwoKCQlpZiggJHBhcmFtcyApewoJCQkkdGhpcy0+YXJpdHkgPSBjb3VudCgkcGFyYW1zKTsKCQkJZm9yZWFjaCggJHBhcmFtcyBhcyAkcCApewoJCQkJaWYgKCEgaXNzZXQoJHBbJ25hbWUnXSkgfHwgKCRwWyduYW1lJ10gJiYgIWlzc2V0KCRwWyd2YWx1ZSddKSkpIHsKCQkJCQkkdGhpcy0+cmVxdWlyZWQrKzsKCQkJCX0KCQkJfQoJCX0KCgkJJHRoaXMtPmZyYW1lcyA9ICRmcmFtZXM7CgkJJHRoaXMtPlNldFJ1bGVzZXRJbmRleCgpOwoJfQoKCgoJLy9mdW5jdGlvbiBhY2NlcHQoICR2aXNpdG9yICl7CgkvLwkkdGhpcy0+cGFyYW1zID0gJHZpc2l0b3ItPnZpc2l0KCR0aGlzLT5wYXJhbXMpOwoJLy8JJHRoaXMtPnJ1bGVzID0gJHZpc2l0b3ItPnZpc2l0KCR0aGlzLT5ydWxlcyk7CgkvLwkkdGhpcy0+Y29uZGl0aW9uID0gJHZpc2l0b3ItPnZpc2l0KCR0aGlzLT5jb25kaXRpb24pOwoJLy99CgoKCXB1YmxpYyBmdW5jdGlvbiB0b0NTUygpewoJCXJldHVybiAnJzsKCX0KCgkvLyBsZXNzLmpzIDogL2xpYi9sZXNzL3RyZWUvbWl4aW4uanMgOiB0cmVlLm1peGluLkRlZmluaXRpb24uZXZhbFBhcmFtcwoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGVQYXJhbXMoJGVudiwgJG1peGluRnJhbWVzLCAkYXJncyA9IGFycmF5KCkgLCAmJGV2YWxkQXJndW1lbnRzID0gYXJyYXkoKSApewoJCSRmcmFtZSA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldChudWxsLCBhcnJheSgpKTsKCQkkcGFyYW1zID0gJHRoaXMtPnBhcmFtczsKCQkkbWl4aW5FbnYgPSBudWxsOwoJCSRhcmdzTGVuZ3RoID0gMDsKCgkJaWYoICRhcmdzICl7CgkJCSRhcmdzTGVuZ3RoID0gY291bnQoJGFyZ3MpOwoJCQlmb3IoJGkgPSAwOyAkaSA8ICRhcmdzTGVuZ3RoOyAkaSsrICl7CgkJCQkkYXJnID0gJGFyZ3NbJGldOwoKCQkJCWlmKCAkYXJnICYmICRhcmdbJ25hbWUnXSApewoJCQkJCSRpc05hbWVkRm91bmQgPSBmYWxzZTsKCgkJCQkJZm9yZWFjaCgkcGFyYW1zIGFzICRqID0+ICRwYXJhbSl7CgkJCQkJCWlmKCAhaXNzZXQoJGV2YWxkQXJndW1lbnRzWyRqXSkgJiYgJGFyZ1snbmFtZSddID09PSAkcGFyYW1zWyRqXVsnbmFtZSddKSB7CgkJCQkJCQkkZXZhbGRBcmd1bWVudHNbJGpdID0gJGFyZ1sndmFsdWUnXS0+Y29tcGlsZSgkZW52KTsKCQkJCQkJCWFycmF5X3Vuc2hpZnQoJGZyYW1lLT5ydWxlcywgbmV3IExlc3NfVHJlZV9SdWxlKCAkYXJnWyduYW1lJ10sICRhcmdbJ3ZhbHVlJ10tPmNvbXBpbGUoJGVudikgKSApOwoJCQkJCQkJJGlzTmFtZWRGb3VuZCA9IHRydWU7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCX0KCQkJCQlpZiAoJGlzTmFtZWRGb3VuZCkgewoJCQkJCQlhcnJheV9zcGxpY2UoJGFyZ3MsICRpLCAxKTsKCQkJCQkJJGktLTsKCQkJCQkJJGFyZ3NMZW5ndGgtLTsKCQkJCQkJY29udGludWU7CgkJCQkJfSBlbHNlIHsKCQkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJOYW1lZCBhcmd1bWVudCBmb3IgIiAuICR0aGlzLT5uYW1lIC4nICcuJGFyZ3NbJGldWyduYW1lJ10gLiAnIG5vdCBmb3VuZCcpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJJGFyZ0luZGV4ID0gMDsKCQlmb3JlYWNoKCRwYXJhbXMgYXMgJGkgPT4gJHBhcmFtKXsKCgkJCWlmICggaXNzZXQoJGV2YWxkQXJndW1lbnRzWyRpXSkgKXsgY29udGludWU7IH0KCgkJCSRhcmcgPSBudWxsOwoJCQlpZiggaXNzZXQoJGFyZ3NbJGFyZ0luZGV4XSkgKXsKCQkJCSRhcmcgPSAkYXJnc1skYXJnSW5kZXhdOwoJCQl9CgoJCQlpZiAoaXNzZXQoJHBhcmFtWyduYW1lJ10pICYmICRwYXJhbVsnbmFtZSddKSB7CgoJCQkJaWYoIGlzc2V0KCRwYXJhbVsndmFyaWFkaWMnXSkgKXsKCQkJCQkkdmFyYXJncyA9IGFycmF5KCk7CgkJCQkJZm9yICgkaiA9ICRhcmdJbmRleDsgJGogPCAkYXJnc0xlbmd0aDsgJGorKykgewoJCQkJCQkkdmFyYXJnc1tdID0gJGFyZ3NbJGpdWyd2YWx1ZSddLT5jb21waWxlKCRlbnYpOwoJCQkJCX0KCQkJCQkkZXhwcmVzc2lvbiA9IG5ldyBMZXNzX1RyZWVfRXhwcmVzc2lvbigkdmFyYXJncyk7CgkJCQkJYXJyYXlfdW5zaGlmdCgkZnJhbWUtPnJ1bGVzLCBuZXcgTGVzc19UcmVlX1J1bGUoJHBhcmFtWyduYW1lJ10sICRleHByZXNzaW9uLT5jb21waWxlKCRlbnYpKSk7CgkJCQl9ZWxzZXsKCQkJCQkkdmFsID0gKCRhcmcgJiYgJGFyZ1sndmFsdWUnXSkgPyAkYXJnWyd2YWx1ZSddIDogZmFsc2U7CgoJCQkJCWlmICgkdmFsKSB7CgkJCQkJCSR2YWwgPSAkdmFsLT5jb21waWxlKCRlbnYpOwoJCQkJCX0gZWxzZSBpZiAoIGlzc2V0KCRwYXJhbVsndmFsdWUnXSkgKSB7CgoJCQkJCQlpZiggISRtaXhpbkVudiApewoJCQkJCQkJJG1peGluRW52ID0gbmV3IExlc3NfRW52aXJvbm1lbnQoKTsKCQkJCQkJCSRtaXhpbkVudi0+ZnJhbWVzID0gYXJyYXlfbWVyZ2UoIGFycmF5KCRmcmFtZSksICRtaXhpbkZyYW1lcyk7CgkJCQkJCX0KCgkJCQkJCSR2YWwgPSAkcGFyYW1bJ3ZhbHVlJ10tPmNvbXBpbGUoJG1peGluRW52KTsKCQkJCQkJJGZyYW1lLT5yZXNldENhY2hlKCk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciAiIC4gJHRoaXMtPm5hbWUgLiAiICgiIC4gJGFyZ3NMZW5ndGggLiAnIGZvciAnIC4gJHRoaXMtPmFyaXR5IC4gIikiKTsKCQkJCQl9CgoJCQkJCWFycmF5X3Vuc2hpZnQoJGZyYW1lLT5ydWxlcywgbmV3IExlc3NfVHJlZV9SdWxlKCRwYXJhbVsnbmFtZSddLCAkdmFsKSk7CgkJCQkJJGV2YWxkQXJndW1lbnRzWyRpXSA9ICR2YWw7CgkJCQl9CgkJCX0KCgkJCWlmICggaXNzZXQoJHBhcmFtWyd2YXJpYWRpYyddKSAmJiAkYXJncykgewoJCQkJZm9yICgkaiA9ICRhcmdJbmRleDsgJGogPCAkYXJnc0xlbmd0aDsgJGorKykgewoJCQkJCSRldmFsZEFyZ3VtZW50c1skal0gPSAkYXJnc1skal1bJ3ZhbHVlJ10tPmNvbXBpbGUoJGVudik7CgkJCQl9CgkJCX0KCQkJJGFyZ0luZGV4Kys7CgkJfQoKCQlrc29ydCgkZXZhbGRBcmd1bWVudHMpOwoJCSRldmFsZEFyZ3VtZW50cyA9IGFycmF5X3ZhbHVlcygkZXZhbGRBcmd1bWVudHMpOwoKCQlyZXR1cm4gJGZyYW1lOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpIHsKCQlpZiggJHRoaXMtPmZyYW1lcyApewoJCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uKCR0aGlzLT5uYW1lLCAkdGhpcy0+cGFyYW1zLCAkdGhpcy0+cnVsZXMsICR0aGlzLT5jb25kaXRpb24sICR0aGlzLT52YXJpYWRpYywgJHRoaXMtPmZyYW1lcyApOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uKCR0aGlzLT5uYW1lLCAkdGhpcy0+cGFyYW1zLCAkdGhpcy0+cnVsZXMsICR0aGlzLT5jb25kaXRpb24sICR0aGlzLT52YXJpYWRpYywgJGVudi0+ZnJhbWVzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGV2YWxDYWxsKCRlbnYsICRhcmdzID0gTlVMTCwgJGltcG9ydGFudCA9IE5VTEwpIHsKCgkJTGVzc19FbnZpcm9ubWVudDo6JG1peGluX3N0YWNrKys7CgoJCSRfYXJndW1lbnRzID0gYXJyYXkoKTsKCgkJaWYoICR0aGlzLT5mcmFtZXMgKXsKCQkJJG1peGluRnJhbWVzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmZyYW1lcywgJGVudi0+ZnJhbWVzKTsKCQl9ZWxzZXsKCQkJJG1peGluRnJhbWVzID0gJGVudi0+ZnJhbWVzOwoJCX0KCgkJJGZyYW1lID0gJHRoaXMtPmNvbXBpbGVQYXJhbXMoJGVudiwgJG1peGluRnJhbWVzLCAkYXJncywgJF9hcmd1bWVudHMpOwoKCQkkZXggPSBuZXcgTGVzc19UcmVlX0V4cHJlc3Npb24oJF9hcmd1bWVudHMpOwoJCWFycmF5X3Vuc2hpZnQoJGZyYW1lLT5ydWxlcywgbmV3IExlc3NfVHJlZV9SdWxlKCdAYXJndW1lbnRzJywgJGV4LT5jb21waWxlKCRlbnYpKSk7CgoKCQkkcnVsZXNldCA9IG5ldyBMZXNzX1RyZWVfUnVsZXNldChudWxsLCAkdGhpcy0+cnVsZXMpOwoJCSRydWxlc2V0LT5vcmlnaW5hbFJ1bGVzZXQgPSAkdGhpcy0+cnVsZXNldF9pZDsKCgoJCSRydWxlU2V0RW52ID0gbmV3IExlc3NfRW52aXJvbm1lbnQoKTsKCQkkcnVsZVNldEVudi0+ZnJhbWVzID0gYXJyYXlfbWVyZ2UoIGFycmF5KCR0aGlzLCAkZnJhbWUpLCAkbWl4aW5GcmFtZXMgKTsKCQkkcnVsZXNldCA9ICRydWxlc2V0LT5jb21waWxlKCAkcnVsZVNldEVudiApOwoKCQlpZiggJGltcG9ydGFudCApewoJCQkkcnVsZXNldCA9ICRydWxlc2V0LT5tYWtlSW1wb3J0YW50KCk7CgkJfQoKCQlMZXNzX0Vudmlyb25tZW50OjokbWl4aW5fc3RhY2stLTsKCgkJcmV0dXJuICRydWxlc2V0OwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gbWF0Y2hDb25kaXRpb24oJGFyZ3MsICRlbnYpIHsKCgkJaWYoICEkdGhpcy0+Y29uZGl0aW9uICl7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJLy8gc2V0IGFycmF5IHRvIHByZXZlbnQgZXJyb3Igb24gYXJyYXlfbWVyZ2UKCQlpZighaXNfYXJyYXkoJHRoaXMtPmZyYW1lcykpIHsKICAgICAgICAgICAgICR0aGlzLT5mcmFtZXMgPSBhcnJheSgpOwogICAgICAgIH0KCgkJJGZyYW1lID0gJHRoaXMtPmNvbXBpbGVQYXJhbXMoJGVudiwgYXJyYXlfbWVyZ2UoJHRoaXMtPmZyYW1lcywkZW52LT5mcmFtZXMpLCAkYXJncyApOwoKCQkkY29tcGlsZV9lbnYgPSBuZXcgTGVzc19FbnZpcm9ubWVudCgpOwoJCSRjb21waWxlX2Vudi0+ZnJhbWVzID0gYXJyYXlfbWVyZ2UoCgkJCQlhcnJheSgkZnJhbWUpCQkvLyB0aGUgcGFyYW1ldGVyIHZhcmlhYmxlcwoJCQkJLCAkdGhpcy0+ZnJhbWVzCQkvLyB0aGUgcGFyZW50IG5hbWVzcGFjZS9taXhpbiBmcmFtZXMKCQkJCSwgJGVudi0+ZnJhbWVzCQkvLyB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBmcmFtZXMKCQkJKTsKCgkJJGNvbXBpbGVfZW52LT5mdW5jdGlvbnMgPSAkZW52LT5mdW5jdGlvbnM7CgoJCXJldHVybiAoYm9vbCkkdGhpcy0+Y29uZGl0aW9uLT5jb21waWxlKCRjb21waWxlX2Vudik7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hdGNoQXJncygkYXJncywgJGVudiA9IE5VTEwpewoJCSRhcmdzTGVuZ3RoID0gY291bnQoJGFyZ3MpOwoKCQlpZiggISR0aGlzLT52YXJpYWRpYyApewoJCQlpZiggJGFyZ3NMZW5ndGggPCAkdGhpcy0+cmVxdWlyZWQgKXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQlpZiggJGFyZ3NMZW5ndGggPiBjb3VudCgkdGhpcy0+cGFyYW1zKSApewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfWVsc2V7CgkJCWlmKCAkYXJnc0xlbmd0aCA8ICgkdGhpcy0+cmVxdWlyZWQgLSAxKSl7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJCSRsZW4gPSBtaW4oJGFyZ3NMZW5ndGgsICR0aGlzLT5hcml0eSk7CgoJCWZvciggJGkgPSAwOyAkaSA8ICRsZW47ICRpKysgKXsKCQkJaWYoICFpc3NldCgkdGhpcy0+cGFyYW1zWyRpXVsnbmFtZSddKSAmJiAhaXNzZXQoJHRoaXMtPnBhcmFtc1skaV1bJ3ZhcmlhZGljJ10pICl7CgkJCQlpZiggJGFyZ3NbJGldWyd2YWx1ZSddLT5jb21waWxlKCRlbnYpLT50b0NTUygpICE9ICR0aGlzLT5wYXJhbXNbJGldWyd2YWx1ZSddLT5jb21waWxlKCRlbnYpLT50b0NTUygpICl7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Mixin/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/NameValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBIHNpbXBsZSBjc3MgbmFtZS12YWx1ZSBwYWlyCiAqIGV4OiB3aWR0aDoxMDBweDsKICoKICogSW4gYm9vdHN0cmFwLCB0aGVyZSBhcmUgYWJvdXQgNjAwLTEsMDAwIHNpbXBsZSBuYW1lLXZhbHVlIHBhaXJzIChkZXBlbmRpbmcgb24gaG93IGZvcmdpdmluZyB0aGUgbWF0Y2ggaXMpIC12cy0gNiwwMjAgZHluYW1pYyBydWxlcyAoTGVzc19UcmVlX1J1bGUpCiAqIFVzaW5nIHRoZSBuYW1lLXZhbHVlIG9iamVjdCBjYW4gc3BlZWQgdXAgYm9vdHN0cmFwIGNvbXBpbGF0aW9uIHNsaWdodGx5LCBidXQgaXQgYnJlYWtzIGNvbG9yIGtleXdvcmQgaW50ZXJwcmV0YXRpb246IGNvbG9yOnJlZCAtPiBjb2xvcjojRkYwMDAwOwogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9OYW1lVmFsdWUgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICRuYW1lOwoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCXB1YmxpYyAkdHlwZSA9ICdOYW1lVmFsdWUnOwoJcHVibGljICRpbXBvcnRhbnQgPSAnJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5hbWUsICR2YWx1ZSA9IG51bGwsICRpbmRleCA9IG51bGwsICRjdXJyZW50RmlsZUluZm8gPSBudWxsICl7CgkJJHRoaXMtPm5hbWUgPSAkbmFtZTsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CgkJJHRoaXMtPmluZGV4ID0gJGluZGV4OwoJCSR0aGlzLT5jdXJyZW50RmlsZUluZm8gPSAkY3VycmVudEZpbGVJbmZvOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCgkJJG91dHB1dC0+YWRkKAoJCQkkdGhpcy0+bmFtZQoJCQkuIExlc3NfRW52aXJvbm1lbnQ6OiRfb3V0cHV0TWFwWyc6ICddCgkJCS4gJHRoaXMtPnZhbHVlCgkJCS4gJHRoaXMtPmltcG9ydGFudAoJCQkuICgoKExlc3NfRW52aXJvbm1lbnQ6OiRsYXN0UnVsZSAmJiBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10pKSA/ICIiIDogIjsiKQoJCQksICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmRleCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUgKCRlbnYpewoJCXJldHVybiAkdGhpczsKCX0KCglwdWJsaWMgZnVuY3Rpb24gbWFrZUltcG9ydGFudCgpewoJCSRuZXcgPSBuZXcgTGVzc19UcmVlX05hbWVWYWx1ZSgkdGhpcy0+bmFtZSwgJHRoaXMtPnZhbHVlLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJCSRuZXctPmltcG9ydGFudCA9ICcgIWltcG9ydGFudCc7CgkJcmV0dXJuICRuZXc7Cgl9CgoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Negative.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBOZWdhdGl2ZQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9OZWdhdGl2ZSBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHZhbHVlOwoJcHVibGljICR0eXBlID0gJ05lZ2F0aXZlJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5vZGUpewoJCSR0aGlzLT52YWx1ZSA9ICRub2RlOwoJfQoKCS8vZnVuY3Rpb24gYWNjZXB0KCR2aXNpdG9yKSB7CgkvLwkkdGhpcy0+dmFsdWUgPSAkdmlzaXRvci0+dmlzaXQoJHRoaXMtPnZhbHVlKTsKCS8vfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAnLScgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpIHsKCQlpZiggTGVzc19FbnZpcm9ubWVudDo6aXNNYXRoT24oKSApewoJCQkkcmV0ID0gbmV3IExlc3NfVHJlZV9PcGVyYXRpb24oJyonLCBhcnJheSggbmV3IExlc3NfVHJlZV9EaW1lbnNpb24oLTEpLCAkdGhpcy0+dmFsdWUgKSApOwoJCQlyZXR1cm4gJHJldC0+Y29tcGlsZSgkZW52KTsKCQl9CgkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfTmVnYXRpdmUoICR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KSApOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Operation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBPcGVyYXRpb24KICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfT3BlcmF0aW9uIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkb3A7CglwdWJsaWMgJG9wZXJhbmRzOwoJcHVibGljICRpc1NwYWNlZDsKCXB1YmxpYyAkdHlwZSA9ICdPcGVyYXRpb24nOwoKCS8qKgoJICogQHBhcmFtIHN0cmluZyAkb3AKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvcCwgJG9wZXJhbmRzLCAkaXNTcGFjZWQgPSBmYWxzZSl7CgkJJHRoaXMtPm9wID0gdHJpbSgkb3ApOwoJCSR0aGlzLT5vcGVyYW5kcyA9ICRvcGVyYW5kczsKCQkkdGhpcy0+aXNTcGFjZWQgPSAkaXNTcGFjZWQ7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcikgewoJCSR0aGlzLT5vcGVyYW5kcyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5vcGVyYW5kcyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgkJJGEgPSAkdGhpcy0+b3BlcmFuZHNbMF0tPmNvbXBpbGUoJGVudik7CgkJJGIgPSAkdGhpcy0+b3BlcmFuZHNbMV0tPmNvbXBpbGUoJGVudik7CgoKCQlpZiggTGVzc19FbnZpcm9ubWVudDo6aXNNYXRoT24oKSApewoKCQkJaWYoICRhIGluc3RhbmNlb2YgTGVzc19UcmVlX0RpbWVuc2lvbiAmJiAkYiBpbnN0YW5jZW9mIExlc3NfVHJlZV9Db2xvciApewoJCQkJJGEgPSAkYS0+dG9Db2xvcigpOwoKCQkJfWVsc2VpZiggJGIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGltZW5zaW9uICYmICRhIGluc3RhbmNlb2YgTGVzc19UcmVlX0NvbG9yICl7CgkJCQkkYiA9ICRiLT50b0NvbG9yKCk7CgoJCQl9CgoJCQlpZiggIW1ldGhvZF9leGlzdHMoJGEsJ29wZXJhdGUnKSApewoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJPcGVyYXRpb24gb24gYW4gaW52YWxpZCB0eXBlIik7CgkJCX0KCgkJCXJldHVybiAkYS0+b3BlcmF0ZSggJHRoaXMtPm9wLCAkYik7CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9PcGVyYXRpb24oJHRoaXMtPm9wLCBhcnJheSgkYSwgJGIpLCAkdGhpcy0+aXNTcGFjZWQgKTsKCX0KCgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkdGhpcy0+b3BlcmFuZHNbMF0tPmdlbkNTUyggJG91dHB1dCApOwoJCWlmKCAkdGhpcy0+aXNTcGFjZWQgKXsKCQkJJG91dHB1dC0+YWRkKCAiICIgKTsKCQl9CgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+b3AgKTsKCQlpZiggJHRoaXMtPmlzU3BhY2VkICl7CgkJCSRvdXRwdXQtPmFkZCggJyAnICk7CgkJfQoJCSR0aGlzLT5vcGVyYW5kc1sxXS0+Z2VuQ1NTKCAkb3V0cHV0ICk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Paren.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBQYXJlbgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9QYXJlbiBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHZhbHVlOwoJcHVibGljICR0eXBlID0gJ1BhcmVuJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKSB7CgkJJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhY2NlcHQoJHZpc2l0b3IpewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaigkdGhpcy0+dmFsdWUpOwoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAnKCcgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJCSRvdXRwdXQtPmFkZCggJyknICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudikgewoJCXJldHVybiBuZXcgTGVzc19UcmVlX1BhcmVuKCR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Quoted.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBRdW90ZWQKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfUXVvdGVkIGV4dGVuZHMgTGVzc19UcmVlewoJcHVibGljICRlc2NhcGVkOwoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkcXVvdGU7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJHR5cGUgPSAnUXVvdGVkJzsKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0ciwgJGNvbnRlbnQgPSAnJywgJGVzY2FwZWQgPSBmYWxzZSwgJGluZGV4ID0gZmFsc2UsICRjdXJyZW50RmlsZUluZm8gPSBudWxsICl7CgkJJHRoaXMtPmVzY2FwZWQgPSAkZXNjYXBlZDsKCQkkdGhpcy0+dmFsdWUgPSAkY29udGVudDsKCQlpZiggJHN0ciApewoJCQkkdGhpcy0+cXVvdGUgPSAkc3RyWzBdOwoJCX0KCQkkdGhpcy0+aW5kZXggPSAkaW5kZXg7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQlpZiggISR0aGlzLT5lc2NhcGVkICl7CgkJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnF1b3RlLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+aW5kZXggKTsKICAgICAgICB9CiAgICAgICAgJG91dHB1dC0+YWRkKCAkdGhpcy0+dmFsdWUgKTsKICAgICAgICBpZiggISR0aGlzLT5lc2NhcGVkICl7CgkJCSRvdXRwdXQtPmFkZCggJHRoaXMtPnF1b3RlICk7CiAgICAgICAgfQogICAgfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpewoKCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CgkJaWYoIHByZWdfbWF0Y2hfYWxsKCcvYChbXmBdKylgLycsICR0aGlzLT52YWx1ZSwgJG1hdGNoZXMpICl7CgkJCWZvcmVhY2goJG1hdGNoZXMgYXMgJGkgPT4gJG1hdGNoKXsKCQkJCSRqcyA9IG5ldyBMZXNzX1RyZWVfSmF2YVNjcmlwdCgkbWF0Y2hlc1sxXSwgJHRoaXMtPmluZGV4LCB0cnVlKTsKCQkJCSRqcyA9ICRqcy0+Y29tcGlsZSgpLT52YWx1ZTsKCQkJCSR2YWx1ZSA9IHN0cl9yZXBsYWNlKCRtYXRjaGVzWzBdWyRpXSwgJGpzLCAkdmFsdWUpOwoJCQl9CgkJfQoKCQlpZiggcHJlZ19tYXRjaF9hbGwoJy9AXHsoW1x3LV0rKVx9LycsJHZhbHVlLCRtYXRjaGVzKSApewoJCQlmb3JlYWNoKCRtYXRjaGVzWzFdIGFzICRpID0+ICRtYXRjaCl7CgkJCQkkdiA9IG5ldyBMZXNzX1RyZWVfVmFyaWFibGUoJ0AnIC4gJG1hdGNoLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8gKTsKCQkJCSR2ID0gJHYtPmNvbXBpbGUoJGVudik7CgkJCQkkdiA9ICgkdiBpbnN0YW5jZW9mIExlc3NfVHJlZV9RdW90ZWQpID8gJHYtPnZhbHVlIDogJHYtPnRvQ1NTKCk7CgkJCQkkdmFsdWUgPSBzdHJfcmVwbGFjZSgkbWF0Y2hlc1swXVskaV0sICR2LCAkdmFsdWUpOwoJCQl9CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9RdW90ZWQoJHRoaXMtPnF1b3RlIC4gJHZhbHVlIC4gJHRoaXMtPnF1b3RlLCAkdmFsdWUsICR0aGlzLT5lc2NhcGVkLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKCR4KSB7CgoJCWlmKCAhTGVzc19QYXJzZXI6OmlzX21ldGhvZCgkeCwgJ3RvQ1NTJykgKXsKCQkJcmV0dXJuIC0xOwoJCX0KCgkJJGxlZnQgPSAkdGhpcy0+dG9DU1MoKTsKCQkkcmlnaHQgPSAkeC0+dG9DU1MoKTsKCgkJaWYgKCRsZWZ0ID09PSAkcmlnaHQpIHsKCQkJcmV0dXJuIDA7CgkJfQoKCQlyZXR1cm4gJGxlZnQgPCAkcmlnaHQgPyAtMSA6IDE7Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Rule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSdWxlCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX1J1bGUgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHVibGljICRuYW1lOwoJcHVibGljICR2YWx1ZTsKCXB1YmxpYyAkaW1wb3J0YW50OwoJcHVibGljICRtZXJnZTsKCXB1YmxpYyAkaW5kZXg7CglwdWJsaWMgJGlubGluZTsKCXB1YmxpYyAkdmFyaWFibGU7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbzsKCXB1YmxpYyAkdHlwZSA9ICdSdWxlJzsKCgkvKioKCSAqIEBwYXJhbSBzdHJpbmcgJGltcG9ydGFudAoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5hbWUsICR2YWx1ZSA9IG51bGwsICRpbXBvcnRhbnQgPSBudWxsLCAkbWVyZ2UgPSBudWxsLCAkaW5kZXggPSBudWxsLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgICRpbmxpbmUgPSBmYWxzZSl7CgkJJHRoaXMtPm5hbWUgPSAkbmFtZTsKCQkkdGhpcy0+dmFsdWUgPSAoJHZhbHVlIGluc3RhbmNlb2YgTGVzc19UcmVlX1ZhbHVlIHx8ICR2YWx1ZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlc2V0KSA/ICR2YWx1ZSA6IG5ldyBMZXNzX1RyZWVfVmFsdWUoYXJyYXkoJHZhbHVlKSk7CgkJJHRoaXMtPmltcG9ydGFudCA9ICRpbXBvcnRhbnQgPyAnICcgLiB0cmltKCRpbXBvcnRhbnQpIDogJyc7CgkJJHRoaXMtPm1lcmdlID0gJG1lcmdlOwoJCSR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKCQkkdGhpcy0+aW5saW5lID0gJGlubGluZTsKCQkkdGhpcy0+dmFyaWFibGUgPSAoIGlzX3N0cmluZygkbmFtZSkgJiYgJG5hbWVbMF0gPT09ICdAJyk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcikgewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaiggJHRoaXMtPnZhbHVlICk7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCgkJJG91dHB1dC0+YWRkKCAkdGhpcy0+bmFtZSAuIExlc3NfRW52aXJvbm1lbnQ6OiRfb3V0cHV0TWFwWyc6ICddLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+aW5kZXgpOwoJCXRyeXsKCQkJJHRoaXMtPnZhbHVlLT5nZW5DU1MoICRvdXRwdXQpOwoKCQl9Y2F0Y2goIExlc3NfRXhjZXB0aW9uX1BhcnNlciAkZSApewoJCQkkZS0+aW5kZXggPSAkdGhpcy0+aW5kZXg7CgkJCSRlLT5jdXJyZW50RmlsZSA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm87CgkJCXRocm93ICRlOwoJCX0KCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5pbXBvcnRhbnQgLiAoKCR0aGlzLT5pbmxpbmUgfHwgKExlc3NfRW52aXJvbm1lbnQ6OiRsYXN0UnVsZSAmJiBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2NvbXByZXNzJ10pKSA/ICIiIDogIjsiKSwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4KTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSAoJGVudil7CgoJCSRuYW1lID0gJHRoaXMtPm5hbWU7CgkJaWYoIGlzX2FycmF5KCRuYW1lKSApewoJCQkvLyBleHBhbmQgJ3ByaW1pdGl2ZScgbmFtZSBkaXJlY3RseSB0byBnZXQKCQkJLy8gdGhpbmdzIGZhc3RlciAofjEwJSBmb3IgYmVuY2htYXJrLmxlc3MpOgoJCQlpZiggY291bnQoJG5hbWUpID09PSAxICYmICRuYW1lWzBdIGluc3RhbmNlb2YgTGVzc19UcmVlX0tleXdvcmQgKXsKCQkJCSRuYW1lID0gJG5hbWVbMF0tPnZhbHVlOwoJCQl9ZWxzZXsKCQkJCSRuYW1lID0gJHRoaXMtPkNvbXBpbGVOYW1lKCRlbnYsJG5hbWUpOwoJCQl9CgkJfQoKCQkkc3RyaWN0TWF0aEJ5cGFzcyA9IExlc3NfUGFyc2VyOjokb3B0aW9uc1snc3RyaWN0TWF0aCddOwoJCWlmKCAkbmFtZSA9PT0gImZvbnQiICYmICFMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdE1hdGgnXSApewoJCQlMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdE1hdGgnXSA9IHRydWU7CgkJfQoKCQl0cnkgewoJCQkkZXZhbGRWYWx1ZSA9ICR0aGlzLT52YWx1ZS0+Y29tcGlsZSgkZW52KTsKCgkJCWlmKCAhJHRoaXMtPnZhcmlhYmxlICYmICRldmFsZFZhbHVlLT50eXBlID09PSAiRGV0YWNoZWRSdWxlc2V0IikgewoJCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJSdWxlc2V0cyBjYW5ub3QgYmUgZXZhbHVhdGVkIG9uIGEgcHJvcGVydHkuIiwgbnVsbCwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvKTsKCQkJfQoKCQkJaWYoIExlc3NfRW52aXJvbm1lbnQ6OiRtaXhpbl9zdGFjayApewoJCQkJJHJldHVybiA9IG5ldyBMZXNzX1RyZWVfUnVsZSgkbmFtZSwgJGV2YWxkVmFsdWUsICR0aGlzLT5pbXBvcnRhbnQsICR0aGlzLT5tZXJnZSwgJHRoaXMtPmluZGV4LCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvLCAkdGhpcy0+aW5saW5lKTsKCQkJfWVsc2V7CgkJCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJCQkJJHRoaXMtPnZhbHVlID0gJGV2YWxkVmFsdWU7CgkJCQkkcmV0dXJuID0gJHRoaXM7CgkJCX0KCgkJfWNhdGNoKCBMZXNzX0V4Y2VwdGlvbl9QYXJzZXIgJGUgKXsKCQkJaWYoICFpc19udW1lcmljKCRlLT5pbmRleCkgKXsKCQkJCSRlLT5pbmRleCA9ICR0aGlzLT5pbmRleDsKCQkJCSRlLT5jdXJyZW50RmlsZSA9ICR0aGlzLT5jdXJyZW50RmlsZUluZm87CgkJCX0KCQkJdGhyb3cgJGU7CgkJfQoKCQlMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdE1hdGgnXSA9ICRzdHJpY3RNYXRoQnlwYXNzOwoKCQlyZXR1cm4gJHJldHVybjsKCX0KCgogICAgcHVibGljIGZ1bmN0aW9uIENvbXBpbGVOYW1lKCAkZW52LCAkbmFtZSApewoJCSRvdXRwdXQgPSBuZXcgTGVzc19PdXRwdXQoKTsKCQlmb3JlYWNoKCRuYW1lIGFzICRuKXsKCQkJJG4tPmNvbXBpbGUoJGVudiktPmdlbkNTUygkb3V0cHV0KTsKCQl9CgkJcmV0dXJuICRvdXRwdXQtPnRvU3RyaW5nKCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIG1ha2VJbXBvcnRhbnQoKXsKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9SdWxlKCR0aGlzLT5uYW1lLCAkdGhpcy0+dmFsdWUsICchaW1wb3J0YW50JywgJHRoaXMtPm1lcmdlLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pbmxpbmUpOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Ruleset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSdWxlc2V0CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX1J1bGVzZXQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJcHJvdGVjdGVkICRsb29rdXBzOwoJcHVibGljICRfdmFyaWFibGVzOwoJcHVibGljICRfcnVsZXNldHM7CgoJcHVibGljICRzdHJpY3RJbXBvcnRzOwoKCXB1YmxpYyAkc2VsZWN0b3JzOwoJcHVibGljICRydWxlczsKCXB1YmxpYyAkcm9vdDsKCXB1YmxpYyAkYWxsb3dJbXBvcnRzOwoJcHVibGljICRwYXRoczsKCXB1YmxpYyAkZmlyc3RSb290OwoJcHVibGljICR0eXBlID0gJ1J1bGVzZXQnOwoJcHVibGljICRtdWx0aU1lZGlhOwoJcHVibGljICRhbGxFeHRlbmRzOwoKCXB1YmxpYyAkcnVsZXNldF9pZDsKCXB1YmxpYyAkb3JpZ2luYWxSdWxlc2V0OwoKCXB1YmxpYyAkZmlyc3Rfb2VsZW1lbnRzOwoKCXB1YmxpYyBmdW5jdGlvbiBTZXRSdWxlc2V0SW5kZXgoKXsKCQkkdGhpcy0+cnVsZXNldF9pZCA9IExlc3NfUGFyc2VyOjokbmV4dF9pZCsrOwoJCSR0aGlzLT5vcmlnaW5hbFJ1bGVzZXQgPSAkdGhpcy0+cnVsZXNldF9pZDsKCgkJaWYoICR0aGlzLT5zZWxlY3RvcnMgKXsKCQkJZm9yZWFjaCgkdGhpcy0+c2VsZWN0b3JzIGFzICRzZWwpewoJCQkJaWYoICRzZWwtPl9vZWxlbWVudHMgKXsKCQkJCQkkdGhpcy0+Zmlyc3Rfb2VsZW1lbnRzWyRzZWwtPl9vZWxlbWVudHNbMF1dID0gdHJ1ZTsKCQkJCX0KCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNlbGVjdG9ycywgJHJ1bGVzLCAkc3RyaWN0SW1wb3J0cyA9IG51bGwpewoJCSR0aGlzLT5zZWxlY3RvcnMgPSAkc2VsZWN0b3JzOwoJCSR0aGlzLT5ydWxlcyA9ICRydWxlczsKCQkkdGhpcy0+bG9va3VwcyA9IGFycmF5KCk7CgkJJHRoaXMtPnN0cmljdEltcG9ydHMgPSAkc3RyaWN0SW1wb3J0czsKCQkkdGhpcy0+U2V0UnVsZXNldEluZGV4KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGFjY2VwdCggJHZpc2l0b3IgKXsKCQlpZiggJHRoaXMtPnBhdGhzICl7CgkJCSRwYXRoc19sZW4gPSBjb3VudCgkdGhpcy0+cGF0aHMpOwoJCQlmb3IoJGkgPSAwLCRwYXRoc19sZW47ICRpIDwgJHBhdGhzX2xlbjsgJGkrKyApewoJCQkJJHRoaXMtPnBhdGhzWyRpXSA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5wYXRoc1skaV0pOwoJCQl9CgkJfWVsc2VpZiggJHRoaXMtPnNlbGVjdG9ycyApewoJCQkkdGhpcy0+c2VsZWN0b3JzID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoJHRoaXMtPnNlbGVjdG9ycyk7CgkJfQoKCQlpZiggJHRoaXMtPnJ1bGVzICl7CgkJCSR0aGlzLT5ydWxlcyA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5ydWxlcyk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCRlbnYpewoKCQkkcnVsZXNldCA9ICR0aGlzLT5QcmVwYXJlUnVsZXNldCgkZW52KTsKCgoJCS8vIFN0b3JlIHRoZSBmcmFtZXMgYXJvdW5kIG1peGluIGRlZmluaXRpb25zLAoJCS8vIHNvIHRoZXkgY2FuIGJlIGV2YWx1YXRlZCBsaWtlIGNsb3N1cmVzIHdoZW4gdGhlIHRpbWUgY29tZXMuCgkJJHJzUnVsZUNudCA9IGNvdW50KCRydWxlc2V0LT5ydWxlcyk7CgkJZm9yKCAkaSA9IDA7ICRpIDwgJHJzUnVsZUNudDsgJGkrKyApewoJCQlpZiggJHJ1bGVzZXQtPnJ1bGVzWyRpXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uIHx8ICRydWxlc2V0LT5ydWxlc1skaV0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0ICl7CgkJCQkkcnVsZXNldC0+cnVsZXNbJGldID0gJHJ1bGVzZXQtPnJ1bGVzWyRpXS0+Y29tcGlsZSgkZW52KTsKCQkJfQoJCX0KCgkJJG1lZGlhQmxvY2tDb3VudCA9IDA7CgkJaWYoICRlbnYgaW5zdGFuY2VvZiBMZXNzX0Vudmlyb25tZW50ICl7CgkJCSRtZWRpYUJsb2NrQ291bnQgPSBjb3VudCgkZW52LT5tZWRpYUJsb2Nrcyk7CgkJfQoKCQkvLyBFdmFsdWF0ZSBtaXhpbiBjYWxscy4KCQkkdGhpcy0+RXZhbE1peGluQ2FsbHMoICRydWxlc2V0LCAkZW52LCAkcnNSdWxlQ250ICk7CgoKCQkvLyBFdmFsdWF0ZSBldmVyeXRoaW5nIGVsc2UKCQlmb3IoICRpPTA7ICRpPCRyc1J1bGVDbnQ7ICRpKysgKXsKCQkJaWYoISAoJHJ1bGVzZXQtPnJ1bGVzWyRpXSBpbnN0YW5jZW9mIExlc3NfVHJlZV9NaXhpbl9EZWZpbml0aW9uIHx8ICRydWxlc2V0LT5ydWxlc1skaV0gaW5zdGFuY2VvZiBMZXNzX1RyZWVfRGV0YWNoZWRSdWxlc2V0KSApewoJCQkJJHJ1bGVzZXQtPnJ1bGVzWyRpXSA9ICRydWxlc2V0LT5ydWxlc1skaV0tPmNvbXBpbGUoJGVudik7CgkJCX0KCQl9CgogICAgICAgIC8vIEV2YWx1YXRlIGV2ZXJ5dGhpbmcgZWxzZQoJCWZvciggJGk9MDsgJGk8JHJzUnVsZUNudDsgJGkrKyApewoJCQkkcnVsZSA9ICRydWxlc2V0LT5ydWxlc1skaV07CgogICAgICAgICAgICAvLyBmb3IgcnVsZXNldHMsIGNoZWNrIGlmIGl0IGlzIGEgY3NzIGd1YXJkIGFuZCBjYW4gYmUgcmVtb3ZlZAoJCQlpZiggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldCAmJiAkcnVsZS0+c2VsZWN0b3JzICYmIGNvdW50KCRydWxlLT5zZWxlY3RvcnMpID09PSAxICl7CgogICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaXQgY2FuIGJlIGZvbGRlZCBpbiAoZS5nLiAmIHdoZXJlKQoJCQkJaWYoICRydWxlLT5zZWxlY3RvcnNbMF0tPmlzSnVzdFBhcmVudFNlbGVjdG9yKCkgKXsKCQkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzZXQtPnJ1bGVzLCRpLS0sMSk7CgkJCQkJJHJzUnVsZUNudC0tOwoKCQkJCQlmb3IoJGogPSAwOyAkaiA8IGNvdW50KCRydWxlLT5ydWxlcyk7ICRqKysgKXsKCQkJCQkJJHN1YlJ1bGUgPSAkcnVsZS0+cnVsZXNbJGpdOwoJCQkJCQlpZiggISgkc3ViUnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlKSB8fCAhJHN1YlJ1bGUtPnZhcmlhYmxlICl7CgkJCQkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzZXQtPnJ1bGVzLCArKyRpLCAwLCBhcnJheSgkc3ViUnVsZSkpOwoJCQkJCQkJJHJzUnVsZUNudCsrOwoJCQkJCQl9CgkJCQkJfQoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCgoJCS8vIFBvcCB0aGUgc3RhY2sKCQkkZW52LT5zaGlmdEZyYW1lKCk7CgoJCWlmICgkbWVkaWFCbG9ja0NvdW50KSB7CgkJCSRsZW4gPSBjb3VudCgkZW52LT5tZWRpYUJsb2Nrcyk7CgkJCWZvcigkaSA9ICRtZWRpYUJsb2NrQ291bnQ7ICRpIDwgJGxlbjsgJGkrKyApewoJCQkJJGVudi0+bWVkaWFCbG9ja3NbJGldLT5idWJibGVTZWxlY3RvcnMoJHJ1bGVzZXQtPnNlbGVjdG9ycyk7CgkJCX0KCQl9CgoJCXJldHVybiAkcnVsZXNldDsKCX0KCgkvKioKCSAqIENvbXBpbGUgTGVzc19UcmVlX01peGluX0NhbGwgb2JqZWN0cwoJICoKCSAqIEBwYXJhbSBMZXNzX1RyZWVfUnVsZXNldCAkcnVsZXNldAoJICogQHBhcmFtIGludGVnZXIgJHJzUnVsZUNudAoJICovCglwcml2YXRlIGZ1bmN0aW9uIEV2YWxNaXhpbkNhbGxzKCAkcnVsZXNldCwgJGVudiwgJiRyc1J1bGVDbnQgKXsKCQlmb3IoJGk9MDsgJGkgPCAkcnNSdWxlQ250OyAkaSsrKXsKCQkJJHJ1bGUgPSAkcnVsZXNldC0+cnVsZXNbJGldOwoKCQkJaWYoICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX01peGluX0NhbGwgKXsKCQkJCSRydWxlID0gJHJ1bGUtPmNvbXBpbGUoJGVudik7CgoJCQkJJHRlbXAgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCgkcnVsZSBhcyAkcil7CgkJCQkJaWYoICgkciBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlKSAmJiAkci0+dmFyaWFibGUgKXsKCQkJCQkJLy8gZG8gbm90IHBvbGx1dGUgdGhlIHNjb3BlIGlmIHRoZSB2YXJpYWJsZSBpcwoJCQkJCQkvLyBhbHJlYWR5IHRoZXJlLiBjb25zaWRlciByZXR1cm5pbmcgZmFsc2UgaGVyZQoJCQkJCQkvLyBidXQgd2UgbmVlZCBhIHdheSB0byAicmV0dXJuIiB2YXJpYWJsZSBmcm9tIG1peGlucwoJCQkJCQlpZiggISRydWxlc2V0LT52YXJpYWJsZSgkci0+bmFtZSkgKXsKCQkJCQkJCSR0ZW1wW10gPSAkcjsKCQkJCQkJfQoJCQkJCX1lbHNlewoJCQkJCQkkdGVtcFtdID0gJHI7CgkJCQkJfQoJCQkJfQoJCQkJJHRlbXBfY291bnQgPSBjb3VudCgkdGVtcCktMTsKCQkJCWFycmF5X3NwbGljZSgkcnVsZXNldC0+cnVsZXMsICRpLCAxLCAkdGVtcCk7CgkJCQkkcnNSdWxlQ250ICs9ICR0ZW1wX2NvdW50OwoJCQkJJGkgKz0gJHRlbXBfY291bnQ7CgkJCQkkcnVsZXNldC0+cmVzZXRDYWNoZSgpOwoKCQkJfWVsc2VpZiggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldENhbGwgKXsKCgkJCQkkcnVsZSA9ICRydWxlLT5jb21waWxlKCRlbnYpOwoJCQkJJHJ1bGVzID0gYXJyYXkoKTsKCQkJCWZvcmVhY2goJHJ1bGUtPnJ1bGVzIGFzICRyKXsKCQkJCQlpZiggKCRyIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGUpICYmICRyLT52YXJpYWJsZSApewoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJJHJ1bGVzW10gPSAkcjsKCQkJCX0KCgkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzZXQtPnJ1bGVzLCAkaSwgMSwgJHJ1bGVzKTsKCQkJCSR0ZW1wX2NvdW50ID0gY291bnQoJHJ1bGVzKTsKCQkJCSRyc1J1bGVDbnQgKz0gJHRlbXBfY291bnQgLSAxOwoJCQkJJGkgKz0gJHRlbXBfY291bnQtMTsKCQkJCSRydWxlc2V0LT5yZXNldENhY2hlKCk7CgkJCX0KCgkJfQoJfQoKCgkvKioKCSAqIENvbXBpbGUgdGhlIHNlbGVjdG9ycyBhbmQgY3JlYXRlIGEgbmV3IHJ1bGVzZXQgb2JqZWN0IGZvciB0aGUgY29tcGlsZSgpIG1ldGhvZAoJICoKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBQcmVwYXJlUnVsZXNldCgkZW52KXsKCgkJJGhhc09uZVBhc3NpbmdTZWxlY3RvciA9IGZhbHNlOwoJCSRzZWxlY3RvcnMgPSBhcnJheSgpOwoJCWlmKCAkdGhpcy0+c2VsZWN0b3JzICl7CgkJCUxlc3NfVHJlZV9EZWZhdWx0RnVuYzo6ZXJyb3IoIml0IGlzIGN1cnJlbnRseSBvbmx5IGFsbG93ZWQgaW4gcGFyYW1ldHJpYyBtaXhpbiBndWFyZHMsIik7CgoJCQlmb3JlYWNoKCR0aGlzLT5zZWxlY3RvcnMgYXMgJHMpewoJCQkJJHNlbGVjdG9yID0gJHMtPmNvbXBpbGUoJGVudik7CgkJCQkkc2VsZWN0b3JzW10gPSAkc2VsZWN0b3I7CgkJCQlpZiggJHNlbGVjdG9yLT5ldmFsZENvbmRpdGlvbiApewoJCQkJCSRoYXNPbmVQYXNzaW5nU2VsZWN0b3IgPSB0cnVlOwoJCQkJfQoJCQl9CgoJCQlMZXNzX1RyZWVfRGVmYXVsdEZ1bmM6OnJlc2V0KCk7CgkJfSBlbHNlIHsKCQkJJGhhc09uZVBhc3NpbmdTZWxlY3RvciA9IHRydWU7CgkJfQoKCQlpZiggJHRoaXMtPnJ1bGVzICYmICRoYXNPbmVQYXNzaW5nU2VsZWN0b3IgKXsKCQkJJHJ1bGVzID0gJHRoaXMtPnJ1bGVzOwoJCX1lbHNlewoJCQkkcnVsZXMgPSBhcnJheSgpOwoJCX0KCgkJJHJ1bGVzZXQgPSBuZXcgTGVzc19UcmVlX1J1bGVzZXQoJHNlbGVjdG9ycywgJHJ1bGVzLCAkdGhpcy0+c3RyaWN0SW1wb3J0cyk7CgoJCSRydWxlc2V0LT5vcmlnaW5hbFJ1bGVzZXQgPSAkdGhpcy0+cnVsZXNldF9pZDsKCgkJJHJ1bGVzZXQtPnJvb3QgPSAkdGhpcy0+cm9vdDsKCQkkcnVsZXNldC0+Zmlyc3RSb290ID0gJHRoaXMtPmZpcnN0Um9vdDsKCQkkcnVsZXNldC0+YWxsb3dJbXBvcnRzID0gJHRoaXMtPmFsbG93SW1wb3J0czsKCgoJCS8vIHB1c2ggdGhlIGN1cnJlbnQgcnVsZXNldCB0byB0aGUgZnJhbWVzIHN0YWNrCgkJJGVudi0+dW5zaGlmdEZyYW1lKCRydWxlc2V0KTsKCgoJCS8vIEV2YWx1YXRlIGltcG9ydHMKCQlpZiggJHJ1bGVzZXQtPnJvb3QgfHwgJHJ1bGVzZXQtPmFsbG93SW1wb3J0cyB8fCAhJHJ1bGVzZXQtPnN0cmljdEltcG9ydHMgKXsKCQkJJHJ1bGVzZXQtPmV2YWxJbXBvcnRzKCRlbnYpOwoJCX0KCgkJcmV0dXJuICRydWxlc2V0OwoJfQoKCWZ1bmN0aW9uIGV2YWxJbXBvcnRzKCRlbnYpIHsKCgkJJHJ1bGVzX2xlbiA9IGNvdW50KCR0aGlzLT5ydWxlcyk7CgkJZm9yKCRpPTA7ICRpIDwgJHJ1bGVzX2xlbjsgJGkrKyl7CgkJCSRydWxlID0gJHRoaXMtPnJ1bGVzWyRpXTsKCgkJCWlmKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9JbXBvcnQgKXsKCQkJCSRydWxlcyA9ICRydWxlLT5jb21waWxlKCRlbnYpOwoJCQkJaWYoIGlzX2FycmF5KCRydWxlcykgKXsKCQkJCQlhcnJheV9zcGxpY2UoJHRoaXMtPnJ1bGVzLCAkaSwgMSwgJHJ1bGVzKTsKCQkJCQkkdGVtcF9jb3VudCA9IGNvdW50KCRydWxlcyktMTsKCQkJCQkkaSArPSAkdGVtcF9jb3VudDsKCQkJCQkkcnVsZXNfbGVuICs9ICR0ZW1wX2NvdW50OwoJCQkJfWVsc2V7CgkJCQkJYXJyYXlfc3BsaWNlKCR0aGlzLT5ydWxlcywgJGksIDEsIGFycmF5KCRydWxlcykpOwoJCQkJfQoKCQkJCSR0aGlzLT5yZXNldENhY2hlKCk7CgkJCX0KCQl9Cgl9CgoJZnVuY3Rpb24gbWFrZUltcG9ydGFudCgpewoKCQkkaW1wb3J0YW50X3J1bGVzID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR0aGlzLT5ydWxlcyBhcyAkcnVsZSl7CgkJCWlmKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlIHx8ICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGVzZXQgfHwgJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfTmFtZVZhbHVlICl7CgkJCQkkaW1wb3J0YW50X3J1bGVzW10gPSAkcnVsZS0+bWFrZUltcG9ydGFudCgpOwoJCQl9ZWxzZXsKCQkJCSRpbXBvcnRhbnRfcnVsZXNbXSA9ICRydWxlOwoJCQl9CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9SdWxlc2V0KCR0aGlzLT5zZWxlY3RvcnMsICRpbXBvcnRhbnRfcnVsZXMsICR0aGlzLT5zdHJpY3RJbXBvcnRzICk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIG1hdGNoQXJncygkYXJncyl7CgkJcmV0dXJuICEkYXJnczsKCX0KCgkvLyBsZXRzIHlvdSBjYWxsIGEgY3NzIHNlbGVjdG9yIHdpdGggYSBndWFyZAoJcHVibGljIGZ1bmN0aW9uIG1hdGNoQ29uZGl0aW9uKCAkYXJncywgJGVudiApewoJCSRsYXN0U2VsZWN0b3IgPSBlbmQoJHRoaXMtPnNlbGVjdG9ycyk7CgoJCWlmKCAhJGxhc3RTZWxlY3Rvci0+ZXZhbGRDb25kaXRpb24gKXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlpZiggJGxhc3RTZWxlY3Rvci0+Y29uZGl0aW9uICYmICEkbGFzdFNlbGVjdG9yLT5jb25kaXRpb24tPmNvbXBpbGUoICRlbnYtPmNvcHlFdmFsRW52KCAkZW52LT5mcmFtZXMgKSApICl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJZnVuY3Rpb24gcmVzZXRDYWNoZSgpewoJCSR0aGlzLT5fcnVsZXNldHMgPSBudWxsOwoJCSR0aGlzLT5fdmFyaWFibGVzID0gbnVsbDsKCQkkdGhpcy0+bG9va3VwcyA9IGFycmF5KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZhcmlhYmxlcygpewoJCSR0aGlzLT5fdmFyaWFibGVzID0gYXJyYXkoKTsKCQlmb3JlYWNoKCAkdGhpcy0+cnVsZXMgYXMgJHIpewoJCQlpZiAoJHIgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZSAmJiAkci0+dmFyaWFibGUgPT09IHRydWUpIHsKCQkJCSR0aGlzLT5fdmFyaWFibGVzWyRyLT5uYW1lXSA9ICRyOwoJCQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2YXJpYWJsZSgkbmFtZSl7CgoJCWlmKCBpc19udWxsKCR0aGlzLT5fdmFyaWFibGVzKSApewoJCQkkdGhpcy0+dmFyaWFibGVzKCk7CgkJfQoJCXJldHVybiBpc3NldCgkdGhpcy0+X3ZhcmlhYmxlc1skbmFtZV0pID8gJHRoaXMtPl92YXJpYWJsZXNbJG5hbWVdIDogbnVsbDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZmluZCggJHNlbGVjdG9yLCAkc2VsZiA9IG51bGwgKXsKCgkJJGtleSA9IGltcGxvZGUoJyAnLCRzZWxlY3Rvci0+X29lbGVtZW50cyk7CgoJCWlmKCAhaXNzZXQoJHRoaXMtPmxvb2t1cHNbJGtleV0pICl7CgoJCQlpZiggISRzZWxmICl7CgkJCQkkc2VsZiA9ICR0aGlzLT5ydWxlc2V0X2lkOwoJCQl9CgoJCQkkdGhpcy0+bG9va3Vwc1ska2V5XSA9IGFycmF5KCk7CgoJCQkkZmlyc3Rfb2VsZW1lbnQgPSAkc2VsZWN0b3ItPl9vZWxlbWVudHNbMF07CgoJCQlmb3JlYWNoKCR0aGlzLT5ydWxlcyBhcyAkcnVsZSl7CgkJCQlpZiggJHJ1bGUgaW5zdGFuY2VvZiBMZXNzX1RyZWVfUnVsZXNldCAmJiAkcnVsZS0+cnVsZXNldF9pZCAhPSAkc2VsZiApewoKCQkJCQlpZiggaXNzZXQoJHJ1bGUtPmZpcnN0X29lbGVtZW50c1skZmlyc3Rfb2VsZW1lbnRdKSApewoKCQkJCQkJZm9yZWFjaCggJHJ1bGUtPnNlbGVjdG9ycyBhcyAkcnVsZVNlbGVjdG9yICl7CgkJCQkJCQkkbWF0Y2ggPSAkc2VsZWN0b3ItPm1hdGNoKCRydWxlU2VsZWN0b3IpOwoJCQkJCQkJaWYoICRtYXRjaCApewoJCQkJCQkJCWlmKCAkc2VsZWN0b3ItPmVsZW1lbnRzX2xlbiA+ICRtYXRjaCApewoJCQkJCQkJCQkkdGhpcy0+bG9va3Vwc1ska2V5XSA9IGFycmF5X21lcmdlKCR0aGlzLT5sb29rdXBzWyRrZXldLCAkcnVsZS0+ZmluZCggbmV3IExlc3NfVHJlZV9TZWxlY3RvcihhcnJheV9zbGljZSgkc2VsZWN0b3ItPmVsZW1lbnRzLCAkbWF0Y2gpKSwgJHNlbGYpKTsKCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQkkdGhpcy0+bG9va3Vwc1ska2V5XVtdID0gJHJ1bGU7CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gJHRoaXMtPmxvb2t1cHNbJGtleV07Cgl9CgoKCS8qKgoJICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgoJCWlmKCAhJHRoaXMtPnJvb3QgKXsKCQkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsKys7CgkJfQoKCQkkdGFiUnVsZVN0ciA9ICR0YWJTZXRTdHIgPSAnJzsKCQlpZiggIUxlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSApewoJCQlpZiggTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsICl7CgkJCQkkdGFiUnVsZVN0ciA9ICJcbiIuc3RyX3JlcGVhdCggTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbmRlbnRhdGlvbiddICwgTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsICk7CgkJCQkkdGFiU2V0U3RyID0gIlxuIi5zdHJfcmVwZWF0KCBMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ2luZGVudGF0aW9uJ10gLCBMZXNzX0Vudmlyb25tZW50OjokdGFiTGV2ZWwtMSApOwoJCQl9ZWxzZXsKCQkJCSR0YWJTZXRTdHIgPSAkdGFiUnVsZVN0ciA9ICJcbiI7CgkJCX0KCQl9CgoKCQkkcnVsZU5vZGVzID0gYXJyYXkoKTsKCQkkcnVsZXNldE5vZGVzID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR0aGlzLT5ydWxlcyBhcyAkcnVsZSl7CgoJCQkkY2xhc3MgPSBnZXRfY2xhc3MoJHJ1bGUpOwoJCQlpZiggKCRjbGFzcyA9PT0gJ0xlc3NfVHJlZV9NZWRpYScpIHx8ICgkY2xhc3MgPT09ICdMZXNzX1RyZWVfRGlyZWN0aXZlJykgfHwgKCR0aGlzLT5yb290ICYmICRjbGFzcyA9PT0gJ0xlc3NfVHJlZV9Db21tZW50JykgfHwgKCRjbGFzcyA9PT0gJ0xlc3NfVHJlZV9SdWxlc2V0JyAmJiAkcnVsZS0+cnVsZXMpICl7CgkJCQkkcnVsZXNldE5vZGVzW10gPSAkcnVsZTsKCQkJfWVsc2V7CgkJCQkkcnVsZU5vZGVzW10gPSAkcnVsZTsKCQkJfQoJCX0KCgkJLy8gSWYgdGhpcyBpcyB0aGUgcm9vdCBub2RlLCB3ZSBkb24ndCByZW5kZXIKCQkvLyBhIHNlbGVjdG9yLCBvciB7fS4KCQlpZiggISR0aGlzLT5yb290ICl7CgoJCQkvKgoJCQlkZWJ1Z0luZm8gPSB0cmVlLmRlYnVnSW5mbyhlbnYsIHRoaXMsIHRhYlNldFN0cik7CgoJCQlpZiAoZGVidWdJbmZvKSB7CgkJCQlvdXRwdXQuYWRkKGRlYnVnSW5mbyk7CgkJCQlvdXRwdXQuYWRkKHRhYlNldFN0cik7CgkJCX0KCQkJKi8KCgkJCSRwYXRoc19sZW4gPSBjb3VudCgkdGhpcy0+cGF0aHMpOwoJCQlmb3IoICRpID0gMDsgJGkgPCAkcGF0aHNfbGVuOyAkaSsrICl7CgkJCQkkcGF0aCA9ICR0aGlzLT5wYXRoc1skaV07CgkJCQkkZmlyc3RTZWxlY3RvciA9IHRydWU7CgoJCQkJZm9yZWFjaCgkcGF0aCBhcyAkcCl7CgkJCQkJJHAtPmdlbkNTUyggJG91dHB1dCwgJGZpcnN0U2VsZWN0b3IgKTsKCQkJCQkkZmlyc3RTZWxlY3RvciA9IGZhbHNlOwoJCQkJfQoKCQkJCWlmKCAkaSArIDEgPCAkcGF0aHNfbGVuICl7CgkJCQkJJG91dHB1dC0+YWRkKCAnLCcgLiAkdGFiU2V0U3RyICk7CgkJCQl9CgkJCX0KCgkJCSRvdXRwdXQtPmFkZCggKExlc3NfUGFyc2VyOjokb3B0aW9uc1snY29tcHJlc3MnXSA/ICd7JyA6ICIgeyIpIC4gJHRhYlJ1bGVTdHIgKTsKCQl9CgoJCS8vIENvbXBpbGUgcnVsZXMgYW5kIHJ1bGVzZXRzCgkJJHJ1bGVOb2Rlc19sZW4gPSBjb3VudCgkcnVsZU5vZGVzKTsKCQkkcnVsZXNldE5vZGVzX2xlbiA9IGNvdW50KCRydWxlc2V0Tm9kZXMpOwoJCWZvciggJGkgPSAwOyAkaSA8ICRydWxlTm9kZXNfbGVuOyAkaSsrICl7CgkJCSRydWxlID0gJHJ1bGVOb2Rlc1skaV07CgoJCQkvLyBAcGFnZXsgZGlyZWN0aXZlIGVuZHMgdXAgd2l0aCByb290IGVsZW1lbnRzIGluc2lkZSBpdCwgYSBtaXggb2YgcnVsZXMgYW5kIHJ1bGVzZXRzCgkJCS8vIEluIHRoaXMgaW5zdGFuY2Ugd2UgZG8gbm90IGtub3cgd2hldGhlciBpdCBpcyB0aGUgbGFzdCBwcm9wZXJ0eQoJCQlpZiggJGkgKyAxID09PSAkcnVsZU5vZGVzX2xlbiAmJiAoISR0aGlzLT5yb290IHx8ICRydWxlc2V0Tm9kZXNfbGVuID09PSAwIHx8ICR0aGlzLT5maXJzdFJvb3QgKSApewoJCQkJTGVzc19FbnZpcm9ubWVudDo6JGxhc3RSdWxlID0gdHJ1ZTsKCQkJfQoKCQkJJHJ1bGUtPmdlbkNTUyggJG91dHB1dCApOwoKCQkJaWYoICFMZXNzX0Vudmlyb25tZW50OjokbGFzdFJ1bGUgKXsKCQkJCSRvdXRwdXQtPmFkZCggJHRhYlJ1bGVTdHIgKTsKCQkJfWVsc2V7CgkJCQlMZXNzX0Vudmlyb25tZW50OjokbGFzdFJ1bGUgPSBmYWxzZTsKCQkJfQoJCX0KCgkJaWYoICEkdGhpcy0+cm9vdCApewoJCQkkb3V0cHV0LT5hZGQoICR0YWJTZXRTdHIgLiAnfScgKTsKCQkJTGVzc19FbnZpcm9ubWVudDo6JHRhYkxldmVsLS07CgkJfQoKCQkkZmlyc3RSdWxlc2V0ID0gdHJ1ZTsKCQkkc3BhY2UgPSAoJHRoaXMtPnJvb3QgPyAkdGFiUnVsZVN0ciA6ICR0YWJTZXRTdHIpOwoJCWZvciggJGkgPSAwOyAkaSA8ICRydWxlc2V0Tm9kZXNfbGVuOyAkaSsrICl7CgoJCQlpZiggJHJ1bGVOb2Rlc19sZW4gJiYgJGZpcnN0UnVsZXNldCApewoJCQkJJG91dHB1dC0+YWRkKCAkc3BhY2UgKTsKCQkJfWVsc2VpZiggISRmaXJzdFJ1bGVzZXQgKXsKCQkJCSRvdXRwdXQtPmFkZCggJHNwYWNlICk7CgkJCX0KCQkJJGZpcnN0UnVsZXNldCA9IGZhbHNlOwoJCQkkcnVsZXNldE5vZGVzWyRpXS0+Z2VuQ1NTKCAkb3V0cHV0KTsKCQl9CgoJCWlmKCAhTGVzc19QYXJzZXI6OiRvcHRpb25zWydjb21wcmVzcyddICYmICR0aGlzLT5maXJzdFJvb3QgKXsKCQkJJG91dHB1dC0+YWRkKCAiXG4iICk7CgkJfQoKCX0KCgoJZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKXsKCQlpZiggISR0aGlzLT5zZWxlY3RvcnMgKXsKCQkJcmV0dXJuOwoJCX0KCQlmb3JlYWNoKCR0aGlzLT5zZWxlY3RvcnMgYXMgJHNlbGVjdG9yKXsKCQkJJHNlbGVjdG9yLT5tYXJrUmVmZXJlbmNlZCgpOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gam9pblNlbGVjdG9ycyggJGNvbnRleHQsICRzZWxlY3RvcnMgKXsKCQkkcGF0aHMgPSBhcnJheSgpOwoJCWlmKCBpc19hcnJheSgkc2VsZWN0b3JzKSApewoJCQlmb3JlYWNoKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yKSB7CgkJCQkkdGhpcy0+am9pblNlbGVjdG9yKCAkcGF0aHMsICRjb250ZXh0LCAkc2VsZWN0b3IpOwoJCQl9CgkJfQoJCXJldHVybiAkcGF0aHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGpvaW5TZWxlY3RvciggJiRwYXRocywgJGNvbnRleHQsICRzZWxlY3Rvcil7CgoJCSRoYXNQYXJlbnRTZWxlY3RvciA9IGZhbHNlOwoKCQlmb3JlYWNoKCRzZWxlY3Rvci0+ZWxlbWVudHMgYXMgJGVsKSB7CgkJCWlmKCAkZWwtPnZhbHVlID09PSAnJicpIHsKCQkJCSRoYXNQYXJlbnRTZWxlY3RvciA9IHRydWU7CgkJCX0KCQl9CgoJCWlmKCAhJGhhc1BhcmVudFNlbGVjdG9yICl7CgkJCWlmKCAkY29udGV4dCApewoJCQkJZm9yZWFjaCgkY29udGV4dCBhcyAkY29udGV4dF9lbCl7CgkJCQkJJHBhdGhzW10gPSBhcnJheV9tZXJnZSgkY29udGV4dF9lbCwgYXJyYXkoJHNlbGVjdG9yKSApOwoJCQkJfQoJCQl9ZWxzZSB7CgkJCQkkcGF0aHNbXSA9IGFycmF5KCRzZWxlY3Rvcik7CgkJCX0KCQkJcmV0dXJuOwoJCX0KCgoJCS8vIFRoZSBwYXRocyBhcmUgW1tTZWxlY3Rvcl1dCgkJLy8gVGhlIGZpcnN0IGxpc3QgaXMgYSBsaXN0IG9mIGNvbW1hIHNlcGVyYXRlZCBzZWxlY3RvcnMKCQkvLyBUaGUgaW5uZXIgbGlzdCBpcyBhIGxpc3Qgb2YgaW5oZXJpdGFuY2Ugc2VwZXJhdGVkIHNlbGVjdG9ycwoJCS8vIGUuZy4KCQkvLyAuYSwgLmIgewoJCS8vICAgLmMgewoJCS8vICAgfQoJCS8vIH0KCQkvLyA9PSBbWy5hXSBbLmNdXSBbWy5iXSBbLmNdXQoJCS8vCgoJCS8vIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdG9yIHNvIGZhcgoJCSRjdXJyZW50RWxlbWVudHMgPSBhcnJheSgpOwoJCS8vIHRoZSBjdXJyZW50IGxpc3Qgb2YgbmV3IHNlbGVjdG9ycyB0byBhZGQgdG8gdGhlIHBhdGguCgkJLy8gV2Ugd2lsbCBidWlsZCBpdCB1cC4gV2UgaW5pdGlhdGUgaXQgd2l0aCBvbmUgZW1wdHkgc2VsZWN0b3IgYXMgd2UgIm11bHRpcGx5IiB0aGUgbmV3IHNlbGVjdG9ycwoJCS8vIGJ5IHRoZSBwYXJlbnRzCgkJJG5ld1NlbGVjdG9ycyA9IGFycmF5KGFycmF5KCkpOwoKCgkJZm9yZWFjaCggJHNlbGVjdG9yLT5lbGVtZW50cyBhcyAkZWwpewoKCQkJLy8gbm9uIHBhcmVudCByZWZlcmVuY2UgZWxlbWVudHMganVzdCBnZXQgYWRkZWQKCQkJaWYoICRlbC0+dmFsdWUgIT09ICcmJyApewoJCQkJJGN1cnJlbnRFbGVtZW50c1tdID0gJGVsOwoJCQl9IGVsc2UgewoJCQkJLy8gdGhlIG5ldyBsaXN0IG9mIHNlbGVjdG9ycyB0byBhZGQKCQkJCSRzZWxlY3RvcnNNdWx0aXBsaWVkID0gYXJyYXkoKTsKCgkJCQkvLyBtZXJnZSB0aGUgY3VycmVudCBsaXN0IG9mIG5vbiBwYXJlbnQgc2VsZWN0b3IgZWxlbWVudHMKCQkJCS8vIG9uIHRvIHRoZSBjdXJyZW50IGxpc3Qgb2Ygc2VsZWN0b3JzIHRvIGFkZAoJCQkJaWYoICRjdXJyZW50RWxlbWVudHMgKXsKCQkJCQkkdGhpcy0+bWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoICRjdXJyZW50RWxlbWVudHMsICRuZXdTZWxlY3RvcnMpOwoJCQkJfQoKCQkJCS8vIGxvb3AgdGhyb3VnaCBvdXIgY3VycmVudCBzZWxlY3RvcnMKCQkJCWZvcmVhY2goJG5ld1NlbGVjdG9ycyBhcyAkc2VsKXsKCgkJCQkJLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhbnkgcGFyZW50IHBhdGhzLCB0aGUgJiBtaWdodCBiZSBpbiBhIG1peGluIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQKCQkJCQkvLyB3aGV0aGVyIHRoZXJlIGFyZSBwYXJlbnRzIG9yIG5vdAoJCQkJCWlmKCAhJGNvbnRleHQgKXsKCQkJCQkJLy8gdGhlIGNvbWJpbmF0b3IgdXNlZCBvbiBlbCBzaG91bGQgbm93IGJlIGFwcGxpZWQgdG8gdGhlIG5leHQgZWxlbWVudCBpbnN0ZWFkIHNvIHRoYXQKCQkJCQkJLy8gaXQgaXMgbm90IGxvc3QKCQkJCQkJaWYoICRzZWwgKXsKCQkJCQkJCSRzZWxbMF0tPmVsZW1lbnRzID0gYXJyYXlfc2xpY2UoJHNlbFswXS0+ZWxlbWVudHMsMCk7CgkJCQkJCQkkc2VsWzBdLT5lbGVtZW50c1tdID0gbmV3IExlc3NfVHJlZV9FbGVtZW50KCRlbC0+Y29tYmluYXRvciwgJycsICRlbC0+aW5kZXgsICRlbC0+Y3VycmVudEZpbGVJbmZvICk7CgkJCQkJCX0KCQkJCQkJJHNlbGVjdG9yc011bHRpcGxpZWRbXSA9ICRzZWw7CgkJCQkJfWVsc2UgewoKCQkJCQkJLy8gYW5kIHRoZSBwYXJlbnQgc2VsZWN0b3JzCgkJCQkJCWZvcmVhY2goJGNvbnRleHQgYXMgJHBhcmVudFNlbCl7CgkJCQkJCQkvLyBXZSBuZWVkIHRvIHB1dCB0aGUgY3VycmVudCBzZWxlY3RvcnMKCQkJCQkJCS8vIHRoZW4gam9pbiB0aGUgbGFzdCBzZWxlY3RvcidzIGVsZW1lbnRzIG9uIHRvIHRoZSBwYXJlbnRzIHNlbGVjdG9ycwoKCQkJCQkJCS8vIG91ciBuZXcgc2VsZWN0b3IgcGF0aAoJCQkJCQkJJG5ld1NlbGVjdG9yUGF0aCA9IGFycmF5KCk7CgkJCQkJCQkvLyBzZWxlY3RvcnMgZnJvbSB0aGUgcGFyZW50IGFmdGVyIHRoZSBqb2luCgkJCQkJCQkkYWZ0ZXJQYXJlbnRKb2luID0gYXJyYXkoKTsKCQkJCQkJCSRuZXdKb2luZWRTZWxlY3RvckVtcHR5ID0gdHJ1ZTsKCgkJCQkJCQkvL2NvbnN0cnVjdCB0aGUgam9pbmVkIHNlbGVjdG9yIC0gaWYgJiBpcyB0aGUgZmlyc3QgdGhpbmcgdGhpcyB3aWxsIGJlIGVtcHR5LAoJCQkJCQkJLy8gaWYgbm90IG5ld0pvaW5lZFNlbGVjdG9yIHdpbGwgYmUgdGhlIGxhc3Qgc2V0IG9mIGVsZW1lbnRzIGluIHRoZSBzZWxlY3RvcgoJCQkJCQkJaWYoICRzZWwgKXsKCQkJCQkJCQkkbmV3U2VsZWN0b3JQYXRoID0gJHNlbDsKCQkJCQkJCQkkbGFzdFNlbGVjdG9yID0gYXJyYXlfcG9wKCRuZXdTZWxlY3RvclBhdGgpOwoJCQkJCQkJCSRuZXdKb2luZWRTZWxlY3RvciA9ICRzZWxlY3Rvci0+Y3JlYXRlRGVyaXZlZCggYXJyYXlfc2xpY2UoJGxhc3RTZWxlY3Rvci0+ZWxlbWVudHMsMCkgKTsKCQkJCQkJCQkkbmV3Sm9pbmVkU2VsZWN0b3JFbXB0eSA9IGZhbHNlOwoJCQkJCQkJfQoJCQkJCQkJZWxzZSB7CgkJCQkJCQkJJG5ld0pvaW5lZFNlbGVjdG9yID0gJHNlbGVjdG9yLT5jcmVhdGVEZXJpdmVkKGFycmF5KCkpOwoJCQkJCQkJfQoKCQkJCQkJCS8vcHV0IHRvZ2V0aGVyIHRoZSBwYXJlbnQgc2VsZWN0b3JzIGFmdGVyIHRoZSBqb2luCgkJCQkJCQlpZiAoIGNvdW50KCRwYXJlbnRTZWwpID4gMSkgewoJCQkJCQkJCSRhZnRlclBhcmVudEpvaW4gPSBhcnJheV9tZXJnZSgkYWZ0ZXJQYXJlbnRKb2luLCBhcnJheV9zbGljZSgkcGFyZW50U2VsLDEpICk7CgkJCQkJCQl9CgoJCQkJCQkJaWYgKCAkcGFyZW50U2VsICl7CgkJCQkJCQkJJG5ld0pvaW5lZFNlbGVjdG9yRW1wdHkgPSBmYWxzZTsKCgkJCQkJCQkJLy8gam9pbiB0aGUgZWxlbWVudHMgc28gZmFyIHdpdGggdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHBhcmVudAoJCQkJCQkJCSRuZXdKb2luZWRTZWxlY3Rvci0+ZWxlbWVudHNbXSA9IG5ldyBMZXNzX1RyZWVfRWxlbWVudCggJGVsLT5jb21iaW5hdG9yLCAkcGFyZW50U2VsWzBdLT5lbGVtZW50c1swXS0+dmFsdWUsICRlbC0+aW5kZXgsICRlbC0+Y3VycmVudEZpbGVJbmZvKTsKCgkJCQkJCQkJJG5ld0pvaW5lZFNlbGVjdG9yLT5lbGVtZW50cyA9IGFycmF5X21lcmdlKCAkbmV3Sm9pbmVkU2VsZWN0b3ItPmVsZW1lbnRzLCBhcnJheV9zbGljZSgkcGFyZW50U2VsWzBdLT5lbGVtZW50cywgMSkgKTsKCQkJCQkJCX0KCgkJCQkJCQlpZiAoISRuZXdKb2luZWRTZWxlY3RvckVtcHR5KSB7CgkJCQkJCQkJLy8gbm93IGFkZCB0aGUgam9pbmVkIHNlbGVjdG9yCgkJCQkJCQkJJG5ld1NlbGVjdG9yUGF0aFtdID0gJG5ld0pvaW5lZFNlbGVjdG9yOwoJCQkJCQkJfQoKCQkJCQkJCS8vIGFuZCB0aGUgcmVzdCBvZiB0aGUgcGFyZW50CgkJCQkJCQkkbmV3U2VsZWN0b3JQYXRoID0gYXJyYXlfbWVyZ2UoJG5ld1NlbGVjdG9yUGF0aCwgJGFmdGVyUGFyZW50Sm9pbik7CgoJCQkJCQkJLy8gYWRkIHRoYXQgdG8gb3VyIG5ldyBzZXQgb2Ygc2VsZWN0b3JzCgkJCQkJCQkkc2VsZWN0b3JzTXVsdGlwbGllZFtdID0gJG5ld1NlbGVjdG9yUGF0aDsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCgkJCQkvLyBvdXIgbmV3IHNlbGVjdG9ycyBoYXMgYmVlbiBtdWx0aXBsaWVkLCBzbyByZXNldCB0aGUgc3RhdGUKCQkJCSRuZXdTZWxlY3RvcnMgPSAkc2VsZWN0b3JzTXVsdGlwbGllZDsKCQkJCSRjdXJyZW50RWxlbWVudHMgPSBhcnJheSgpOwoJCQl9CgkJfQoKCQkvLyBpZiB3ZSBoYXZlIGFueSBlbGVtZW50cyBsZWZ0IG92ZXIgKGUuZy4gLmEmIC5iID09IC5iKQoJCS8vIGFkZCB0aGVtIG9uIHRvIGFsbCB0aGUgY3VycmVudCBzZWxlY3RvcnMKCQlpZiggJGN1cnJlbnRFbGVtZW50cyApewoJCQkkdGhpcy0+bWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoJGN1cnJlbnRFbGVtZW50cywgJG5ld1NlbGVjdG9ycyk7CgkJfQoJCWZvcmVhY2goICRuZXdTZWxlY3RvcnMgYXMgJG5ld19zZWwpewoJCQlpZiggJG5ld19zZWwgKXsKCQkJCSRwYXRoc1tdID0gJG5ld19zZWw7CgkJCX0KCQl9Cgl9CgoJZnVuY3Rpb24gbWVyZ2VFbGVtZW50c09uVG9TZWxlY3RvcnMoICRlbGVtZW50cywgJiRzZWxlY3RvcnMpewoKCQlpZiggISRzZWxlY3RvcnMgKXsKCQkJJHNlbGVjdG9yc1tdID0gYXJyYXkoIG5ldyBMZXNzX1RyZWVfU2VsZWN0b3IoJGVsZW1lbnRzKSApOwoJCQlyZXR1cm47CgkJfQoKCgkJZm9yZWFjaCggJHNlbGVjdG9ycyBhcyAmJHNlbCl7CgoJCQkvLyBpZiB0aGUgcHJldmlvdXMgdGhpbmcgaW4gc2VsIGlzIGEgcGFyZW50IHRoaXMgbmVlZHMgdG8gam9pbiBvbiB0byBpdAoJCQlpZiggJHNlbCApewoJCQkJJGxhc3QgPSBjb3VudCgkc2VsKS0xOwoJCQkJJHNlbFskbGFzdF0gPSAkc2VsWyRsYXN0XS0+Y3JlYXRlRGVyaXZlZCggYXJyYXlfbWVyZ2UoJHNlbFskbGFzdF0tPmVsZW1lbnRzLCAkZWxlbWVudHMpICk7CgkJCX1lbHNlewoJCQkJJHNlbFtdID0gbmV3IExlc3NfVHJlZV9TZWxlY3RvciggJGVsZW1lbnRzICk7CgkJCX0KCQl9Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/RulesetCall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSdWxlc2V0Q2FsbAogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9SdWxlc2V0Q2FsbCBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHZhcmlhYmxlOwoJcHVibGljICR0eXBlID0gIlJ1bGVzZXRDYWxsIjsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhcmlhYmxlKXsKCQkkdGhpcy0+dmFyaWFibGUgPSAkdmFyaWFibGU7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcikge30KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSggJGVudiApewoJCSR2YXJpYWJsZSA9IG5ldyBMZXNzX1RyZWVfVmFyaWFibGUoJHRoaXMtPnZhcmlhYmxlKTsKCQkkZGV0YWNoZWRSdWxlc2V0ID0gJHZhcmlhYmxlLT5jb21waWxlKCRlbnYpOwoJCXJldHVybiAkZGV0YWNoZWRSdWxlc2V0LT5jYWxsRXZhbCgkZW52KTsKCX0KfQoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBTZWxlY3RvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9TZWxlY3RvciBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJGVsZW1lbnRzOwoJcHVibGljICRjb25kaXRpb247CglwdWJsaWMgJGV4dGVuZExpc3QgPSBhcnJheSgpOwoJcHVibGljICRfY3NzOwoJcHVibGljICRpbmRleDsKCXB1YmxpYyAkZXZhbGRDb25kaXRpb24gPSBmYWxzZTsKCXB1YmxpYyAkdHlwZSA9ICdTZWxlY3Rvcic7CglwdWJsaWMgJGN1cnJlbnRGaWxlSW5mbyA9IGFycmF5KCk7CglwdWJsaWMgJGlzUmVmZXJlbmNlZDsKCXB1YmxpYyAkbWVkaWFFbXB0eTsKCglwdWJsaWMgJGVsZW1lbnRzX2xlbiA9IDA7CgoJcHVibGljICRfb2VsZW1lbnRzOwoJcHVibGljICRfb2VsZW1lbnRzX2xlbjsKCXB1YmxpYyAkY2FjaGVhYmxlID0gdHJ1ZTsKCgkvKioKCSAqIEBwYXJhbSBib29sZWFuICRpc1JlZmVyZW5jZWQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkZWxlbWVudHMsICRleHRlbmRMaXN0ID0gYXJyYXkoKSAsICRjb25kaXRpb24gPSBudWxsLCAkaW5kZXg9bnVsbCwgJGN1cnJlbnRGaWxlSW5mbz1udWxsLCAkaXNSZWZlcmVuY2VkPW51bGwgKXsKCgkJJHRoaXMtPmVsZW1lbnRzID0gJGVsZW1lbnRzOwoJCSR0aGlzLT5lbGVtZW50c19sZW4gPSBjb3VudCgkZWxlbWVudHMpOwoJCSR0aGlzLT5leHRlbmRMaXN0ID0gJGV4dGVuZExpc3Q7CgkJJHRoaXMtPmNvbmRpdGlvbiA9ICRjb25kaXRpb247CgkJaWYoICRjdXJyZW50RmlsZUluZm8gKXsKCQkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87CgkJfQoJCSR0aGlzLT5pc1JlZmVyZW5jZWQgPSAkaXNSZWZlcmVuY2VkOwoJCWlmKCAhJGNvbmRpdGlvbiApewoJCQkkdGhpcy0+ZXZhbGRDb25kaXRpb24gPSB0cnVlOwoJCX0KCgkJJHRoaXMtPkNhY2hlRWxlbWVudHMoKTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCR2aXNpdG9yKSB7CgkJJHRoaXMtPmVsZW1lbnRzID0gJHZpc2l0b3ItPnZpc2l0QXJyYXkoJHRoaXMtPmVsZW1lbnRzKTsKCQkkdGhpcy0+ZXh0ZW5kTGlzdCA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT5leHRlbmRMaXN0KTsKCQlpZiggJHRoaXMtPmNvbmRpdGlvbiApewoJCQkkdGhpcy0+Y29uZGl0aW9uID0gJHZpc2l0b3ItPnZpc2l0T2JqKCR0aGlzLT5jb25kaXRpb24pOwoJCX0KCgkJaWYoICR2aXNpdG9yIGluc3RhbmNlb2YgTGVzc19WaXNpdG9yX2V4dGVuZEZpbmRlciApewoJCQkkdGhpcy0+Q2FjaGVFbGVtZW50cygpOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlRGVyaXZlZCggJGVsZW1lbnRzLCAkZXh0ZW5kTGlzdCA9IG51bGwsICRldmFsZENvbmRpdGlvbiA9IG51bGwgKXsKCQkkbmV3U2VsZWN0b3IgPSBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCAkZWxlbWVudHMsICgkZXh0ZW5kTGlzdCA/ICRleHRlbmRMaXN0IDogJHRoaXMtPmV4dGVuZExpc3QpLCBudWxsLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8sICR0aGlzLT5pc1JlZmVyZW5jZWQpOwoJCSRuZXdTZWxlY3Rvci0+ZXZhbGRDb25kaXRpb24gPSAkZXZhbGRDb25kaXRpb24gPyAkZXZhbGRDb25kaXRpb24gOiAkdGhpcy0+ZXZhbGRDb25kaXRpb247CgkJcmV0dXJuICRuZXdTZWxlY3RvcjsKCX0KCgoJcHVibGljIGZ1bmN0aW9uIG1hdGNoKCAkb3RoZXIgKXsKCgkJaWYoICEkb3RoZXItPl9vZWxlbWVudHMgfHwgKCR0aGlzLT5lbGVtZW50c19sZW4gPCAkb3RoZXItPl9vZWxlbWVudHNfbGVuKSApewoJCQlyZXR1cm4gMDsKCQl9CgoJCWZvciggJGkgPSAwOyAkaSA8ICRvdGhlci0+X29lbGVtZW50c19sZW47ICRpKysgKXsKCQkJaWYoICR0aGlzLT5lbGVtZW50c1skaV0tPnZhbHVlICE9PSAkb3RoZXItPl9vZWxlbWVudHNbJGldKSB7CgkJCQlyZXR1cm4gMDsKCQkJfQoJCX0KCgkJcmV0dXJuICRvdGhlci0+X29lbGVtZW50c19sZW47IC8vIHJldHVybiBudW1iZXIgb2YgbWF0Y2hlZCBlbGVtZW50cwoJfQoKCglwdWJsaWMgZnVuY3Rpb24gQ2FjaGVFbGVtZW50cygpewoKCQkkdGhpcy0+X29lbGVtZW50cyA9IGFycmF5KCk7CgkJJGNzcyA9ICcnOwoKCQlmb3JlYWNoKCR0aGlzLT5lbGVtZW50cyBhcyAkdil7CgoJCQkkY3NzIC49ICR2LT5jb21iaW5hdG9yOwoJCQlpZiggISR2LT52YWx1ZV9pc19vYmplY3QgKXsKCQkJCSRjc3MgLj0gJHYtPnZhbHVlOwoJCQkJY29udGludWU7CgkJCX0KCgkJCWlmKCAhcHJvcGVydHlfZXhpc3RzKCR2LT52YWx1ZSwndmFsdWUnKSB8fCAhaXNfc3RyaW5nKCR2LT52YWx1ZS0+dmFsdWUpICl7CgkJCQkkdGhpcy0+Y2FjaGVhYmxlID0gZmFsc2U7CgkJCQlyZXR1cm47CgkJCX0KCQkJJGNzcyAuPSAkdi0+dmFsdWUtPnZhbHVlOwoJCX0KCgkJJHRoaXMtPl9vZWxlbWVudHNfbGVuID0gcHJlZ19tYXRjaF9hbGwoJy9bLCYjXC5cdy1dKD86W1x3LV18KD86XFxcXC4pKSovJywgJGNzcywgJG1hdGNoZXMpOwoJCWlmKCAkdGhpcy0+X29lbGVtZW50c19sZW4gKXsKCQkJJHRoaXMtPl9vZWxlbWVudHMgPSAkbWF0Y2hlc1swXTsKCgkJCWlmKCAkdGhpcy0+X29lbGVtZW50c1swXSA9PT0gJyYnICl7CgkJCQlhcnJheV9zaGlmdCgkdGhpcy0+X29lbGVtZW50cyk7CgkJCQkkdGhpcy0+X29lbGVtZW50c19sZW4tLTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNKdXN0UGFyZW50U2VsZWN0b3IoKXsKCQlyZXR1cm4gISR0aGlzLT5tZWRpYUVtcHR5ICYmCgkJCWNvdW50KCR0aGlzLT5lbGVtZW50cykgPT09IDEgJiYKCQkJJHRoaXMtPmVsZW1lbnRzWzBdLT52YWx1ZSA9PT0gJyYnICYmCgkJCSgkdGhpcy0+ZWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPT09ICcgJyB8fCAkdGhpcy0+ZWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPT09ICcnKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkZW52KSB7CgoJCSRlbGVtZW50cyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkdGhpcy0+ZWxlbWVudHMgYXMgJGVsKXsKCQkJJGVsZW1lbnRzW10gPSAkZWwtPmNvbXBpbGUoJGVudik7CgkJfQoKCQkkZXh0ZW5kTGlzdCA9IGFycmF5KCk7CgkJZm9yZWFjaCgkdGhpcy0+ZXh0ZW5kTGlzdCBhcyAkZWwpewoJCQkkZXh0ZW5kTGlzdFtdID0gJGVsLT5jb21waWxlKCRlbCk7CgkJfQoKCQkkZXZhbGRDb25kaXRpb24gPSBmYWxzZTsKCQlpZiggJHRoaXMtPmNvbmRpdGlvbiApewoJCQkkZXZhbGRDb25kaXRpb24gPSAkdGhpcy0+Y29uZGl0aW9uLT5jb21waWxlKCRlbnYpOwoJCX0KCgkJcmV0dXJuICR0aGlzLT5jcmVhdGVEZXJpdmVkKCAkZWxlbWVudHMsICRleHRlbmRMaXN0LCAkZXZhbGRDb25kaXRpb24gKTsKCX0KCgoJLyoqCgkgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCgkgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQsICRmaXJzdFNlbGVjdG9yID0gdHJ1ZSApewoKCQlpZiggISRmaXJzdFNlbGVjdG9yICYmICR0aGlzLT5lbGVtZW50c1swXS0+Y29tYmluYXRvciA9PT0gIiIgKXsKCQkJJG91dHB1dC0+YWRkKCcgJywgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgJHRoaXMtPmluZGV4KTsKCQl9CgoJCWZvcmVhY2goJHRoaXMtPmVsZW1lbnRzIGFzICRlbGVtZW50KXsKCQkJJGVsZW1lbnQtPmdlbkNTUyggJG91dHB1dCApOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbWFya1JlZmVyZW5jZWQoKXsKCQkkdGhpcy0+aXNSZWZlcmVuY2VkID0gdHJ1ZTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXNSZWZlcmVuY2VkKCl7CgkJcmV0dXJuICFpc3NldCgkdGhpcy0+Y3VycmVudEZpbGVJbmZvWydyZWZlcmVuY2UnXSkgfHwgISR0aGlzLT5jdXJyZW50RmlsZUluZm9bJ3JlZmVyZW5jZSddIHx8ICR0aGlzLT5pc1JlZmVyZW5jZWQ7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldElzT3V0cHV0KCl7CgkJcmV0dXJuICR0aGlzLT5ldmFsZENvbmRpdGlvbjsKCX0KCn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/UnicodeDescriptor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVbmljb2RlRGVzY3JpcHRvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9Vbmljb2RlRGVzY3JpcHRvciBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHZhbHVlOwoJcHVibGljICR0eXBlID0gJ1VuaWNvZGVEZXNjcmlwdG9yJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKXsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7Cgl9CgogICAgLyoqCiAgICAgKiBAc2VlIExlc3NfVHJlZTo6Z2VuQ1NTCiAgICAgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZW5DU1MoICRvdXRwdXQgKXsKCQkkb3V0cHV0LT5hZGQoICR0aGlzLT52YWx1ZSApOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb21waWxlKCl7CgkJcmV0dXJuICR0aGlzOwoJfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Unit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVbml0CiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdHJlZQogKi8KY2xhc3MgTGVzc19UcmVlX1VuaXQgZXh0ZW5kcyBMZXNzX1RyZWV7CgoJdmFyICRudW1lcmF0b3IgPSBhcnJheSgpOwoJdmFyICRkZW5vbWluYXRvciA9IGFycmF5KCk7CglwdWJsaWMgJGJhY2t1cFVuaXQ7CglwdWJsaWMgJHR5cGUgPSAnVW5pdCc7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRudW1lcmF0b3IgPSBhcnJheSgpLCAkZGVub21pbmF0b3IgPSBhcnJheSgpLCAkYmFja3VwVW5pdCA9IG51bGwgKXsKCQkkdGhpcy0+bnVtZXJhdG9yID0gJG51bWVyYXRvcjsKCQkkdGhpcy0+ZGVub21pbmF0b3IgPSAkZGVub21pbmF0b3I7CgkJJHRoaXMtPmJhY2t1cFVuaXQgPSAkYmFja3VwVW5pdDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jbG9uZSgpewoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgoJCWlmKCAkdGhpcy0+bnVtZXJhdG9yICl7CgkJCSRvdXRwdXQtPmFkZCggJHRoaXMtPm51bWVyYXRvclswXSApOwoJCX1lbHNlaWYoICR0aGlzLT5kZW5vbWluYXRvciApewoJCQkkb3V0cHV0LT5hZGQoICR0aGlzLT5kZW5vbWluYXRvclswXSApOwoJCX1lbHNlaWYoICFMZXNzX1BhcnNlcjo6JG9wdGlvbnNbJ3N0cmljdFVuaXRzJ10gJiYgJHRoaXMtPmJhY2t1cFVuaXQgKXsKCQkJJG91dHB1dC0+YWRkKCAkdGhpcy0+YmFja3VwVW5pdCApOwoJCQlyZXR1cm4gOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoKXsKCQkkcmV0dXJuU3RyID0gaW1wbG9kZSgnKicsJHRoaXMtPm51bWVyYXRvcik7CgkJZm9yZWFjaCgkdGhpcy0+ZGVub21pbmF0b3IgYXMgJGQpewoJCQkkcmV0dXJuU3RyIC49ICcvJy4kZDsKCQl9CgkJcmV0dXJuICRyZXR1cm5TdHI7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKXsKCQlyZXR1cm4gJHRoaXMtPnRvU3RyaW5nKCk7Cgl9CgoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9Vbml0ICRvdGhlcgoJICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGFyZSgkb3RoZXIpIHsKCQlyZXR1cm4gJHRoaXMtPmlzKCAkb3RoZXItPnRvU3RyaW5nKCkgKSA/IDAgOiAtMTsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXMoJHVuaXRTdHJpbmcpewoJCXJldHVybiAkdGhpcy0+dG9TdHJpbmcoKSA9PT0gJHVuaXRTdHJpbmc7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzTGVuZ3RoKCl7CgkJJGNzcyA9ICR0aGlzLT50b0NTUygpOwoJCXJldHVybiAhIXByZWdfbWF0Y2goJy9weHxlbXwlfGlufGNtfG1tfHBjfHB0fGV4LycsJGNzcyk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzQW5nbGUoKSB7CgkJcmV0dXJuIGlzc2V0KCBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zOjokYW5nbGVbJHRoaXMtPnRvQ1NTKCldICk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzRW1wdHkoKXsKCQlyZXR1cm4gISR0aGlzLT5udW1lcmF0b3IgJiYgISR0aGlzLT5kZW5vbWluYXRvcjsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTaW5ndWxhcigpIHsKCQlyZXR1cm4gY291bnQoJHRoaXMtPm51bWVyYXRvcikgPD0gMSAmJiAhJHRoaXMtPmRlbm9taW5hdG9yOwoJfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gdXNlZFVuaXRzKCl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgoJCWZvcmVhY2goTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JGdyb3VwcyBhcyAkZ3JvdXBOYW1lKXsKCQkJJGdyb3VwID0gTGVzc19UcmVlX1VuaXRDb252ZXJzaW9uczo6JHskZ3JvdXBOYW1lfTsKCgkJCWZvcmVhY2goJHRoaXMtPm51bWVyYXRvciBhcyAkYXRvbWljVW5pdCl7CgkJCQlpZiggaXNzZXQoJGdyb3VwWyRhdG9taWNVbml0XSkgJiYgIWlzc2V0KCRyZXN1bHRbJGdyb3VwTmFtZV0pICl7CgkJCQkJJHJlc3VsdFskZ3JvdXBOYW1lXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9CgoJCQlmb3JlYWNoKCR0aGlzLT5kZW5vbWluYXRvciBhcyAkYXRvbWljVW5pdCl7CgkJCQlpZiggaXNzZXQoJGdyb3VwWyRhdG9taWNVbml0XSkgJiYgIWlzc2V0KCRyZXN1bHRbJGdyb3VwTmFtZV0pICl7CgkJCQkJJHJlc3VsdFskZ3JvdXBOYW1lXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCl7CgkJJGNvdW50ZXIgPSBhcnJheSgpOwoJCSRiYWNrdXAgPSBudWxsOwoKCQlmb3JlYWNoKCR0aGlzLT5udW1lcmF0b3IgYXMgJGF0b21pY1VuaXQpewoJCQlpZiggISRiYWNrdXAgKXsKCQkJCSRiYWNrdXAgPSAkYXRvbWljVW5pdDsKCQkJfQoJCQkkY291bnRlclskYXRvbWljVW5pdF0gPSAoIGlzc2V0KCRjb3VudGVyWyRhdG9taWNVbml0XSkgPyAkY291bnRlclskYXRvbWljVW5pdF0gOiAwKSArIDE7CgkJfQoKCQlmb3JlYWNoKCR0aGlzLT5kZW5vbWluYXRvciBhcyAkYXRvbWljVW5pdCl7CgkJCWlmKCAhJGJhY2t1cCApewoJCQkJJGJhY2t1cCA9ICRhdG9taWNVbml0OwoJCQl9CgkJCSRjb3VudGVyWyRhdG9taWNVbml0XSA9ICggaXNzZXQoJGNvdW50ZXJbJGF0b21pY1VuaXRdKSA/ICRjb3VudGVyWyRhdG9taWNVbml0XSA6IDApIC0gMTsKCQl9CgoJCSR0aGlzLT5udW1lcmF0b3IgPSBhcnJheSgpOwoJCSR0aGlzLT5kZW5vbWluYXRvciA9IGFycmF5KCk7CgoJCWZvcmVhY2goJGNvdW50ZXIgYXMgJGF0b21pY1VuaXQgPT4gJGNvdW50KXsKCQkJaWYoICRjb3VudCA+IDAgKXsKCQkJCWZvciggJGkgPSAwOyAkaSA8ICRjb3VudDsgJGkrKyApewoJCQkJCSR0aGlzLT5udW1lcmF0b3JbXSA9ICRhdG9taWNVbml0OwoJCQkJfQoJCQl9ZWxzZWlmKCAkY291bnQgPCAwICl7CgkJCQlmb3IoICRpID0gMDsgJGkgPCAtJGNvdW50OyAkaSsrICl7CgkJCQkJJHRoaXMtPmRlbm9taW5hdG9yW10gPSAkYXRvbWljVW5pdDsKCQkJCX0KCQkJfQoJCX0KCgkJaWYoICEkdGhpcy0+bnVtZXJhdG9yICYmICEkdGhpcy0+ZGVub21pbmF0b3IgJiYgJGJhY2t1cCApewoJCQkkdGhpcy0+YmFja3VwVW5pdCA9ICRiYWNrdXA7CgkJfQoKCQlzb3J0KCR0aGlzLT5udW1lcmF0b3IpOwoJCXNvcnQoJHRoaXMtPmRlbm9taW5hdG9yKTsKCX0KCgp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/UnitConversions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVbml0Q29udmVyc2lvbnMKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVW5pdENvbnZlcnNpb25zewoKCXB1YmxpYyBzdGF0aWMgJGdyb3VwcyA9IGFycmF5KCdsZW5ndGgnLCdkdXJhdGlvbicsJ2FuZ2xlJyk7CgoJcHVibGljIHN0YXRpYyAkbGVuZ3RoID0gYXJyYXkoCgkJJ20nPT4gMSwKCQknY20nPT4gMC4wMSwKCQknbW0nPT4gMC4wMDEsCgkJJ2luJz0+IDAuMDI1NCwKCQkncHgnPT4gMC4wMDAyNjQ1ODMsIC8vIDAuMDI1NCAvIDk2LAoJCSdwdCc9PiAwLjAwMDM1Mjc3OCwgLy8gMC4wMjU0IC8gNzIsCgkJJ3BjJz0+IDAuMDA0MjMzMzMzLCAvLyAwLjAyNTQgLyA3MiAqIDEyCgkJKTsKCglwdWJsaWMgc3RhdGljICRkdXJhdGlvbiA9IGFycmF5KAoJCSdzJz0+IDEsCgkJJ21zJz0+IDAuMDAxCgkJKTsKCglwdWJsaWMgc3RhdGljICRhbmdsZSA9IGFycmF5KAoJCSdyYWQnID0+IDAuMTU5MTU0OTQzMDkxOSwJLy8gMS8oMipNX1BJKSwKCQknZGVnJyA9PiAwLjAwMjc3Nzc3OCwgCQkvLyAxLzM2MCwKCQknZ3JhZCc9PiAwLjAwMjUsCQkJLy8gMS80MDAsCgkJJ3R1cm4nPT4gMQoJCSk7Cgp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Url.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBVcmwKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB0cmVlCiAqLwpjbGFzcyBMZXNzX1RyZWVfVXJsIGV4dGVuZHMgTGVzc19UcmVlewoKCXB1YmxpYyAkYXR0cnM7CglwdWJsaWMgJHZhbHVlOwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJGlzRXZhbGQ7CglwdWJsaWMgJHR5cGUgPSAnVXJsJzsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkY3VycmVudEZpbGVJbmZvID0gbnVsbCwgJGlzRXZhbGQgPSBudWxsKXsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CgkJJHRoaXMtPmN1cnJlbnRGaWxlSW5mbyA9ICRjdXJyZW50RmlsZUluZm87CgkJJHRoaXMtPmlzRXZhbGQgPSAkaXNFdmFsZDsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWNjZXB0KCAkdmlzaXRvciApewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdE9iaigkdGhpcy0+dmFsdWUpOwoJfQoKICAgIC8qKgogICAgICogQHNlZSBMZXNzX1RyZWU6OmdlbkNTUwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJG91dHB1dC0+YWRkKCAndXJsKCcgKTsKCQkkdGhpcy0+dmFsdWUtPmdlbkNTUyggJG91dHB1dCApOwoJCSRvdXRwdXQtPmFkZCggJyknICk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19GdW5jdGlvbnMgJGN0eAoJICovCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkY3R4KXsKCQkkdmFsID0gJHRoaXMtPnZhbHVlLT5jb21waWxlKCRjdHgpOwoKCQlpZiggISR0aGlzLT5pc0V2YWxkICl7CgkJCS8vIEFkZCB0aGUgYmFzZSBwYXRoIGlmIHRoZSBVUkwgaXMgcmVsYXRpdmUKCQkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1sncmVsYXRpdmVVcmxzJ10KCQkJCSYmICR0aGlzLT5jdXJyZW50RmlsZUluZm8KCQkJCSYmIGlzX3N0cmluZygkdmFsLT52YWx1ZSkKCQkJCSYmIExlc3NfRW52aXJvbm1lbnQ6OmlzUGF0aFJlbGF0aXZlKCR2YWwtPnZhbHVlKQoJCQkpewoJCQkJJHJvb3RwYXRoID0gJHRoaXMtPmN1cnJlbnRGaWxlSW5mb1sndXJpX3Jvb3QnXTsKCQkJCWlmICggISR2YWwtPnF1b3RlICl7CgkJCQkJJHJvb3RwYXRoID0gcHJlZ19yZXBsYWNlKCcvW1woXClcJyJcc10vJywgJ1xcJDEnLCAkcm9vdHBhdGggKTsKCQkJCX0KCQkJCSR2YWwtPnZhbHVlID0gJHJvb3RwYXRoIC4gJHZhbC0+dmFsdWU7CgkJCX0KCgkJCSR2YWwtPnZhbHVlID0gTGVzc19FbnZpcm9ubWVudDo6bm9ybWFsaXplUGF0aCggJHZhbC0+dmFsdWUpOwoJCX0KCgkJLy8gQWRkIGNhY2hlIGJ1c3RlciBpZiBlbmFibGVkCgkJaWYoIExlc3NfUGFyc2VyOjokb3B0aW9uc1sndXJsQXJncyddICl7CgkJCWlmKCAhcHJlZ19tYXRjaCgnL15ccypkYXRhOi8nLCR2YWwtPnZhbHVlKSApewoJCQkJJGRlbGltaXRlciA9IHN0cnBvcygkdmFsLT52YWx1ZSwnPycpID09PSBmYWxzZSA/ICc/JyA6ICcmJzsKCQkJCSR1cmxBcmdzID0gJGRlbGltaXRlciAuIExlc3NfUGFyc2VyOjokb3B0aW9uc1sndXJsQXJncyddOwoJCQkJJGhhc2hfcG9zID0gc3RycG9zKCR2YWwtPnZhbHVlLCcjJyk7CgkJCQlpZiggJGhhc2hfcG9zICE9PSBmYWxzZSApewoJCQkJCSR2YWwtPnZhbHVlID0gc3Vic3RyX3JlcGxhY2UoJHZhbC0+dmFsdWUsJHVybEFyZ3MsICRoYXNoX3BvcywgMCk7CgkJCQl9IGVsc2UgewoJCQkJCSR2YWwtPnZhbHVlIC49ICR1cmxBcmdzOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9VUkwoJHZhbCwgJHRoaXMtPmN1cnJlbnRGaWxlSW5mbywgdHJ1ZSk7Cgl9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Value.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBWYWx1ZQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9WYWx1ZSBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJHR5cGUgPSAnVmFsdWUnOwoJcHVibGljICR2YWx1ZTsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKXsKCQkkdGhpcy0+dmFsdWUgPSAkdmFsdWU7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIGFjY2VwdCgkdmlzaXRvcikgewoJCSR0aGlzLT52YWx1ZSA9ICR2aXNpdG9yLT52aXNpdEFycmF5KCR0aGlzLT52YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGVudil7CgoJCSRyZXQgPSBhcnJheSgpOwoJCSRpID0gMDsKCQlmb3JlYWNoKCR0aGlzLT52YWx1ZSBhcyAkaSA9PiAkdil7CgkJCSRyZXRbXSA9ICR2LT5jb21waWxlKCRlbnYpOwoJCX0KCQlpZiggJGkgPiAwICl7CgkJCXJldHVybiBuZXcgTGVzc19UcmVlX1ZhbHVlKCRyZXQpOwoJCX0KCQlyZXR1cm4gJHJldFswXTsKCX0KCiAgICAvKioKICAgICAqIEBzZWUgTGVzc19UcmVlOjpnZW5DU1MKICAgICAqLwoJZnVuY3Rpb24gZ2VuQ1NTKCAkb3V0cHV0ICl7CgkJJGxlbiA9IGNvdW50KCR0aGlzLT52YWx1ZSk7CgkJZm9yKCRpID0gMDsgJGkgPCAkbGVuOyAkaSsrICl7CgkJCSR0aGlzLT52YWx1ZVskaV0tPmdlbkNTUyggJG91dHB1dCApOwoJCQlpZiggJGkrMSA8ICRsZW4gKXsKCQkJCSRvdXRwdXQtPmFkZCggTGVzc19FbnZpcm9ubWVudDo6JF9vdXRwdXRNYXBbJywnXSApOwoJCQl9CgkJfQoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Tree/Variable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBWYXJpYWJsZQogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHRyZWUKICovCmNsYXNzIExlc3NfVHJlZV9WYXJpYWJsZSBleHRlbmRzIExlc3NfVHJlZXsKCglwdWJsaWMgJG5hbWU7CglwdWJsaWMgJGluZGV4OwoJcHVibGljICRjdXJyZW50RmlsZUluZm87CglwdWJsaWMgJGV2YWx1YXRpbmcgPSBmYWxzZTsKCXB1YmxpYyAkdHlwZSA9ICdWYXJpYWJsZSc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwgJGluZGV4ID0gbnVsbCwgJGN1cnJlbnRGaWxlSW5mbyA9IG51bGwpIHsKICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICR0aGlzLT5pbmRleCA9ICRpbmRleDsKCQkkdGhpcy0+Y3VycmVudEZpbGVJbmZvID0gJGN1cnJlbnRGaWxlSW5mbzsKICAgIH0KCglwdWJsaWMgZnVuY3Rpb24gY29tcGlsZSgkZW52KSB7CgoJCWlmKCAkdGhpcy0+bmFtZVsxXSA9PT0gJ0AnICl7CgkJCSR2ID0gbmV3IExlc3NfVHJlZV9WYXJpYWJsZShzdWJzdHIoJHRoaXMtPm5hbWUsIDEpLCAkdGhpcy0+aW5kZXggKyAxLCAkdGhpcy0+Y3VycmVudEZpbGVJbmZvKTsKCQkJJG5hbWUgPSAnQCcgLiAkdi0+Y29tcGlsZSgkZW52KS0+dmFsdWU7CgkJfWVsc2V7CgkJCSRuYW1lID0gJHRoaXMtPm5hbWU7CgkJfQoKCQlpZiAoJHRoaXMtPmV2YWx1YXRpbmcpIHsKCQkJdGhyb3cgbmV3IExlc3NfRXhjZXB0aW9uX0NvbXBpbGVyKCJSZWN1cnNpdmUgdmFyaWFibGUgZGVmaW5pdGlvbiBmb3IgIiAuICRuYW1lLCBudWxsLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJCX0KCgkJJHRoaXMtPmV2YWx1YXRpbmcgPSB0cnVlOwoKCQlmb3JlYWNoKCRlbnYtPmZyYW1lcyBhcyAkZnJhbWUpewoJCQlpZiggJHYgPSAkZnJhbWUtPnZhcmlhYmxlKCRuYW1lKSApewoJCQkJJHIgPSAkdi0+dmFsdWUtPmNvbXBpbGUoJGVudik7CgkJCQkkdGhpcy0+ZXZhbHVhdGluZyA9IGZhbHNlOwoJCQkJcmV0dXJuICRyOwoJCQl9CgkJfQoKCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoInZhcmlhYmxlICIgLiAkbmFtZSAuICIgaXMgdW5kZWZpbmVkIGluIGZpbGUgIi4kdGhpcy0+Y3VycmVudEZpbGVJbmZvWyJmaWxlbmFtZSJdLCBudWxsLCAkdGhpcy0+aW5kZXgsICR0aGlzLT5jdXJyZW50RmlsZUluZm8pOwoJfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Version.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSZWxlYXNlIG51bWJlcnMKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB2ZXJzaW9uCiAqLwpjbGFzcyBMZXNzX1ZlcnNpb257CgoJY29uc3QgdmVyc2lvbiA9ICcxLjcuMC4xMCc7CQkJLy8gVGhlIGN1cnJlbnQgYnVpbGQgbnVtYmVyIG9mIGxlc3MucGhwCgljb25zdCBsZXNzX3ZlcnNpb24gPSAnMS43LjAnOwkJLy8gVGhlIGxlc3MuanMgdmVyc2lvbiB0aGF0IHRoaXMgYnVpbGQgc2hvdWxkIGJlIGNvbXBhdGlibGUgd2l0aAoJY29uc3QgY2FjaGVfdmVyc2lvbiA9ICcxNzAnOwkJLy8gVGhlIHBhcnNlciBjYWNoZSB2ZXJzaW9uCgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBWaXNpdG9yCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdmlzaXRvcgogKi8KY2xhc3MgTGVzc19WaXNpdG9yewoKCXByb3RlY3RlZCAkbWV0aG9kcyA9IGFycmF5KCk7Cglwcm90ZWN0ZWQgJF92aXNpdEZuQ2FjaGUgPSBhcnJheSgpOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpewoJCSR0aGlzLT5fdmlzaXRGbkNhY2hlID0gZ2V0X2NsYXNzX21ldGhvZHMoZ2V0X2NsYXNzKCR0aGlzKSk7CgkJJHRoaXMtPl92aXNpdEZuQ2FjaGUgPSBhcnJheV9mbGlwKCR0aGlzLT5fdmlzaXRGbkNhY2hlKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRPYmooICRub2RlICl7CgoJCSRmdW5jTmFtZSA9ICd2aXNpdCcuJG5vZGUtPnR5cGU7CgkJaWYoIGlzc2V0KCR0aGlzLT5fdmlzaXRGbkNhY2hlWyRmdW5jTmFtZV0pICl7CgoJCQkkdmlzaXREZWVwZXIgPSB0cnVlOwoJCQkkdGhpcy0+JGZ1bmNOYW1lKCAkbm9kZSwgJHZpc2l0RGVlcGVyICk7CgoJCQlpZiggJHZpc2l0RGVlcGVyICl7CgkJCQkkbm9kZS0+YWNjZXB0KCR0aGlzKTsKCQkJfQoKCQkJJGZ1bmNOYW1lID0gJGZ1bmNOYW1lIC4gIk91dCI7CgkJCWlmKCBpc3NldCgkdGhpcy0+X3Zpc2l0Rm5DYWNoZVskZnVuY05hbWVdKSApewoJCQkJJHRoaXMtPiRmdW5jTmFtZSggJG5vZGUgKTsKCQkJfQoKCQl9ZWxzZXsKCQkJJG5vZGUtPmFjY2VwdCgkdGhpcyk7CgkJfQoKCQlyZXR1cm4gJG5vZGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0QXJyYXkoICRub2RlcyApewoKCQlhcnJheV9tYXAoIGFycmF5KCR0aGlzLCd2aXNpdE9iaicpLCAkbm9kZXMpOwoJCXJldHVybiAkbm9kZXM7Cgl9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/extendFinder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBFeHRlbmQgRmluZGVyIFZpc2l0b3IKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB2aXNpdG9yCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3JfZXh0ZW5kRmluZGVyIGV4dGVuZHMgTGVzc19WaXNpdG9yewoKCXB1YmxpYyAkY29udGV4dHMgPSBhcnJheSgpOwoJcHVibGljICRhbGxFeHRlbmRzU3RhY2s7CglwdWJsaWMgJGZvdW5kRXh0ZW5kczsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKXsKCQkkdGhpcy0+Y29udGV4dHMgPSBhcnJheSgpOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgPSBhcnJheShhcnJheSgpKTsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCk7Cgl9CgoJLyoqCgkgKiBAcGFyYW0gTGVzc19UcmVlX1J1bGVzZXQgJHJvb3QKCSAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJ1bigkcm9vdCl7CgkJJHJvb3QgPSAkdGhpcy0+dmlzaXRPYmooJHJvb3QpOwoJCSRyb290LT5hbGxFeHRlbmRzID0mICR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbMF07CgkJcmV0dXJuICRyb290OwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGUoJHJ1bGVOb2RlLCAmJHZpc2l0RGVlcGVyICl7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uKCAkbWl4aW5EZWZpbml0aW9uTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoJHJ1bGVzZXROb2RlKXsKCgkJaWYoICRydWxlc2V0Tm9kZS0+cm9vdCApewoJCQlyZXR1cm47CgkJfQoKCQkkYWxsU2VsZWN0b3JzRXh0ZW5kTGlzdCA9IGFycmF5KCk7CgoJCS8vIGdldCAmOmV4dGVuZCguYSk7IHJ1bGVzIHdoaWNoIGFwcGx5IHRvIGFsbCBzZWxlY3RvcnMgaW4gdGhpcyBydWxlc2V0CgkJaWYoICRydWxlc2V0Tm9kZS0+cnVsZXMgKXsKCQkJZm9yZWFjaCgkcnVsZXNldE5vZGUtPnJ1bGVzIGFzICRydWxlKXsKCQkJCWlmKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9FeHRlbmQgKXsKCQkJCQkkYWxsU2VsZWN0b3JzRXh0ZW5kTGlzdFtdID0gJHJ1bGU7CgkJCQkJJHJ1bGVzZXROb2RlLT5leHRlbmRPbkV2ZXJ5UGF0aCA9IHRydWU7CgkJCQl9CgkJCX0KCQl9CgoKCQkvLyBub3cgZmluZCBldmVyeSBzZWxlY3RvciBhbmQgYXBwbHkgdGhlIGV4dGVuZHMgdGhhdCBhcHBseSB0byBhbGwgZXh0ZW5kcwoJCS8vIGFuZCB0aGUgb25lcyB3aGljaCBhcHBseSB0byBhbiBpbmRpdmlkdWFsIGV4dGVuZAoJCWZvcmVhY2goJHJ1bGVzZXROb2RlLT5wYXRocyBhcyAkc2VsZWN0b3JQYXRoKXsKCQkJJHNlbGVjdG9yID0gZW5kKCRzZWxlY3RvclBhdGgpOyAvLyRzZWxlY3RvclBhdGhbIGNvdW50KCRzZWxlY3RvclBhdGgpLTFdOwoKCQkJJGogPSAwOwoJCQlmb3JlYWNoKCRzZWxlY3Rvci0+ZXh0ZW5kTGlzdCBhcyAkZXh0ZW5kKXsKCQkJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tQdXNoKCRydWxlc2V0Tm9kZSwgJHNlbGVjdG9yUGF0aCwgJGV4dGVuZCwgJGopOwoJCQl9CgkJCWZvcmVhY2goJGFsbFNlbGVjdG9yc0V4dGVuZExpc3QgYXMgJGV4dGVuZCl7CgkJCQkkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrUHVzaCgkcnVsZXNldE5vZGUsICRzZWxlY3RvclBhdGgsICRleHRlbmQsICRqKTsKCQkJfQoJCX0KCgkJJHRoaXMtPmNvbnRleHRzW10gPSAkcnVsZXNldE5vZGUtPnNlbGVjdG9yczsKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsRXh0ZW5kc1N0YWNrUHVzaCgkcnVsZXNldE5vZGUsICRzZWxlY3RvclBhdGgsICRleHRlbmQsICYkail7CgkJJHRoaXMtPmZvdW5kRXh0ZW5kcyA9IHRydWU7CgkJJGV4dGVuZCA9IGNsb25lICRleHRlbmQ7CgkJJGV4dGVuZC0+ZmluZFNlbGZTZWxlY3RvcnMoICRzZWxlY3RvclBhdGggKTsKCQkkZXh0ZW5kLT5ydWxlc2V0ID0gJHJ1bGVzZXROb2RlOwoJCWlmKCAkaiA9PT0gMCApewoJCQkkZXh0ZW5kLT5maXJzdEV4dGVuZE9uVGhpc1NlbGVjdG9yUGF0aCA9IHRydWU7CgkJfQoKCQkkZW5kX2tleSA9IGNvdW50KCR0aGlzLT5hbGxFeHRlbmRzU3RhY2spLTE7CgkJJHRoaXMtPmFsbEV4dGVuZHNTdGFja1skZW5kX2tleV1bXSA9ICRleHRlbmQ7CgkJJGorKzsKCX0KCgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZXNldE91dCggJHJ1bGVzZXROb2RlICl7CgkJaWYoICFpc19vYmplY3QoJHJ1bGVzZXROb2RlKSB8fCAhJHJ1bGVzZXROb2RlLT5yb290ICl7CgkJCWFycmF5X3BvcCgkdGhpcy0+Y29udGV4dHMpOwoJCX0KCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRNZWRpYSggJG1lZGlhTm9kZSApewoJCSRtZWRpYU5vZGUtPmFsbEV4dGVuZHMgPSBhcnJheSgpOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbXSA9JiAkbWVkaWFOb2RlLT5hbGxFeHRlbmRzOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdE1lZGlhT3V0KCl7CgkJYXJyYXlfcG9wKCR0aGlzLT5hbGxFeHRlbmRzU3RhY2spOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZSggJGRpcmVjdGl2ZU5vZGUgKXsKCQkkZGlyZWN0aXZlTm9kZS0+YWxsRXh0ZW5kcyA9IGFycmF5KCk7CgkJJHRoaXMtPmFsbEV4dGVuZHNTdGFja1tdID0mICRkaXJlY3RpdmVOb2RlLT5hbGxFeHRlbmRzOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZU91dCgpewoJCWFycmF5X3BvcCgkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrKTsKCX0KfQoKCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCmNsYXNzIExlc3NfVmlzaXRvcl9pbXBvcnQgZXh0ZW5kcyBMZXNzX1Zpc2l0b3JSZXBsYWNpbmd7CgoJcHVibGljICRfdmlzaXRvcjsKCXB1YmxpYyAkX2ltcG9ydGVyOwoJcHVibGljICRpbXBvcnRDb3VudDsKCglmdW5jdGlvbiBfX2NvbnN0cnVjdCggJGV2YWxFbnYgKXsKCQkkdGhpcy0+ZW52ID0gJGV2YWxFbnY7CgkJJHRoaXMtPmltcG9ydENvdW50ID0gMDsKCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCk7Cgl9CgoKCWZ1bmN0aW9uIHJ1biggJHJvb3QgKXsKCQkkcm9vdCA9ICR0aGlzLT52aXNpdE9iaigkcm9vdCk7CgkJJHRoaXMtPmlzRmluaXNoZWQgPSB0cnVlOwoKCQkvL2lmKCAkdGhpcy0+aW1wb3J0Q291bnQgPT09IDApIHsKCQkvLwkkdGhpcy0+X2ZpbmlzaCgpOwoJCS8vfQoJfQoKCWZ1bmN0aW9uIHZpc2l0SW1wb3J0KCRpbXBvcnROb2RlLCAmJHZpc2l0RGVlcGVyICl7CgkJJGltcG9ydFZpc2l0b3IgPSAkdGhpczsKCQkkaW5saW5lQ1NTID0gJGltcG9ydE5vZGUtPm9wdGlvbnNbJ2lubGluZSddOwoKCQlpZiggISRpbXBvcnROb2RlLT5jc3MgfHwgJGlubGluZUNTUyApewoJCQkkZXZhbGRJbXBvcnROb2RlID0gJGltcG9ydE5vZGUtPmNvbXBpbGVGb3JJbXBvcnQoJHRoaXMtPmVudik7CgoJCQlpZiggJGV2YWxkSW1wb3J0Tm9kZSAmJiAoISRldmFsZEltcG9ydE5vZGUtPmNzcyB8fCAkaW5saW5lQ1NTKSApewoJCQkJJGltcG9ydE5vZGUgPSAkZXZhbGRJbXBvcnROb2RlOwoJCQkJJHRoaXMtPmltcG9ydENvdW50Kys7CgkJCQkkZW52ID0gY2xvbmUgJHRoaXMtPmVudjsKCgkJCQlpZiggKGlzc2V0KCRpbXBvcnROb2RlLT5vcHRpb25zWydtdWx0aXBsZSddKSAmJiAkaW1wb3J0Tm9kZS0+b3B0aW9uc1snbXVsdGlwbGUnXSkgKXsKCQkJCQkkZW52LT5pbXBvcnRNdWx0aXBsZSA9IHRydWU7CgkJCQl9CgoJCQkJLy9nZXQgcGF0aCAmIHVyaQoJCQkJJHBhdGhfYW5kX3VyaSA9IG51bGw7CgkJCQlpZiggaXNfY2FsbGFibGUoTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbXBvcnRfY2FsbGJhY2snXSkgKXsKCQkJCQkkcGF0aF9hbmRfdXJpID0gY2FsbF91c2VyX2Z1bmMoTGVzc19QYXJzZXI6OiRvcHRpb25zWydpbXBvcnRfY2FsbGJhY2snXSwkaW1wb3J0Tm9kZSk7CgkJCQl9CgoJCQkJaWYoICEkcGF0aF9hbmRfdXJpICl7CgkJCQkJJHBhdGhfYW5kX3VyaSA9ICRpbXBvcnROb2RlLT5QYXRoQW5kVXJpKCk7CgkJCQl9CgoJCQkJaWYoICRwYXRoX2FuZF91cmkgKXsKCQkJCQlsaXN0KCRmdWxsX3BhdGgsICR1cmkpID0gJHBhdGhfYW5kX3VyaTsKCQkJCX1lbHNlewoJCQkJCSRmdWxsX3BhdGggPSAkdXJpID0gJGltcG9ydE5vZGUtPmdldFBhdGgoKTsKCQkJCX0KCgoJCQkJLy9pbXBvcnQgb25jZQoJCQkJaWYoICRpbXBvcnROb2RlLT5za2lwKCAkZnVsbF9wYXRoLCAkZW52KSApewoJCQkJCXJldHVybiBhcnJheSgpOwoJCQkJfQoKCQkJCWlmKCAkaW1wb3J0Tm9kZS0+b3B0aW9uc1snaW5saW5lJ10gKXsKCQkJCQkvL3RvZG8gbmVlZHMgdG8gcmVmZXJlbmNlIGNzcyBmaWxlIG5vdCBpbXBvcnQKCQkJCQkvLyRjb250ZW50cyA9IG5ldyBMZXNzX1RyZWVfQW5vbnltb3VzKCRpbXBvcnROb2RlLT5yb290LCAwLCBhcnJheSgnZmlsZW5hbWUnPT4kaW1wb3J0Tm9kZS0+aW1wb3J0ZWRGaWxlbmFtZSksIHRydWUgKTsKCgkJCQkJTGVzc19QYXJzZXI6OkFkZFBhcnNlZEZpbGUoJGZ1bGxfcGF0aCk7CgkJCQkJJGNvbnRlbnRzID0gbmV3IExlc3NfVHJlZV9Bbm9ueW1vdXMoIGZpbGVfZ2V0X2NvbnRlbnRzKCRmdWxsX3BhdGgpLCAwLCBhcnJheSgpLCB0cnVlICk7CgoJCQkJCWlmKCAkaW1wb3J0Tm9kZS0+ZmVhdHVyZXMgKXsKCQkJCQkJcmV0dXJuIG5ldyBMZXNzX1RyZWVfTWVkaWEoIGFycmF5KCRjb250ZW50cyksICRpbXBvcnROb2RlLT5mZWF0dXJlcy0+dmFsdWUgKTsKCQkJCQl9CgoJCQkJCXJldHVybiBhcnJheSggJGNvbnRlbnRzICk7CgkJCQl9CgoKCQkJCS8vIGNzcyA/CgkJCQlpZiggJGltcG9ydE5vZGUtPmNzcyApewoJCQkJCSRmZWF0dXJlcyA9ICggJGltcG9ydE5vZGUtPmZlYXR1cmVzID8gJGltcG9ydE5vZGUtPmZlYXR1cmVzLT5jb21waWxlKCRlbnYpIDogbnVsbCApOwoJCQkJCXJldHVybiBuZXcgTGVzc19UcmVlX0ltcG9ydCggJGltcG9ydE5vZGUtPmNvbXBpbGVQYXRoKCAkZW52KSwgJGZlYXR1cmVzLCAkaW1wb3J0Tm9kZS0+b3B0aW9ucywgJHRoaXMtPmluZGV4KTsKCQkJCX0KCgkJCQlyZXR1cm4gJGltcG9ydE5vZGUtPlBhcnNlSW1wb3J0KCAkZnVsbF9wYXRoLCAkdXJpLCAkZW52ICk7CgkJCX0KCgkJfQoKCQkkdmlzaXREZWVwZXIgPSBmYWxzZTsKCQlyZXR1cm4gJGltcG9ydE5vZGU7Cgl9CgoKCWZ1bmN0aW9uIHZpc2l0UnVsZSggJHJ1bGVOb2RlLCAmJHZpc2l0RGVlcGVyICl7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7CgkJcmV0dXJuICRydWxlTm9kZTsKCX0KCglmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZSgkZGlyZWN0aXZlTm9kZSwgJHZpc2l0QXJncyl7CgkJYXJyYXlfdW5zaGlmdCgkdGhpcy0+ZW52LT5mcmFtZXMsJGRpcmVjdGl2ZU5vZGUpOwoJCXJldHVybiAkZGlyZWN0aXZlTm9kZTsKCX0KCglmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZU91dCgkZGlyZWN0aXZlTm9kZSkgewoJCWFycmF5X3NoaWZ0KCR0aGlzLT5lbnYtPmZyYW1lcyk7Cgl9CgoJZnVuY3Rpb24gdmlzaXRNaXhpbkRlZmluaXRpb24oJG1peGluRGVmaW5pdGlvbk5vZGUsICR2aXNpdEFyZ3MpIHsKCQlhcnJheV91bnNoaWZ0KCR0aGlzLT5lbnYtPmZyYW1lcywkbWl4aW5EZWZpbml0aW9uTm9kZSk7CgkJcmV0dXJuICRtaXhpbkRlZmluaXRpb25Ob2RlOwoJfQoKCWZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uT3V0KCRtaXhpbkRlZmluaXRpb25Ob2RlKSB7CgkJYXJyYXlfc2hpZnQoJHRoaXMtPmVudi0+ZnJhbWVzKTsKCX0KCglmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoJHJ1bGVzZXROb2RlLCAkdmlzaXRBcmdzKSB7CgkJYXJyYXlfdW5zaGlmdCgkdGhpcy0+ZW52LT5mcmFtZXMsJHJ1bGVzZXROb2RlKTsKCQlyZXR1cm4gJHJ1bGVzZXROb2RlOwoJfQoKCWZ1bmN0aW9uIHZpc2l0UnVsZXNldE91dCgkcnVsZXNldE5vZGUpIHsKCQlhcnJheV9zaGlmdCgkdGhpcy0+ZW52LT5mcmFtZXMpOwoJfQoKCWZ1bmN0aW9uIHZpc2l0TWVkaWEoJG1lZGlhTm9kZSwgJHZpc2l0QXJncykgewoJCWFycmF5X3Vuc2hpZnQoJHRoaXMtPmVudi0+ZnJhbWVzLCAkbWVkaWFOb2RlLT5ydWxlc2V0KTsKCQlyZXR1cm4gJG1lZGlhTm9kZTsKCX0KCglmdW5jdGlvbiB2aXNpdE1lZGlhT3V0KCRtZWRpYU5vZGUpIHsKCQlhcnJheV9zaGlmdCgkdGhpcy0+ZW52LT5mcmFtZXMpOwoJfQoKfQoqLwoKCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/joinSelector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBKb2luIFNlbGVjdG9yIFZpc2l0b3IKICoKICogQHBhY2thZ2UgTGVzcwogKiBAc3VicGFja2FnZSB2aXNpdG9yCiAqLwpjbGFzcyBMZXNzX1Zpc2l0b3Jfam9pblNlbGVjdG9yIGV4dGVuZHMgTGVzc19WaXNpdG9yewoKCXB1YmxpYyAkY29udGV4dHMgPSBhcnJheSggYXJyYXkoKSApOwoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBydW4oICRyb290ICl7CgkJcmV0dXJuICR0aGlzLT52aXNpdE9iaigkcm9vdCk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZSggJHJ1bGVOb2RlLCAmJHZpc2l0RGVlcGVyICl7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uKCAkbWl4aW5EZWZpbml0aW9uTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoICRydWxlc2V0Tm9kZSApewoKCQkkcGF0aHMgPSBhcnJheSgpOwoKCQlpZiggISRydWxlc2V0Tm9kZS0+cm9vdCApewoJCQkkc2VsZWN0b3JzID0gYXJyYXkoKTsKCgkJCWlmKCAkcnVsZXNldE5vZGUtPnNlbGVjdG9ycyAmJiAkcnVsZXNldE5vZGUtPnNlbGVjdG9ycyApewoJCQkJZm9yZWFjaCgkcnVsZXNldE5vZGUtPnNlbGVjdG9ycyBhcyAkc2VsZWN0b3IpewoJCQkJCWlmKCAkc2VsZWN0b3ItPmdldElzT3V0cHV0KCkgKXsKCQkJCQkJJHNlbGVjdG9yc1tdID0gJHNlbGVjdG9yOwoJCQkJCX0KCQkJCX0KCQkJfQoKCQkJaWYoICEkc2VsZWN0b3JzICl7CgkJCQkkcnVsZXNldE5vZGUtPnNlbGVjdG9ycyA9IG51bGw7CgkJCQkkcnVsZXNldE5vZGUtPnJ1bGVzID0gbnVsbDsKCQkJfWVsc2V7CgkJCQkkY29udGV4dCA9IGVuZCgkdGhpcy0+Y29udGV4dHMpOyAvLyRjb250ZXh0ID0gJHRoaXMtPmNvbnRleHRzWyBjb3VudCgkdGhpcy0+Y29udGV4dHMpIC0gMV07CgkJCQkkcGF0aHMgPSAkcnVsZXNldE5vZGUtPmpvaW5TZWxlY3RvcnMoICRjb250ZXh0LCAkc2VsZWN0b3JzKTsKCQkJfQoKCQkJJHJ1bGVzZXROb2RlLT5wYXRocyA9ICRwYXRoczsKCQl9CgoJCSR0aGlzLT5jb250ZXh0c1tdID0gJHBhdGhzOyAvL2RpZmZlcmVudCBmcm9tIGxlc3MuanMuIFBsYWNlZCBhZnRlciBqb2luU2VsZWN0b3JzKCkgc28gdGhhdCAkdGhpcy0+Y29udGV4dHMgd2lsbCBnZXQgY29ycmVjdCAkcGF0aHMKCX0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmlzaXRSdWxlc2V0T3V0KCl7CgkJYXJyYXlfcG9wKCR0aGlzLT5jb250ZXh0cyk7Cgl9CgogICAgcHVibGljIGZ1bmN0aW9uIHZpc2l0TWVkaWEoJG1lZGlhTm9kZSkgewoJCSRjb250ZXh0ID0gZW5kKCR0aGlzLT5jb250ZXh0cyk7IC8vJGNvbnRleHQgPSAkdGhpcy0+Y29udGV4dHNbIGNvdW50KCR0aGlzLT5jb250ZXh0cykgLSAxXTsKCgkJaWYoICFjb3VudCgkY29udGV4dCkgfHwgKGlzX29iamVjdCgkY29udGV4dFswXSkgJiYgJGNvbnRleHRbMF0tPm11bHRpTWVkaWEpICl7CgkJCSRtZWRpYU5vZGUtPnJ1bGVzWzBdLT5yb290ID0gdHJ1ZTsKCQl9Cgl9Cgp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/processExtends.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBQcm9jZXNzIEV4dGVuZHMgVmlzaXRvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHZpc2l0b3IKICovCmNsYXNzIExlc3NfVmlzaXRvcl9wcm9jZXNzRXh0ZW5kcyBleHRlbmRzIExlc3NfVmlzaXRvcnsKCglwdWJsaWMgJGFsbEV4dGVuZHNTdGFjazsKCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfUnVsZXNldCAkcm9vdAoJICovCglwdWJsaWMgZnVuY3Rpb24gcnVuKCAkcm9vdCApewoJCSRleHRlbmRGaW5kZXIgPSBuZXcgTGVzc19WaXNpdG9yX2V4dGVuZEZpbmRlcigpOwoJCSRleHRlbmRGaW5kZXItPnJ1biggJHJvb3QgKTsKCQlpZiggISRleHRlbmRGaW5kZXItPmZvdW5kRXh0ZW5kcyl7CgkJCXJldHVybiAkcm9vdDsKCQl9CgoJCSRyb290LT5hbGxFeHRlbmRzID0gJHRoaXMtPmRvRXh0ZW5kQ2hhaW5pbmcoICRyb290LT5hbGxFeHRlbmRzLCAkcm9vdC0+YWxsRXh0ZW5kcyk7CgoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgPSBhcnJheSgpOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbXSA9ICYkcm9vdC0+YWxsRXh0ZW5kczsKCgkJcmV0dXJuICR0aGlzLT52aXNpdE9iaiggJHJvb3QgKTsKCX0KCglwcml2YXRlIGZ1bmN0aW9uIGRvRXh0ZW5kQ2hhaW5pbmcoICRleHRlbmRzTGlzdCwgJGV4dGVuZHNMaXN0VGFyZ2V0LCAkaXRlcmF0aW9uQ291bnQgPSAwKXsKCQkvLwoJCS8vIGNoYWluaW5nIGlzIGRpZmZlcmVudCBmcm9tIG5vcm1hbCBleHRlbnNpb24uLiBpZiB3ZSBleHRlbmQgYW4gZXh0ZW5kIHRoZW4gd2UgYXJlIG5vdCBqdXN0IGNvcHlpbmcsIGFsdGVyaW5nIGFuZCBwYXN0aW5nCgkJLy8gdGhlIHNlbGVjdG9yIHdlIHdvdWxkIGRvIG5vcm1hbGx5LCBidXQgd2UgYXJlIGFsc28gYWRkaW5nIGFuIGV4dGVuZCB3aXRoIHRoZSBzYW1lIHRhcmdldCBzZWxlY3RvcgoJCS8vIHRoaXMgbWVhbnMgdGhpcyBuZXcgZXh0ZW5kIGNhbiB0aGVuIGdvIGFuZCBhbHRlciBvdGhlciBleHRlbmRzCgkJLy8KCQkvLyB0aGlzIG1ldGhvZCBkZWFscyB3aXRoIGFsbCB0aGUgY2hhaW5pbmcgd29yayAtIHdpdGhvdXQgaXQsIGV4dGVuZCBpcyBmbGF0IGFuZCBkb2Vzbid0IHdvcmsgb24gb3RoZXIgZXh0ZW5kIHNlbGVjdG9ycwoJCS8vIHRoaXMgaXMgYWxzbyB0aGUgbW9zdCBleHBlbnNpdmUuLiBhbmQgYSBtYXRjaCBvbiBvbmUgc2VsZWN0b3IgY2FuIGNhdXNlIGFuIGV4dGVuc2lvbiBvZiBhIHNlbGVjdG9yIHdlIGhhZCBhbHJlYWR5IHByb2Nlc3NlZCBpZgoJCS8vIHdlIGxvb2sgYXQgZWFjaCBzZWxlY3RvciBhdCBhIHRpbWUsIGFzIGlzIGRvbmUgaW4gdmlzaXRSdWxlc2V0CgoJCSRleHRlbmRzVG9BZGQgPSBhcnJheSgpOwoKCgkJLy9sb29wIHRocm91Z2ggY29tcGFyaW5nIGV2ZXJ5IGV4dGVuZCB3aXRoIGV2ZXJ5IHRhcmdldCBleHRlbmQuCgkJLy8gYSB0YXJnZXQgZXh0ZW5kIGlzIHRoZSBvbmUgb24gdGhlIHJ1bGVzZXQgd2UgYXJlIGxvb2tpbmcgYXQgY29weS9lZGl0L3Bhc3RpbmcgaW4gcGxhY2UKCQkvLyBlLmcuIC5hOmV4dGVuZCguYikge30gYW5kIC5iOmV4dGVuZCguYykge30gdGhlbiB0aGUgZmlyc3QgZXh0ZW5kIGV4dGVuZHMgdGhlIHNlY29uZCBvbmUKCQkvLyBhbmQgdGhlIHNlY29uZCBpcyB0aGUgdGFyZ2V0LgoJCS8vIHRoZSBzZXBlcmF0aW9uIGludG8gdHdvIGxpc3RzIGFsbG93cyB1cyB0byBwcm9jZXNzIGEgc3Vic2V0IG9mIGNoYWlucyB3aXRoIGEgYmlnZ2VyIHNldCwgYXMgaXMgdGhlCgkJLy8gY2FzZSB3aGVuIHByb2Nlc3NpbmcgbWVkaWEgcXVlcmllcwoJCWZvciggJGV4dGVuZEluZGV4ID0gMCwgJGV4dGVuZHNMaXN0X2xlbiA9IGNvdW50KCRleHRlbmRzTGlzdCk7ICRleHRlbmRJbmRleCA8ICRleHRlbmRzTGlzdF9sZW47ICRleHRlbmRJbmRleCsrICl7CgkJCWZvciggJHRhcmdldEV4dGVuZEluZGV4ID0gMDsgJHRhcmdldEV4dGVuZEluZGV4IDwgY291bnQoJGV4dGVuZHNMaXN0VGFyZ2V0KTsgJHRhcmdldEV4dGVuZEluZGV4KysgKXsKCgkJCQkkZXh0ZW5kID0gJGV4dGVuZHNMaXN0WyRleHRlbmRJbmRleF07CgkJCQkkdGFyZ2V0RXh0ZW5kID0gJGV4dGVuZHNMaXN0VGFyZ2V0WyR0YXJnZXRFeHRlbmRJbmRleF07CgoJCQkJLy8gbG9vayBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcwoJCQkJaWYoIGluX2FycmF5KCR0YXJnZXRFeHRlbmQtPm9iamVjdF9pZCwgJGV4dGVuZC0+cGFyZW50X2lkcyx0cnVlKSApewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCS8vIGZpbmQgYSBtYXRjaCBpbiB0aGUgdGFyZ2V0IGV4dGVuZHMgc2VsZiBzZWxlY3RvciAodGhlIGJpdCBiZWZvcmUgOmV4dGVuZCkKCQkJCSRzZWxlY3RvclBhdGggPSBhcnJheSggJHRhcmdldEV4dGVuZC0+c2VsZlNlbGVjdG9yc1swXSApOwoJCQkJJG1hdGNoZXMgPSAkdGhpcy0+ZmluZE1hdGNoKCAkZXh0ZW5kLCAkc2VsZWN0b3JQYXRoKTsKCgoJCQkJaWYoICRtYXRjaGVzICl7CgoJCQkJCS8vIHdlIGZvdW5kIGEgbWF0Y2gsIHNvIGZvciBlYWNoIHNlbGYgc2VsZWN0b3IuLgoJCQkJCWZvcmVhY2goJGV4dGVuZC0+c2VsZlNlbGVjdG9ycyBhcyAkc2VsZlNlbGVjdG9yICl7CgoKCQkJCQkJLy8gcHJvY2VzcyB0aGUgZXh0ZW5kIGFzIHVzdWFsCgkJCQkJCSRuZXdTZWxlY3RvciA9ICR0aGlzLT5leHRlbmRTZWxlY3RvciggJG1hdGNoZXMsICRzZWxlY3RvclBhdGgsICRzZWxmU2VsZWN0b3IpOwoKCQkJCQkJLy8gYnV0IG5vdyB3ZSBjcmVhdGUgYSBuZXcgZXh0ZW5kIGZyb20gaXQKCQkJCQkJJG5ld0V4dGVuZCA9IG5ldyBMZXNzX1RyZWVfRXh0ZW5kKCAkdGFyZ2V0RXh0ZW5kLT5zZWxlY3RvciwgJHRhcmdldEV4dGVuZC0+b3B0aW9uLCAwKTsKCQkJCQkJJG5ld0V4dGVuZC0+c2VsZlNlbGVjdG9ycyA9ICRuZXdTZWxlY3RvcjsKCgkJCQkJCS8vIGFkZCB0aGUgZXh0ZW5kIG9udG8gdGhlIGxpc3Qgb2YgZXh0ZW5kcyBmb3IgdGhhdCBzZWxlY3RvcgoJCQkJCQllbmQoJG5ld1NlbGVjdG9yKS0+ZXh0ZW5kTGlzdCA9IGFycmF5KCRuZXdFeHRlbmQpOwoJCQkJCQkvLyRuZXdTZWxlY3RvclsgY291bnQoJG5ld1NlbGVjdG9yKS0xXS0+ZXh0ZW5kTGlzdCA9IGFycmF5KCRuZXdFeHRlbmQpOwoKCQkJCQkJLy8gcmVjb3JkIHRoYXQgd2UgbmVlZCB0byBhZGQgaXQuCgkJCQkJCSRleHRlbmRzVG9BZGRbXSA9ICRuZXdFeHRlbmQ7CgkJCQkJCSRuZXdFeHRlbmQtPnJ1bGVzZXQgPSAkdGFyZ2V0RXh0ZW5kLT5ydWxlc2V0OwoKCQkJCQkJLy9yZW1lbWJlciBpdHMgcGFyZW50cyBmb3IgY2lyY3VsYXIgcmVmZXJlbmNlcwoJCQkJCQkkbmV3RXh0ZW5kLT5wYXJlbnRfaWRzID0gYXJyYXlfbWVyZ2UoJG5ld0V4dGVuZC0+cGFyZW50X2lkcywkdGFyZ2V0RXh0ZW5kLT5wYXJlbnRfaWRzLCRleHRlbmQtPnBhcmVudF9pZHMpOwoKCQkJCQkJLy8gb25seSBwcm9jZXNzIHRoZSBzZWxlY3RvciBvbmNlLi4gaWYgd2UgaGF2ZSA6ZXh0ZW5kKC5hLC5iKSB0aGVuIG11bHRpcGxlCgkJCQkJCS8vIGV4dGVuZHMgd2lsbCBsb29rIGF0IHRoZSBzYW1lIHNlbGVjdG9yIHBhdGgsIHNvIHdoZW4gZXh0ZW5kaW5nCgkJCQkJCS8vIHdlIGtub3cgdGhhdCBhbnkgb3RoZXJzIHdpbGwgYmUgZHVwbGljYXRlcyBpbiB0ZXJtcyBvZiB3aGF0IGlzIGFkZGVkIHRvIHRoZSBjc3MKCQkJCQkJaWYoICR0YXJnZXRFeHRlbmQtPmZpcnN0RXh0ZW5kT25UaGlzU2VsZWN0b3JQYXRoICl7CgkJCQkJCQkkbmV3RXh0ZW5kLT5maXJzdEV4dGVuZE9uVGhpc1NlbGVjdG9yUGF0aCA9IHRydWU7CgkJCQkJCQkkdGFyZ2V0RXh0ZW5kLT5ydWxlc2V0LT5wYXRoc1tdID0gJG5ld1NlbGVjdG9yOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQlpZiggJGV4dGVuZHNUb0FkZCApewoJCQkvLyB0cnkgdG8gZGV0ZWN0IGNpcmN1bGFyIHJlZmVyZW5jZXMgdG8gc3RvcCBhIHN0YWNrIG92ZXJmbG93LgoJCQkvLyBtYXkgbm8gbG9uZ2VyIGJlIG5lZWRlZC4JCQkkdGhpcy0+ZXh0ZW5kQ2hhaW5Db3VudCsrOwoJCQlpZiggJGl0ZXJhdGlvbkNvdW50ID4gMTAwKSB7CgoJCQkJdHJ5ewoJCQkJCSRzZWxlY3Rvck9uZSA9ICRleHRlbmRzVG9BZGRbMF0tPnNlbGZTZWxlY3RvcnNbMF0tPnRvQ1NTKCk7CgkJCQkJJHNlbGVjdG9yVHdvID0gJGV4dGVuZHNUb0FkZFswXS0+c2VsZWN0b3ItPnRvQ1NTKCk7CgkJCQl9Y2F0Y2goRXhjZXB0aW9uICRlKXsKCQkJCQkkc2VsZWN0b3JPbmUgPSAie3VuYWJsZSB0byBjYWxjdWxhdGV9IjsKCQkJCQkkc2VsZWN0b3JUd28gPSAie3VuYWJsZSB0byBjYWxjdWxhdGV9IjsKCQkJCX0KCgkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fUGFyc2VyKCJleHRlbmQgY2lyY3VsYXIgcmVmZXJlbmNlIGRldGVjdGVkLiBPbmUgb2YgdGhlIGNpcmN1bGFyIGV4dGVuZHMgaXMgY3VycmVudGx5OiIgLiAkc2VsZWN0b3JPbmUgLiAiOmV4dGVuZCgiIC4gJHNlbGVjdG9yVHdvIC4gIikiKTsKCQkJfQoKCQkJLy8gbm93IHByb2Nlc3MgdGhlIG5ldyBleHRlbmRzIG9uIHRoZSBleGlzdGluZyBydWxlcyBzbyB0aGF0IHdlIGNhbiBoYW5kbGUgYSBleHRlbmRpbmcgYiBleHRlbmRpbmcgYyBlY3RlbmRpbmcgZCBleHRlbmRpbmcgZS4uLgoJCQkkZXh0ZW5kc1RvQWRkID0gJHRoaXMtPmRvRXh0ZW5kQ2hhaW5pbmcoICRleHRlbmRzVG9BZGQsICRleHRlbmRzTGlzdFRhcmdldCwgJGl0ZXJhdGlvbkNvdW50KzEpOwoJCX0KCgkJcmV0dXJuIGFycmF5X21lcmdlKCRleHRlbmRzTGlzdCwgJGV4dGVuZHNUb0FkZCk7Cgl9CgoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdFJ1bGUoICRydWxlTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdE1peGluRGVmaW5pdGlvbiggJG1peGluRGVmaW5pdGlvbk5vZGUsICYkdmlzaXREZWVwZXIgKXsKCQkkdmlzaXREZWVwZXIgPSBmYWxzZTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gdmlzaXRTZWxlY3RvciggJHNlbGVjdG9yTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSR2aXNpdERlZXBlciA9IGZhbHNlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoJHJ1bGVzZXROb2RlKXsKCgoJCWlmKCAkcnVsZXNldE5vZGUtPnJvb3QgKXsKCQkJcmV0dXJuOwoJCX0KCgkJJGFsbEV4dGVuZHMJPSBlbmQoJHRoaXMtPmFsbEV4dGVuZHNTdGFjayk7CgkJJHBhdGhzX2xlbiA9IGNvdW50KCRydWxlc2V0Tm9kZS0+cGF0aHMpOwoKCQkvLyBsb29rIGF0IGVhY2ggc2VsZWN0b3IgcGF0aCBpbiB0aGUgcnVsZXNldCwgZmluZCBhbnkgZXh0ZW5kIG1hdGNoZXMgYW5kIHRoZW4gY29weSwgZmluZCBhbmQgcmVwbGFjZQoJCWZvcmVhY2goJGFsbEV4dGVuZHMgYXMgJGFsbEV4dGVuZCl7CgkJCWZvcigkcGF0aEluZGV4ID0gMDsgJHBhdGhJbmRleCA8ICRwYXRoc19sZW47ICRwYXRoSW5kZXgrKyApewoKCQkJCS8vIGV4dGVuZGluZyBleHRlbmRzIGhhcHBlbnMgaW5pdGlhbGx5LCBiZWZvcmUgdGhlIG1haW4gcGFzcwoJCQkJaWYoIGlzc2V0KCRydWxlc2V0Tm9kZS0+ZXh0ZW5kT25FdmVyeVBhdGgpICYmICRydWxlc2V0Tm9kZS0+ZXh0ZW5kT25FdmVyeVBhdGggKXsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQkkc2VsZWN0b3JQYXRoID0gJHJ1bGVzZXROb2RlLT5wYXRoc1skcGF0aEluZGV4XTsKCgkJCQlpZiggZW5kKCRzZWxlY3RvclBhdGgpLT5leHRlbmRMaXN0ICl7CgkJCQkJY29udGludWU7CgkJCQl9CgoJCQkJJHRoaXMtPkV4dGVuZE1hdGNoKCAkcnVsZXNldE5vZGUsICRhbGxFeHRlbmQsICRzZWxlY3RvclBhdGgpOwoKCQkJfQoJCX0KCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBFeHRlbmRNYXRjaCggJHJ1bGVzZXROb2RlLCAkZXh0ZW5kLCAkc2VsZWN0b3JQYXRoICl7CgkJJG1hdGNoZXMgPSAkdGhpcy0+ZmluZE1hdGNoKCRleHRlbmQsICRzZWxlY3RvclBhdGgpOwoKCQlpZiggJG1hdGNoZXMgKXsKCQkJZm9yZWFjaCgkZXh0ZW5kLT5zZWxmU2VsZWN0b3JzIGFzICRzZWxmU2VsZWN0b3IgKXsKCQkJCSRydWxlc2V0Tm9kZS0+cGF0aHNbXSA9ICR0aGlzLT5leHRlbmRTZWxlY3RvcigkbWF0Y2hlcywgJHNlbGVjdG9yUGF0aCwgJHNlbGZTZWxlY3Rvcik7CgkJCX0KCQl9Cgl9CgoKCglwcml2YXRlIGZ1bmN0aW9uIGZpbmRNYXRjaCgkZXh0ZW5kLCAkaGF5c3RhY2tTZWxlY3RvclBhdGggKXsKCgoJCWlmKCAhJHRoaXMtPkhhc01hdGNoZXMoJGV4dGVuZCwgJGhheXN0YWNrU2VsZWN0b3JQYXRoKSApewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCgkJLy8KCQkvLyBsb29rIHRocm91Z2ggdGhlIGhheXN0YWNrIHNlbGVjdG9yIHBhdGggdG8gdHJ5IGFuZCBmaW5kIHRoZSBuZWVkbGUgLSBleHRlbmQuc2VsZWN0b3IKCQkvLyByZXR1cm5zIGFuIGFycmF5IG9mIHNlbGVjdG9yIG1hdGNoZXMgdGhhdCBjYW4gdGhlbiBiZSByZXBsYWNlZAoJCS8vCgkJJG5lZWRsZUVsZW1lbnRzID0gJGV4dGVuZC0+c2VsZWN0b3ItPmVsZW1lbnRzOwoJCSRwb3RlbnRpYWxNYXRjaGVzID0gYXJyYXkoKTsKCQkkcG90ZW50aWFsTWF0Y2hlc19sZW4gPSAwOwoJCSRwb3RlbnRpYWxNYXRjaCA9IG51bGw7CgkJJG1hdGNoZXMgPSBhcnJheSgpOwoKCgoJCS8vIGxvb3AgdGhyb3VnaCB0aGUgaGF5c3RhY2sgZWxlbWVudHMKCQkkaGF5c3RhY2tfcGF0aF9sZW4gPSBjb3VudCgkaGF5c3RhY2tTZWxlY3RvclBhdGgpOwoJCWZvcigkaGF5c3RhY2tTZWxlY3RvckluZGV4ID0gMDsgJGhheXN0YWNrU2VsZWN0b3JJbmRleCA8ICRoYXlzdGFja19wYXRoX2xlbjsgJGhheXN0YWNrU2VsZWN0b3JJbmRleCsrICl7CgkJCSRoYWNrc3RhY2tTZWxlY3RvciA9ICRoYXlzdGFja1NlbGVjdG9yUGF0aFskaGF5c3RhY2tTZWxlY3RvckluZGV4XTsKCgkJCSRoYXlzdGFja19lbGVtZW50c19sZW4gPSBjb3VudCgkaGFja3N0YWNrU2VsZWN0b3ItPmVsZW1lbnRzKTsKCQkJZm9yKCRoYWNrc3RhY2tFbGVtZW50SW5kZXggPSAwOyAkaGFja3N0YWNrRWxlbWVudEluZGV4IDwgJGhheXN0YWNrX2VsZW1lbnRzX2xlbjsgJGhhY2tzdGFja0VsZW1lbnRJbmRleCsrICl7CgoJCQkJJGhheXN0YWNrRWxlbWVudCA9ICRoYWNrc3RhY2tTZWxlY3Rvci0+ZWxlbWVudHNbJGhhY2tzdGFja0VsZW1lbnRJbmRleF07CgoJCQkJLy8gaWYgd2UgYWxsb3cgZWxlbWVudHMgYmVmb3JlIG91ciBtYXRjaCB3ZSBjYW4gYWRkIGEgcG90ZW50aWFsIG1hdGNoIGV2ZXJ5IHRpbWUuIG90aGVyd2lzZSBvbmx5IGF0IHRoZSBmaXJzdCBlbGVtZW50LgoJCQkJaWYoICRleHRlbmQtPmFsbG93QmVmb3JlIHx8ICgkaGF5c3RhY2tTZWxlY3RvckluZGV4ID09PSAwICYmICRoYWNrc3RhY2tFbGVtZW50SW5kZXggPT09IDApICl7CgkJCQkJJHBvdGVudGlhbE1hdGNoZXNbXSA9IGFycmF5KCdwYXRoSW5kZXgnPT4gJGhheXN0YWNrU2VsZWN0b3JJbmRleCwgJ2luZGV4Jz0+ICRoYWNrc3RhY2tFbGVtZW50SW5kZXgsICdtYXRjaGVkJz0+IDAsICdpbml0aWFsQ29tYmluYXRvcic9PiAkaGF5c3RhY2tFbGVtZW50LT5jb21iaW5hdG9yKTsKCQkJCQkkcG90ZW50aWFsTWF0Y2hlc19sZW4rKzsKCQkJCX0KCgkJCQlmb3IoJGkgPSAwOyAkaSA8ICRwb3RlbnRpYWxNYXRjaGVzX2xlbjsgJGkrKyApewoKCQkJCQkkcG90ZW50aWFsTWF0Y2ggPSAmJHBvdGVudGlhbE1hdGNoZXNbJGldOwoJCQkJCSRwb3RlbnRpYWxNYXRjaCA9ICR0aGlzLT5Qb3RlbnRpYWxNYXRjaCggJHBvdGVudGlhbE1hdGNoLCAkbmVlZGxlRWxlbWVudHMsICRoYXlzdGFja0VsZW1lbnQsICRoYWNrc3RhY2tFbGVtZW50SW5kZXggKTsKCgoJCQkJCS8vIGlmIHdlIGFyZSBzdGlsbCB2YWxpZCBhbmQgaGF2ZSBmaW5pc2hlZCwgdGVzdCB3aGV0aGVyIHdlIGhhdmUgZWxlbWVudHMgYWZ0ZXIgYW5kIHdoZXRoZXIgdGhlc2UgYXJlIGFsbG93ZWQKCQkJCQlpZiggJHBvdGVudGlhbE1hdGNoICYmICRwb3RlbnRpYWxNYXRjaFsnbWF0Y2hlZCddID09PSAkZXh0ZW5kLT5zZWxlY3Rvci0+ZWxlbWVudHNfbGVuICl7CgkJCQkJCSRwb3RlbnRpYWxNYXRjaFsnZmluaXNoZWQnXSA9IHRydWU7CgoJCQkJCQlpZiggISRleHRlbmQtPmFsbG93QWZ0ZXIgJiYgKCRoYWNrc3RhY2tFbGVtZW50SW5kZXgrMSA8ICRoYXlzdGFja19lbGVtZW50c19sZW4gfHwgJGhheXN0YWNrU2VsZWN0b3JJbmRleCsxIDwgJGhheXN0YWNrX3BhdGhfbGVuKSApewoJCQkJCQkJJHBvdGVudGlhbE1hdGNoID0gbnVsbDsKCQkJCQkJfQoJCQkJCX0KCgkJCQkJLy8gaWYgbnVsbCB3ZSByZW1vdmUsIGlmIG5vdCwgd2UgYXJlIHN0aWxsIHZhbGlkLCBzbyBlaXRoZXIgcHVzaCBhcyBhIHZhbGlkIG1hdGNoIG9yIGNvbnRpbnVlCgkJCQkJaWYoICRwb3RlbnRpYWxNYXRjaCApewoJCQkJCQlpZiggJHBvdGVudGlhbE1hdGNoWydmaW5pc2hlZCddICl7CgkJCQkJCQkkcG90ZW50aWFsTWF0Y2hbJ2xlbmd0aCddID0gJGV4dGVuZC0+c2VsZWN0b3ItPmVsZW1lbnRzX2xlbjsKCQkJCQkJCSRwb3RlbnRpYWxNYXRjaFsnZW5kUGF0aEluZGV4J10gPSAkaGF5c3RhY2tTZWxlY3RvckluZGV4OwoJCQkJCQkJJHBvdGVudGlhbE1hdGNoWydlbmRQYXRoRWxlbWVudEluZGV4J10gPSAkaGFja3N0YWNrRWxlbWVudEluZGV4ICsgMTsgLy8gaW5kZXggYWZ0ZXIgZW5kIG9mIG1hdGNoCgkJCQkJCQkkcG90ZW50aWFsTWF0Y2hlcyA9IGFycmF5KCk7IC8vIHdlIGRvbid0IGFsbG93IG1hdGNoZXMgdG8gb3ZlcmxhcCwgc28gc3RhcnQgbWF0Y2hpbmcgYWdhaW4KCQkJCQkJCSRwb3RlbnRpYWxNYXRjaGVzX2xlbiA9IDA7CgkJCQkJCQkkbWF0Y2hlc1tdID0gJHBvdGVudGlhbE1hdGNoOwoJCQkJCQl9CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCgkJCQkJYXJyYXlfc3BsaWNlKCRwb3RlbnRpYWxNYXRjaGVzLCAkaSwgMSk7CgkJCQkJJHBvdGVudGlhbE1hdGNoZXNfbGVuLS07CgkJCQkJJGktLTsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuICRtYXRjaGVzOwoJfQoKCgkvLyBCZWZvcmUgZ29pbmcgdGhyb3VnaCBhbGwgdGhlIG5lc3RlZCBsb29wcywgbGV0cyBjaGVjayB0byBzZWUgaWYgYSBtYXRjaCBpcyBwb3NzaWJsZQoJLy8gUmVkdWNlcyBCb290c3RyYXAgMy4xIGNvbXBpbGUgdGltZSBmcm9tIH42LjVzIHRvIH41LjZzCglwcml2YXRlIGZ1bmN0aW9uIEhhc01hdGNoZXMoJGV4dGVuZCwgJGhheXN0YWNrU2VsZWN0b3JQYXRoKXsKCgkJaWYoICEkZXh0ZW5kLT5zZWxlY3Rvci0+Y2FjaGVhYmxlICl7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJJGZpcnN0X2VsID0gJGV4dGVuZC0+c2VsZWN0b3ItPl9vZWxlbWVudHNbMF07CgoJCWZvcmVhY2goJGhheXN0YWNrU2VsZWN0b3JQYXRoIGFzICRoYWNrc3RhY2tTZWxlY3Rvcil7CgkJCWlmKCAhJGhhY2tzdGFja1NlbGVjdG9yLT5jYWNoZWFibGUgKXsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgoJCQlpZiggaW5fYXJyYXkoJGZpcnN0X2VsLCAkaGFja3N0YWNrU2VsZWN0b3ItPl9vZWxlbWVudHMpICl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCgkvKioKCSAqIEBwYXJhbSBpbnRlZ2VyICRoYWNrc3RhY2tFbGVtZW50SW5kZXgKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBQb3RlbnRpYWxNYXRjaCggJHBvdGVudGlhbE1hdGNoLCAkbmVlZGxlRWxlbWVudHMsICRoYXlzdGFja0VsZW1lbnQsICRoYWNrc3RhY2tFbGVtZW50SW5kZXggKXsKCgoJCWlmKCAkcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSA+IDAgKXsKCgkJCS8vIHNlbGVjdG9ycyBhZGQgIiAiIG9udG8gdGhlIGZpcnN0IGVsZW1lbnQuIFdoZW4gd2UgdXNlICYgaXQgam9pbnMgdGhlIHNlbGVjdG9ycyB0b2dldGhlciwgYnV0IGlmIHdlIGRvbid0CgkJCS8vIHRoZW4gZWFjaCBzZWxlY3RvciBpbiBoYXlzdGFja1NlbGVjdG9yUGF0aCBoYXMgYSBzcGFjZSBiZWZvcmUgaXQgYWRkZWQgaW4gdGhlIHRvQ1NTIHBoYXNlLiBzbyB3ZSBuZWVkIHRvIHdvcmsgb3V0CgkJCS8vIHdoYXQgdGhlIHJlc3VsdGluZyBjb21iaW5hdG9yIHdpbGwgYmUKCQkJJHRhcmdldENvbWJpbmF0b3IgPSAkaGF5c3RhY2tFbGVtZW50LT5jb21iaW5hdG9yOwoJCQlpZiggJHRhcmdldENvbWJpbmF0b3IgPT09ICcnICYmICRoYWNrc3RhY2tFbGVtZW50SW5kZXggPT09IDAgKXsKCQkJCSR0YXJnZXRDb21iaW5hdG9yID0gJyAnOwoJCQl9CgoJCQlpZiggJG5lZWRsZUVsZW1lbnRzWyAkcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSBdLT5jb21iaW5hdG9yICE9PSAkdGFyZ2V0Q29tYmluYXRvciApewoJCQkJcmV0dXJuIG51bGw7CgkJCX0KCQl9CgoJCS8vIGlmIHdlIGRvbid0IG1hdGNoLCBudWxsIG91ciBtYXRjaCB0byBpbmRpY2F0ZSBmYWlsdXJlCgkJaWYoICEkdGhpcy0+aXNFbGVtZW50VmFsdWVzRXF1YWwoICRuZWVkbGVFbGVtZW50c1skcG90ZW50aWFsTWF0Y2hbJ21hdGNoZWQnXSBdLT52YWx1ZSwgJGhheXN0YWNrRWxlbWVudC0+dmFsdWUpICl7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJJHBvdGVudGlhbE1hdGNoWydmaW5pc2hlZCddID0gZmFsc2U7CgkJJHBvdGVudGlhbE1hdGNoWydtYXRjaGVkJ10rKzsKCgkJcmV0dXJuICRwb3RlbnRpYWxNYXRjaDsKCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBpc0VsZW1lbnRWYWx1ZXNFcXVhbCggJGVsZW1lbnRWYWx1ZTEsICRlbGVtZW50VmFsdWUyICl7CgoJCWlmKCAkZWxlbWVudFZhbHVlMSA9PT0gJGVsZW1lbnRWYWx1ZTIgKXsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQlpZiggaXNfc3RyaW5nKCRlbGVtZW50VmFsdWUxKSB8fCBpc19zdHJpbmcoJGVsZW1lbnRWYWx1ZTIpICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiggJGVsZW1lbnRWYWx1ZTEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfQXR0cmlidXRlICl7CgkJCXJldHVybiAkdGhpcy0+aXNBdHRyaWJ1dGVWYWx1ZXNFcXVhbCggJGVsZW1lbnRWYWx1ZTEsICRlbGVtZW50VmFsdWUyICk7CgkJfQoKCQkkZWxlbWVudFZhbHVlMSA9ICRlbGVtZW50VmFsdWUxLT52YWx1ZTsKCQlpZiggJGVsZW1lbnRWYWx1ZTEgaW5zdGFuY2VvZiBMZXNzX1RyZWVfU2VsZWN0b3IgKXsKCQkJcmV0dXJuICR0aGlzLT5pc1NlbGVjdG9yVmFsdWVzRXF1YWwoICRlbGVtZW50VmFsdWUxLCAkZWxlbWVudFZhbHVlMiApOwoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCgkvKioKCSAqIEBwYXJhbSBMZXNzX1RyZWVfU2VsZWN0b3IgJGVsZW1lbnRWYWx1ZTEKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBpc1NlbGVjdG9yVmFsdWVzRXF1YWwoICRlbGVtZW50VmFsdWUxLCAkZWxlbWVudFZhbHVlMiApewoKCQkkZWxlbWVudFZhbHVlMiA9ICRlbGVtZW50VmFsdWUyLT52YWx1ZTsKCQlpZiggISgkZWxlbWVudFZhbHVlMiBpbnN0YW5jZW9mIExlc3NfVHJlZV9TZWxlY3RvcikgfHwgJGVsZW1lbnRWYWx1ZTEtPmVsZW1lbnRzX2xlbiAhPT0gJGVsZW1lbnRWYWx1ZTItPmVsZW1lbnRzX2xlbiApewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmb3IoICRpID0gMDsgJGkgPCAkZWxlbWVudFZhbHVlMS0+ZWxlbWVudHNfbGVuOyAkaSsrICl7CgoJCQlpZiggJGVsZW1lbnRWYWx1ZTEtPmVsZW1lbnRzWyRpXS0+Y29tYmluYXRvciAhPT0gJGVsZW1lbnRWYWx1ZTItPmVsZW1lbnRzWyRpXS0+Y29tYmluYXRvciApewoJCQkJaWYoICRpICE9PSAwIHx8ICgkZWxlbWVudFZhbHVlMS0+ZWxlbWVudHNbJGldLT5jb21iaW5hdG9yIHx8ICcgJykgIT09ICgkZWxlbWVudFZhbHVlMi0+ZWxlbWVudHNbJGldLT5jb21iaW5hdG9yIHx8ICcgJykgKXsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCWlmKCAhJHRoaXMtPmlzRWxlbWVudFZhbHVlc0VxdWFsKCRlbGVtZW50VmFsdWUxLT5lbGVtZW50c1skaV0tPnZhbHVlLCAkZWxlbWVudFZhbHVlMi0+ZWxlbWVudHNbJGldLT52YWx1ZSkgKXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9BdHRyaWJ1dGUgJGVsZW1lbnRWYWx1ZTEKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBpc0F0dHJpYnV0ZVZhbHVlc0VxdWFsKCAkZWxlbWVudFZhbHVlMSwgJGVsZW1lbnRWYWx1ZTIgKXsKCgkJaWYoICRlbGVtZW50VmFsdWUxLT5vcCAhPT0gJGVsZW1lbnRWYWx1ZTItPm9wIHx8ICRlbGVtZW50VmFsdWUxLT5rZXkgIT09ICRlbGVtZW50VmFsdWUyLT5rZXkgKXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJaWYoICEkZWxlbWVudFZhbHVlMS0+dmFsdWUgfHwgISRlbGVtZW50VmFsdWUyLT52YWx1ZSApewoJCQlpZiggJGVsZW1lbnRWYWx1ZTEtPnZhbHVlIHx8ICRlbGVtZW50VmFsdWUyLT52YWx1ZSApIHsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCSRlbGVtZW50VmFsdWUxID0gKCRlbGVtZW50VmFsdWUxLT52YWx1ZS0+dmFsdWUgPyAkZWxlbWVudFZhbHVlMS0+dmFsdWUtPnZhbHVlIDogJGVsZW1lbnRWYWx1ZTEtPnZhbHVlICk7CgkJJGVsZW1lbnRWYWx1ZTIgPSAoJGVsZW1lbnRWYWx1ZTItPnZhbHVlLT52YWx1ZSA/ICRlbGVtZW50VmFsdWUyLT52YWx1ZS0+dmFsdWUgOiAkZWxlbWVudFZhbHVlMi0+dmFsdWUgKTsKCgkJcmV0dXJuICRlbGVtZW50VmFsdWUxID09PSAkZWxlbWVudFZhbHVlMjsKCX0KCgoJcHJpdmF0ZSBmdW5jdGlvbiBleHRlbmRTZWxlY3RvcigkbWF0Y2hlcywgJHNlbGVjdG9yUGF0aCwgJHJlcGxhY2VtZW50U2VsZWN0b3IpewoKCQkvL2ZvciBhIHNldCBvZiBtYXRjaGVzLCByZXBsYWNlIGVhY2ggbWF0Y2ggd2l0aCB0aGUgcmVwbGFjZW1lbnQgc2VsZWN0b3IKCgkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9IDA7CgkJJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPSAwOwoJCSRwYXRoID0gYXJyYXkoKTsKCQkkc2VsZWN0b3JQYXRoX2xlbiA9IGNvdW50KCRzZWxlY3RvclBhdGgpOwoKCQlmb3IoJG1hdGNoSW5kZXggPSAwLCAkbWF0Y2hlc19sZW4gPSBjb3VudCgkbWF0Y2hlcyk7ICRtYXRjaEluZGV4IDwgJG1hdGNoZXNfbGVuOyAkbWF0Y2hJbmRleCsrICl7CgoKCQkJJG1hdGNoID0gJG1hdGNoZXNbJG1hdGNoSW5kZXhdOwoJCQkkc2VsZWN0b3IgPSAkc2VsZWN0b3JQYXRoWyAkbWF0Y2hbJ3BhdGhJbmRleCddIF07CgoJCQkkZmlyc3RFbGVtZW50ID0gbmV3IExlc3NfVHJlZV9FbGVtZW50KAoJCQkJJG1hdGNoWydpbml0aWFsQ29tYmluYXRvciddLAoJCQkJJHJlcGxhY2VtZW50U2VsZWN0b3ItPmVsZW1lbnRzWzBdLT52YWx1ZSwKCQkJCSRyZXBsYWNlbWVudFNlbGVjdG9yLT5lbGVtZW50c1swXS0+aW5kZXgsCgkJCQkkcmVwbGFjZW1lbnRTZWxlY3Rvci0+ZWxlbWVudHNbMF0tPmN1cnJlbnRGaWxlSW5mbwoJCQkpOwoKCQkJaWYoICRtYXRjaFsncGF0aEluZGV4J10gPiAkY3VycmVudFNlbGVjdG9yUGF0aEluZGV4ICYmICRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID4gMCApewoJCQkJJGxhc3RfcGF0aCA9IGVuZCgkcGF0aCk7CgkJCQkkbGFzdF9wYXRoLT5lbGVtZW50cyA9IGFycmF5X21lcmdlKCAkbGFzdF9wYXRoLT5lbGVtZW50cywgYXJyYXlfc2xpY2UoICRzZWxlY3RvclBhdGhbJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleF0tPmVsZW1lbnRzLCAkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCkpOwoJCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXggPSAwOwoJCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCsrOwoJCQl9CgoJCQkkbmV3RWxlbWVudHMgPSBhcnJheV9tZXJnZSgKCQkJCWFycmF5X3NsaWNlKCRzZWxlY3Rvci0+ZWxlbWVudHMsICRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4LCAoJG1hdGNoWydpbmRleCddIC0gJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXgpICkgLy8gbGFzdCBwYXJhbWV0ZXIgb2YgYXJyYXlfc2xpY2UgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGxhc3QgcGFyYW1ldGVyIG9mIGphdmFzY3JpcHQncyBzbGljZQoJCQkJLCBhcnJheSgkZmlyc3RFbGVtZW50KQoJCQkJLCBhcnJheV9zbGljZSgkcmVwbGFjZW1lbnRTZWxlY3Rvci0+ZWxlbWVudHMsMSkKCQkJCSk7CgoJCQlpZiggJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9PT0gJG1hdGNoWydwYXRoSW5kZXgnXSAmJiAkbWF0Y2hJbmRleCA+IDAgKXsKCQkJCSRsYXN0X2tleSA9IGNvdW50KCRwYXRoKS0xOwoJCQkJJHBhdGhbJGxhc3Rfa2V5XS0+ZWxlbWVudHMgPSBhcnJheV9tZXJnZSgkcGF0aFskbGFzdF9rZXldLT5lbGVtZW50cywkbmV3RWxlbWVudHMpOwoJCQl9ZWxzZXsKCQkJCSRwYXRoID0gYXJyYXlfbWVyZ2UoICRwYXRoLCBhcnJheV9zbGljZSggJHNlbGVjdG9yUGF0aCwgJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCwgJG1hdGNoWydwYXRoSW5kZXgnXSApKTsKCQkJCSRwYXRoW10gPSBuZXcgTGVzc19UcmVlX1NlbGVjdG9yKCAkbmV3RWxlbWVudHMgKTsKCQkJfQoKCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCA9ICRtYXRjaFsnZW5kUGF0aEluZGV4J107CgkJCSRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gJG1hdGNoWydlbmRQYXRoRWxlbWVudEluZGV4J107CgkJCWlmKCAkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCA+PSBjb3VudCgkc2VsZWN0b3JQYXRoWyRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXhdLT5lbGVtZW50cykgKXsKCQkJCSRjdXJyZW50U2VsZWN0b3JQYXRoRWxlbWVudEluZGV4ID0gMDsKCQkJCSRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXgrKzsKCQkJfQoJCX0KCgkJaWYoICRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXggPCAkc2VsZWN0b3JQYXRoX2xlbiAmJiAkY3VycmVudFNlbGVjdG9yUGF0aEVsZW1lbnRJbmRleCA+IDAgKXsKCQkJJGxhc3RfcGF0aCA9IGVuZCgkcGF0aCk7CgkJCSRsYXN0X3BhdGgtPmVsZW1lbnRzID0gYXJyYXlfbWVyZ2UoICRsYXN0X3BhdGgtPmVsZW1lbnRzLCBhcnJheV9zbGljZSgkc2VsZWN0b3JQYXRoWyRjdXJyZW50U2VsZWN0b3JQYXRoSW5kZXhdLT5lbGVtZW50cywgJGN1cnJlbnRTZWxlY3RvclBhdGhFbGVtZW50SW5kZXgpKTsKCQkJJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleCsrOwoJCX0KCgkJJHNsaWNlX2xlbiA9ICRzZWxlY3RvclBhdGhfbGVuIC0gJGN1cnJlbnRTZWxlY3RvclBhdGhJbmRleDsKCQkkcGF0aCA9IGFycmF5X21lcmdlKCRwYXRoLCBhcnJheV9zbGljZSgkc2VsZWN0b3JQYXRoLCAkY3VycmVudFNlbGVjdG9yUGF0aEluZGV4LCAkc2xpY2VfbGVuKSk7CgoJCXJldHVybiAkcGF0aDsKCX0KCgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0TWVkaWEoICRtZWRpYU5vZGUgKXsKCQkkbmV3QWxsRXh0ZW5kcyA9IGFycmF5X21lcmdlKCAkbWVkaWFOb2RlLT5hbGxFeHRlbmRzLCBlbmQoJHRoaXMtPmFsbEV4dGVuZHNTdGFjaykgKTsKCQkkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrW10gPSAkdGhpcy0+ZG9FeHRlbmRDaGFpbmluZygkbmV3QWxsRXh0ZW5kcywgJG1lZGlhTm9kZS0+YWxsRXh0ZW5kcyk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0TWVkaWFPdXQoKXsKCQlhcnJheV9wb3AoICR0aGlzLT5hbGxFeHRlbmRzU3RhY2sgKTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gdmlzaXREaXJlY3RpdmUoICRkaXJlY3RpdmVOb2RlICl7CgkJJG5ld0FsbEV4dGVuZHMgPSBhcnJheV9tZXJnZSggJGRpcmVjdGl2ZU5vZGUtPmFsbEV4dGVuZHMsIGVuZCgkdGhpcy0+YWxsRXh0ZW5kc1N0YWNrKSApOwoJCSR0aGlzLT5hbGxFeHRlbmRzU3RhY2tbXSA9ICR0aGlzLT5kb0V4dGVuZENoYWluaW5nKCRuZXdBbGxFeHRlbmRzLCAkZGlyZWN0aXZlTm9kZS0+YWxsRXh0ZW5kcyk7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZpc2l0RGlyZWN0aXZlT3V0KCl7CgkJYXJyYXlfcG9wKCR0aGlzLT5hbGxFeHRlbmRzU3RhY2spOwoJfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/Visitor/toCSS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiB0b0NTUyBWaXNpdG9yCiAqCiAqIEBwYWNrYWdlIExlc3MKICogQHN1YnBhY2thZ2UgdmlzaXRvcgogKi8KY2xhc3MgTGVzc19WaXNpdG9yX3RvQ1NTIGV4dGVuZHMgTGVzc19WaXNpdG9yUmVwbGFjaW5newoKCXByaXZhdGUgJGNoYXJzZXQ7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCl7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgpOwoJfQoKCS8qKgoJICogQHBhcmFtIExlc3NfVHJlZV9SdWxlc2V0ICRyb290CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBydW4oICRyb290ICl7CgkJcmV0dXJuICR0aGlzLT52aXNpdE9iaigkcm9vdCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0UnVsZSggJHJ1bGVOb2RlICl7CgkJaWYoICRydWxlTm9kZS0+dmFyaWFibGUgKXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJCXJldHVybiAkcnVsZU5vZGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0TWl4aW5EZWZpbml0aW9uKCRtaXhpbk5vZGUpewoJCS8vIG1peGluIGRlZmluaXRpb25zIGRvIG5vdCBnZXQgZXZhbCdkIC0gdGhpcyBtZWFucyB0aGV5IGtlZXAgc3RhdGUKCQkvLyBzbyB3ZSBoYXZlIHRvIGNsZWFyIHRoYXQgc3RhdGUgaGVyZSBzbyBpdCBpc24ndCB1c2VkIGlmIHRvQ1NTIGlzIGNhbGxlZCB0d2ljZQoJCSRtaXhpbk5vZGUtPmZyYW1lcyA9IGFycmF5KCk7CgkJcmV0dXJuIGFycmF5KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0RXh0ZW5kKCl7CgkJcmV0dXJuIGFycmF5KCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHZpc2l0Q29tbWVudCggJGNvbW1lbnROb2RlICl7CgkJaWYoICRjb21tZW50Tm9kZS0+aXNTaWxlbnQoKSApewoJCQlyZXR1cm4gYXJyYXkoKTsKCQl9CgkJcmV0dXJuICRjb21tZW50Tm9kZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRNZWRpYSggJG1lZGlhTm9kZSwgJiR2aXNpdERlZXBlciApewoJCSRtZWRpYU5vZGUtPmFjY2VwdCgkdGhpcyk7CgkJJHZpc2l0RGVlcGVyID0gZmFsc2U7CgoJCWlmKCAhJG1lZGlhTm9kZS0+cnVsZXMgKXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJCXJldHVybiAkbWVkaWFOb2RlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdERpcmVjdGl2ZSggJGRpcmVjdGl2ZU5vZGUgKXsKCQlpZiggaXNzZXQoJGRpcmVjdGl2ZU5vZGUtPmN1cnJlbnRGaWxlSW5mb1sncmVmZXJlbmNlJ10pICYmICghcHJvcGVydHlfZXhpc3RzKCRkaXJlY3RpdmVOb2RlLCdpc1JlZmVyZW5jZWQnKSB8fCAhJGRpcmVjdGl2ZU5vZGUtPmlzUmVmZXJlbmNlZCkgKXsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJCWlmKCAkZGlyZWN0aXZlTm9kZS0+bmFtZSA9PT0gJ0BjaGFyc2V0JyApewoJCQkvLyBPbmx5IG91dHB1dCB0aGUgZGVidWcgaW5mbyB0b2dldGhlciB3aXRoIHN1YnNlcXVlbnQgQGNoYXJzZXQgZGVmaW5pdGlvbnMKCQkJLy8gYSBjb21tZW50IChvciBAbWVkaWEgc3RhdGVtZW50KSBiZWZvcmUgdGhlIGFjdHVhbCBAY2hhcnNldCBkaXJlY3RpdmUgd291bGQKCQkJLy8gYmUgY29uc2lkZXJlZCBpbGxlZ2FsIGNzcyBhcyBpdCBoYXMgdG8gYmUgb24gdGhlIGZpcnN0IGxpbmUKCQkJaWYoIGlzc2V0KCR0aGlzLT5jaGFyc2V0KSAmJiAkdGhpcy0+Y2hhcnNldCApewoKCQkJCS8vaWYoICRkaXJlY3RpdmVOb2RlLT5kZWJ1Z0luZm8gKXsKCQkJCS8vCSRjb21tZW50ID0gbmV3IExlc3NfVHJlZV9Db21tZW50KCcvKiAnIC4gc3RyX3JlcGxhY2UoIlxuIiwnJywkZGlyZWN0aXZlTm9kZS0+dG9DU1MoKSkuIiAqL1xuIik7CgkJCQkvLwkkY29tbWVudC0+ZGVidWdJbmZvID0gJGRpcmVjdGl2ZU5vZGUtPmRlYnVnSW5mbzsKCQkJCS8vCXJldHVybiAkdGhpcy0+dmlzaXQoJGNvbW1lbnQpOwoJCQkJLy99CgoKCQkJCXJldHVybiBhcnJheSgpOwoJCQl9CgkJCSR0aGlzLT5jaGFyc2V0ID0gdHJ1ZTsKCQl9CgkJcmV0dXJuICRkaXJlY3RpdmVOb2RlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjaGVja1Byb3BlcnRpZXNJblJvb3QoICRydWxlc2V0Tm9kZSApewoKCQlpZiggISRydWxlc2V0Tm9kZS0+Zmlyc3RSb290ICl7CgkJCXJldHVybjsKCQl9CgoJCWZvcmVhY2goJHJ1bGVzZXROb2RlLT5ydWxlcyBhcyAkcnVsZU5vZGUpewoJCQlpZiggJHJ1bGVOb2RlIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGUgJiYgISRydWxlTm9kZS0+dmFyaWFibGUgKXsKCQkJCSRtc2cgPSAicHJvcGVydGllcyBtdXN0IGJlIGluc2lkZSBzZWxlY3RvciBibG9ja3MsIHRoZXkgY2Fubm90IGJlIGluIHRoZSByb290LiBJbmRleCAiLiRydWxlTm9kZS0+aW5kZXguKCRydWxlTm9kZS0+Y3VycmVudEZpbGVJbmZvID8gKCcgRmlsZW5hbWU6ICcuJHJ1bGVOb2RlLT5jdXJyZW50RmlsZUluZm9bJ2ZpbGVuYW1lJ10pIDogbnVsbCk7CgkJCQl0aHJvdyBuZXcgTGVzc19FeGNlcHRpb25fQ29tcGlsZXIoJG1zZyk7CgkJCX0KCQl9Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiB2aXNpdFJ1bGVzZXQoICRydWxlc2V0Tm9kZSwgJiR2aXNpdERlZXBlciApewoKCQkkdmlzaXREZWVwZXIgPSBmYWxzZTsKCgkJJHRoaXMtPmNoZWNrUHJvcGVydGllc0luUm9vdCggJHJ1bGVzZXROb2RlICk7CgoJCWlmKCAkcnVsZXNldE5vZGUtPnJvb3QgKXsKCQkJcmV0dXJuICR0aGlzLT52aXNpdFJ1bGVzZXRSb290KCAkcnVsZXNldE5vZGUgKTsKCQl9CgoJCSRydWxlc2V0cyA9IGFycmF5KCk7CgkJJHJ1bGVzZXROb2RlLT5wYXRocyA9ICR0aGlzLT52aXNpdFJ1bGVzZXRQYXRocygkcnVsZXNldE5vZGUpOwoKCgkJLy8gQ29tcGlsZSBydWxlcyBhbmQgcnVsZXNldHMKCQkkbm9kZVJ1bGVDbnQgPSBjb3VudCgkcnVsZXNldE5vZGUtPnJ1bGVzKTsKCQlmb3IoICRpID0gMDsgJGkgPCAkbm9kZVJ1bGVDbnQ7ICl7CgkJCSRydWxlID0gJHJ1bGVzZXROb2RlLT5ydWxlc1skaV07CgoJCQlpZiggcHJvcGVydHlfZXhpc3RzKCRydWxlLCdydWxlcycpICl7CgkJCQkvLyB2aXNpdCBiZWNhdXNlIHdlIGFyZSBtb3ZpbmcgdGhlbSBvdXQgZnJvbSBiZWluZyBhIGNoaWxkCgkJCQkkcnVsZXNldHNbXSA9ICR0aGlzLT52aXNpdE9iaigkcnVsZSk7CgkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzZXROb2RlLT5ydWxlcywkaSwxKTsKCQkJCSRub2RlUnVsZUNudC0tOwoJCQkJY29udGludWU7CgkJCX0KCQkJJGkrKzsKCQl9CgoKCQkvLyBhY2NlcHQgdGhlIHZpc2l0b3IgdG8gcmVtb3ZlIHJ1bGVzIGFuZCByZWZhY3RvciBpdHNlbGYKCQkvLyB0aGVuIHdlIGNhbiBkZWNpZGUgbm93IHdoZXRoZXIgd2Ugd2FudCBpdCBvciBub3QKCQlpZiggJG5vZGVSdWxlQ250ID4gMCApewoJCQkkcnVsZXNldE5vZGUtPmFjY2VwdCgkdGhpcyk7CgoJCQlpZiggJHJ1bGVzZXROb2RlLT5ydWxlcyApewoKCQkJCWlmKCBjb3VudCgkcnVsZXNldE5vZGUtPnJ1bGVzKSA+ICAxICl7CgkJCQkJJHRoaXMtPl9tZXJnZVJ1bGVzKCAkcnVsZXNldE5vZGUtPnJ1bGVzICk7CgkJCQkJJHRoaXMtPl9yZW1vdmVEdXBsaWNhdGVSdWxlcyggJHJ1bGVzZXROb2RlLT5ydWxlcyApOwoJCQkJfQoKCQkJCS8vIG5vdyBkZWNpZGUgd2hldGhlciB3ZSBrZWVwIHRoZSBydWxlc2V0CgkJCQlpZiggJHJ1bGVzZXROb2RlLT5wYXRocyApewoJCQkJCS8vYXJyYXlfdW5zaGlmdCgkcnVsZXNldHMsICRydWxlc2V0Tm9kZSk7CgkJCQkJYXJyYXlfc3BsaWNlKCRydWxlc2V0cywwLDAsYXJyYXkoJHJ1bGVzZXROb2RlKSk7CgkJCQl9CgkJCX0KCgkJfQoKCgkJaWYoIGNvdW50KCRydWxlc2V0cykgPT09IDEgKXsKCQkJcmV0dXJuICRydWxlc2V0c1swXTsKCQl9CgkJcmV0dXJuICRydWxlc2V0czsKCX0KCgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZpc2l0aVJ1bGVzZXQKCSAqCgkgKiByZXR1cm4gYXJyYXl8TGVzc19UcmVlX1J1bGVzZXQKCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiB2aXNpdFJ1bGVzZXRSb290KCAkcnVsZXNldE5vZGUgKXsKCQkkcnVsZXNldE5vZGUtPmFjY2VwdCggJHRoaXMgKTsKCQlpZiggJHJ1bGVzZXROb2RlLT5maXJzdFJvb3QgfHwgJHJ1bGVzZXROb2RlLT5ydWxlcyApewoJCQlyZXR1cm4gJHJ1bGVzZXROb2RlOwoJCX0KCQlyZXR1cm4gYXJyYXkoKTsKCX0KCgoJLyoqCgkgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZpc2l0UnVsZXNldCgpCgkgKgoJICogQHJldHVybiBhcnJheQoJICovCglwcml2YXRlIGZ1bmN0aW9uIHZpc2l0UnVsZXNldFBhdGhzKCRydWxlc2V0Tm9kZSl7CgoJCSRwYXRocyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkcnVsZXNldE5vZGUtPnBhdGhzIGFzICRwKXsKCQkJaWYoICRwWzBdLT5lbGVtZW50c1swXS0+Y29tYmluYXRvciA9PT0gJyAnICl7CgkJCQkkcFswXS0+ZWxlbWVudHNbMF0tPmNvbWJpbmF0b3IgPSAnJzsKCQkJfQoKCQkJZm9yZWFjaCgkcCBhcyAkcGkpewoJCQkJaWYoICRwaS0+Z2V0SXNSZWZlcmVuY2VkKCkgJiYgJHBpLT5nZXRJc091dHB1dCgpICl7CgkJCQkJJHBhdGhzW10gPSAkcDsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCgkJcmV0dXJuICRwYXRoczsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gX3JlbW92ZUR1cGxpY2F0ZVJ1bGVzKCAmJHJ1bGVzICl7CgkJLy8gcmVtb3ZlIGR1cGxpY2F0ZXMKCQkkcnVsZUNhY2hlID0gYXJyYXkoKTsKCQlmb3IoICRpID0gY291bnQoJHJ1bGVzKS0xOyAkaSA+PSAwIDsgJGktLSApewoJCQkkcnVsZSA9ICRydWxlc1skaV07CgkJCWlmKCAkcnVsZSBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlIHx8ICRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX05hbWVWYWx1ZSApewoKCQkJCWlmKCAhaXNzZXQoJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0pICl7CgkJCQkJJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0gPSAkcnVsZTsKCQkJCX1lbHNlewoJCQkJCSRydWxlTGlzdCA9JiAkcnVsZUNhY2hlWyRydWxlLT5uYW1lXTsKCgkJCQkJaWYoICRydWxlTGlzdCBpbnN0YW5jZW9mIExlc3NfVHJlZV9SdWxlIHx8ICRydWxlTGlzdCBpbnN0YW5jZW9mIExlc3NfVHJlZV9OYW1lVmFsdWUgKXsKCQkJCQkJJHJ1bGVMaXN0ID0gJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0gPSBhcnJheSggJHJ1bGVDYWNoZVskcnVsZS0+bmFtZV0tPnRvQ1NTKCkgKTsKCQkJCQl9CgoJCQkJCSRydWxlQ1NTID0gJHJ1bGUtPnRvQ1NTKCk7CgkJCQkJaWYoIGFycmF5X3NlYXJjaCgkcnVsZUNTUywkcnVsZUxpc3QpICE9PSBmYWxzZSApewoJCQkJCQlhcnJheV9zcGxpY2UoJHJ1bGVzLCRpLDEpOwoJCQkJCX1lbHNlewoJCQkJCQkkcnVsZUxpc3RbXSA9ICRydWxlQ1NTOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gX21lcmdlUnVsZXMoICYkcnVsZXMgKXsKCQkkZ3JvdXBzID0gYXJyYXkoKTsKCgkJLy9vYmooJHJ1bGVzKTsKCgkJJHJ1bGVzX2xlbiA9IGNvdW50KCRydWxlcyk7CgkJZm9yKCAkaSA9IDA7ICRpIDwgJHJ1bGVzX2xlbjsgJGkrKyApewoJCQkkcnVsZSA9ICRydWxlc1skaV07CgoJCQlpZiggKCRydWxlIGluc3RhbmNlb2YgTGVzc19UcmVlX1J1bGUpICYmICRydWxlLT5tZXJnZSApewoKCQkJCSRrZXkgPSAkcnVsZS0+bmFtZTsKCQkJCWlmKCAkcnVsZS0+aW1wb3J0YW50ICl7CgkJCQkJJGtleSAuPSAnLCEnOwoJCQkJfQoKCQkJCWlmKCAhaXNzZXQoJGdyb3Vwc1ska2V5XSkgKXsKCQkJCQkkZ3JvdXBzWyRrZXldID0gYXJyYXkoKTsKCQkJCX1lbHNlewoJCQkJCWFycmF5X3NwbGljZSgkcnVsZXMsICRpLS0sIDEpOwoJCQkJCSRydWxlc19sZW4tLTsKCQkJCX0KCgkJCQkkZ3JvdXBzWyRrZXldW10gPSAkcnVsZTsKCQkJfQoJCX0KCgoJCWZvcmVhY2goJGdyb3VwcyBhcyAkcGFydHMpewoKCQkJaWYoIGNvdW50KCRwYXJ0cykgPiAxICl7CgkJCQkkcnVsZSA9ICRwYXJ0c1swXTsKCQkJCSRzcGFjZWRHcm91cHMgPSBhcnJheSgpOwoJCQkJJGxhc3RTcGFjZWRHcm91cCA9IGFycmF5KCk7CgkJCQkkcGFydHNfbWFwcGVkID0gYXJyYXkoKTsKCQkJCWZvcmVhY2goJHBhcnRzIGFzICRwKXsKCQkJCQlpZiggJHAtPm1lcmdlID09PSAnKycgKXsKCQkJCQkJaWYoICRsYXN0U3BhY2VkR3JvdXAgKXsKCQkJCQkJCSRzcGFjZWRHcm91cHNbXSA9IHNlbGY6OnRvRXhwcmVzc2lvbigkbGFzdFNwYWNlZEdyb3VwKTsKCQkJCQkJfQoJCQkJCQkkbGFzdFNwYWNlZEdyb3VwID0gYXJyYXkoKTsKCQkJCQl9CgkJCQkJJGxhc3RTcGFjZWRHcm91cFtdID0gJHA7CgkJCQl9CgoJCQkJJHNwYWNlZEdyb3Vwc1tdID0gc2VsZjo6dG9FeHByZXNzaW9uKCRsYXN0U3BhY2VkR3JvdXApOwoJCQkJJHJ1bGUtPnZhbHVlID0gc2VsZjo6dG9WYWx1ZSgkc3BhY2VkR3JvdXBzKTsKCQkJfQoJCX0KCgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b0V4cHJlc3Npb24oJHZhbHVlcyl7CgkJJG1hcHBlZCA9IGFycmF5KCk7CgkJZm9yZWFjaCgkdmFsdWVzIGFzICRwKXsKCQkJJG1hcHBlZFtdID0gJHAtPnZhbHVlOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9FeHByZXNzaW9uKCAkbWFwcGVkICk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1ZhbHVlKCR2YWx1ZXMpewoJCS8vcmV0dXJuIG5ldyBMZXNzX1RyZWVfVmFsdWUoJHZhbHVlcyk7ID8/CgoJCSRtYXBwZWQgPSBhcnJheSgpOwoJCWZvcmVhY2goJHZhbHVlcyBhcyAkcCl7CgkJCSRtYXBwZWRbXSA9ICRwOwoJCX0KCQlyZXR1cm4gbmV3IExlc3NfVHJlZV9WYWx1ZSgkbWFwcGVkKTsKCX0KfQoK]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/Less/VisitorReplacing.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBSZXBsYWNpbmcgVmlzaXRvcgogKgogKiBAcGFja2FnZSBMZXNzCiAqIEBzdWJwYWNrYWdlIHZpc2l0b3IKICovCmNsYXNzIExlc3NfVmlzaXRvclJlcGxhY2luZyBleHRlbmRzIExlc3NfVmlzaXRvcnsKCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRPYmooICRub2RlICl7CgoJCSRmdW5jTmFtZSA9ICd2aXNpdCcuJG5vZGUtPnR5cGU7CgkJaWYoIGlzc2V0KCR0aGlzLT5fdmlzaXRGbkNhY2hlWyRmdW5jTmFtZV0pICl7CgoJCQkkdmlzaXREZWVwZXIgPSB0cnVlOwoJCQkkbm9kZSA9ICR0aGlzLT4kZnVuY05hbWUoICRub2RlLCAkdmlzaXREZWVwZXIgKTsKCgkJCWlmKCAkbm9kZSApewoJCQkJaWYoICR2aXNpdERlZXBlciAmJiBpc19vYmplY3QoJG5vZGUpICl7CgkJCQkJJG5vZGUtPmFjY2VwdCgkdGhpcyk7CgkJCQl9CgoJCQkJJGZ1bmNOYW1lID0gJGZ1bmNOYW1lIC4gIk91dCI7CgkJCQlpZiggaXNzZXQoJHRoaXMtPl92aXNpdEZuQ2FjaGVbJGZ1bmNOYW1lXSkgKXsKCQkJCQkkdGhpcy0+JGZ1bmNOYW1lKCAkbm9kZSApOwoJCQkJfQoJCQl9CgoJCX1lbHNlewoJCQkkbm9kZS0+YWNjZXB0KCR0aGlzKTsKCQl9CgoJCXJldHVybiAkbm9kZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gdmlzaXRBcnJheSggJG5vZGVzICl7CgoJCSRuZXdOb2RlcyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkbm9kZXMgYXMgJG5vZGUpewoJCQkkZXZhbGQgPSAkdGhpcy0+dmlzaXRPYmooJG5vZGUpOwoJCQlpZiggJGV2YWxkICl7CgkJCQlpZiggaXNfYXJyYXkoJGV2YWxkKSApewoJCQkJCXNlbGY6OmZsYXR0ZW4oJGV2YWxkLCRuZXdOb2Rlcyk7CgkJCQl9ZWxzZXsKCQkJCQkkbmV3Tm9kZXNbXSA9ICRldmFsZDsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gJG5ld05vZGVzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmbGF0dGVuKCAkYXJyLCAmJG91dCApewoKCQlmb3JlYWNoKCRhcnIgYXMgJGl0ZW0pewoJCQlpZiggIWlzX2FycmF5KCRpdGVtKSApewoJCQkJJG91dFtdID0gJGl0ZW07CgkJCQljb250aW51ZTsKCQkJfQoKCQkJZm9yZWFjaCgkaXRlbSBhcyAkbmVzdGVkSXRlbSl7CgkJCQlpZiggaXNfYXJyYXkoJG5lc3RlZEl0ZW0pICl7CgkJCQkJc2VsZjo6ZmxhdHRlbiggJG5lc3RlZEl0ZW0sICRvdXQpOwoJCQkJfWVsc2V7CgkJCQkJJG91dFtdID0gJG5lc3RlZEl0ZW07CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiAkb3V0OwoJfQoKfQoKCg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/LessPHPOyejorge/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassCommand/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/SassCommand/class.Preprocessor_SassCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9TYXNzQ29tbWFuZCBleHRlbmRzIFByZXByb2Nlc3NvciB7CgoJY29uc3QgRlJJRU5ETFlfTkFNRSA9ICdTYXNzIGNvbXBpbGVyIGZyb20gY29tbWFuZCBsaW5lICg8ZW0+bm8gbG9uZ2VyIHN1cHBvcnRlZDwvZW0+KSc7Cgljb25zdCBERVNDUklQVElPTiA9ICdUaGUgb2ZmaWNpYWwgY29tbWFuZCBsaW5lIFNBU1MgY29tcGlsYXRvcic7Cgljb25zdCBBVVRIT1IgPSAnQ29yZSBTQVNTIHRlYW0nOwoJY29uc3QgV0VCU0lURSA9ICdodHRwczovL3Nhc3MtbGFuZy5jb20vcnVieS1zYXNzJzsKCWNvbnN0IE5PVEUgPSAnVXNlcyBSdWJ5IFNhc3Mgd2hpY2ggaXMgPHN0cm9uZz5ubyBsb25nZXIgc3VwcG9ydGVkPC9zdHJvbmc+LiBXaWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gQmV0dGVyIHVzZSBEYXJ0IFNhc3Mgbm93IG9yIFNjc3NQSFAgLSBjaGVjayB0aGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbnMnOwoJY29uc3QgTE9HTyA9ICdsb2dvLnBuZyc7CgkvL2NvbnN0IFNPVVJDRU1BUEZJTEUgPSAnY3NzcHJlcHJvY2Vzc29yX291dC5jc3MubWFwJzsKCWNvbnN0IFBSSU9SSVRZID0gMTU7CgoKCgkvLyBOb3RlIDogJGNzcyBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlIC0gbm8gbmVlZCB0byByZXR1cm4KCXB1YmxpYyBmdW5jdGlvbiBDb21waWxlQ1NTKCYkY3NzPScnKQoJewoJCS8vIFB1dCBpbiBhIGNhY2hlIGZpbGUKCQkkZmlsZSA9IGNtc19qb2luX3BhdGgoVE1QX0NBQ0hFX0xPQ0FUSU9OLCAnY3NzcHJlcHJvY2Vzc29yLnNjc3MnKTsKCQlmaWxlX3B1dF9jb250ZW50cygkZmlsZSwgJGNzcyk7CgoJCWRlYnVnX3RvX2xvZygnV3JpdGUgQ1NTIGZpbGUnIC4gJGNzcyk7CgoJCSRmaWxlX291dHB1dCA9IGNtc19qb2luX3BhdGgoVE1QX0NBQ0hFX0xPQ0FUSU9OLCAnY3NzcHJlcHJvY2Vzc29yX291dC5jc3MnKTsKCgkJLy8gRVhFQyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCS8vIENvbXBpbGUKCQkkY29tbWFuZCA9ICdzYXNzIC1sIC1FICJVVEYtOCIgJzsgLy8gLWwgd2l0aCBsaW5lIG51bWJlcnMKCiAJCWlmICgkdGhpcy0+bWluaWZ5KQogCQl7CiAJCQkkY29tbWFuZCAuPSAnLS1zdHlsZSBjb21wcmVzc2VkICc7CgkJfQoKCQkvLyBTb3VyY2VtYXAKCQlpZiAoJHRoaXMtPmdlbmVyYXRlX3NvdXJjZW1hcCkKCQkJJGNvbW1hbmQgLj0gJy0tc291cmNlbWFwPWF1dG8gJzsKCQllbHNlCgkJCSRjb21tYW5kIC49ICctLXNvdXJjZW1hcD1ub25lICc7CgoKCQlpZiAoIWVtcHR5KCR0aGlzLT5pbXBvcnRfZGlycykpCgkJewoJCQkkc2VwYXJhdG9yID0gJywnOwoJCQkkY29tbWFuZCAuPSAnLS1sb2FkLXBhdGggJyAuIGltcGxvZGUoJHNlcGFyYXRvciwgJHRoaXMtPmltcG9ydF9kaXJzKTsKCQl9CgoJCSRjb21tYW5kIC49ICcgJyAuICRmaWxlIC4gJyAnIC4kZmlsZV9vdXRwdXQ7CgoJCS8vIEFzayBmb3IgY29tbWFuZCB0byBzeXN0ZW0KCQkkcmVzdWx0ID0gZXhlYygkY29tbWFuZCk7CgoJCWlmICghZW1wdHkoJHJlc3VsdCkpCgkJCWRlYnVnX3RvX2xvZygnQ1NTUHJlcHJvY2Vzc29yOiAnIC4gJHJlc3VsdCk7CgoJCSRjc3MgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZV9vdXRwdXQpOwoKCgkJLy8gUmVtb3ZlIHRlbXAgZmlsZXMKCQlAdW5saW5rKCRmaWxlKTsKCQlAdW5saW5rKCRmaWxlX291dHB1dCk7CgoJCXJldHVybiB0cnVlOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassCommand/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassCommand/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAasAAAFACAYAAAACklMsAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ1dWlkOjVEMjA4OTI0OTNCRkRCMTE5MTRBODU5MEQzMTUwOEM4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjcxNTVCMTJCMkJBRTExRTM4RDJFQjVEMkVEN0FFOUE4IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjcxNTVCMTJBMkJBRTExRTM4RDJFQjVEMkVEN0FFOUE4IiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIElsbHVzdHJhdG9yIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZTE1Y2FhMmYtY2FjOC00OGM3LTg0NTEtMTk3MGMzM2VjMGIyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOmUxNWNhYTJmLWNhYzgtNDhjNy04NDUxLTE5NzBjMzNlYzBiMiIvPiA8ZGM6dGl0bGU+IDxyZGY6QWx0PiA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPlByaW50PC9yZGY6bGk+IDwvcmRmOkFsdD4gPC9kYzp0aXRsZT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ikTFCAABQXUlEQVR42uydB9hdRdHHJwmBhCQkEBJKCIQa6aFJ79JBQKVIBynSVEARBBQVEESRIoiIgKL0Jr2I9E4AQ+8BAiR0KSEkIfn2x8798vLylnvP2d1zzr3zf5558iZ57z3n7Nnd2Zn5z0yP0fucJQZDRdDbycxOZtGfZ3LS10l/J4vq/62svzvcyTz681xO5nfSM+N1n3Lykf482snnTsY5ed3Jq07ecDLZyVQnk5xMcTLRyTR7ZQZDGMxkQ2AoKWZ3MrfKHE6GOhmmf6J4BjsZ5GSRBPeyRJufV+7g/1Fe45285+QV/fl5Jx84eU2V2gQVg8FgyspQYYxysqQqn+VUWQ3UP/vrz71Keu+9VJEiS7f5d6ytd1WJfaBK7GGVMU7estduMJiyMpQbqztZs43013/v0UTPiFtyHpnhjgTfdjJdvIsQpXWlynM2JQwGU1aGYkBcaagKMaSV1GpaTS2mVkUPtcZWVjneyZNO7nFys5NnZYZb0eJeBoMpK0ME9FKFtIJ4l9giKvOr8jJ0jCVVdlcrC3nAyb/FkzoMBlNWBkNO4O5axcnmTrZyMkClnw1NJmu0prg2dfIjVVx/Ee8u/MSGyGDKymCoD/1VGWEx7eRkaydDbFiCA4p+jRG5lpO3nfzWydXiGYbQ46fbMBlMWRkMM9BHT/vQuNcWT4pYWMrL0GtGcCA40cmPnVyjlhYuQqPEG0xZGVoeiznZ2Mn6TkaKjz31tWEpFCQ57yne7UrC8t+dXCEzEpcNBlNWhpYBjL2DnWwo3u3Xw4akdKi5CNdx8kPx5Iz/2rAYTFkZmhnkAuHWW9fJzuLLFxmqAcpIwcB8zMm5Ts528pD4sk8GgykrQ1O8fypHrK+n82WczGvDUmnsKj6eeJmTM8WXfzIYTFkZKglYZtCif6AW1Jz6b4bmsLJgaULC2MzJ4U5uEl9k12AwZWUo/QZGzhP19XDx7S7m5muFtU1S9kVOTnJyspP3bVgMpqwMZcUI8WQJLClYfYNtSFoKkGN+7mRF8bT3u8RXiTcYTFkZCge5T8s62cXJqmpFzW7D0tLgsLK4k6OdXChGvjCYsjIUDFhhv3SynpNZxSjnhhlY0Mk54kk0x9twGExZGVK/QzYhavPtpkrKYOjK6v6NWttHOnnThsRgysoQExSPpeUGdfnWEV8KqY8Ni6FOQLShaC5swddtOAymrAwxgBV1mJOviy+909OGxNAgUFTbqaVFbpZR2w2mrAy5gTKCdr68k1+LJ00YDCGs8x3UIied4UMbEoMpK0PW9zNCvJvvu2pRzWrDYgiMbzn5wMlPxHcnNhhMWRnqBoyt/Z1s4GQpsUrnhrjYRnyTx1OcTLLhMJiyMnQH3H2UQTpCfFzB4lGGFKCZ5lFOHnZyqw2HwZSVoSPg2qPi+bfF088XsCGJgk+dfCa+gkPb3k/t/94ePfQd9W6zbvrrz4OaaHwoyUUeFs01x9p0MZiyMtSA1UQcChfMN50sZEOSG9CwibvQAn6ck4+dvOPkE/G18VBKVG8Y3+Yzk6XrbrsoK8pU1VyxFP0dqj/TjHJm/TtCf6nhTubTf68aeJ6znOzk5C2bTgZTVgZK30A//4ZucvYuGgMK5gUnjzh53smTTl5S5TRZLaiJajXxc15q9ivdHDr6qBLro0oNS4zcNzotry6+DUtV3jGW1T7ik4eN0m4wZdWC6KUn1/11M+hvQ9IpprdROlPUOrrfyYNOHlDlVBYiwDRVjBPb/fsT7f6+spNNVHD79lMFV7aSWFiE2zq5RnxDR4PBlFWLgFjH18S3iD9QLCbVGVA+Y1Ve183+eZXnmuD5HlA5Wi3rtcS7gUepBVamtAQYqDvqOzDrymDKqgVA/GJf8Y3w2ACM3fdlvOHkbt0UH1Mlhbzb5Jvk0yrni49VjhRfGZ2cp7KQNqhsQT+s0TZNDUWjx+h9zrJRiANiF9RfO0Z8cL6XDcn/41knVzv5l/iYE0oJV1or91nqoXMERfVjtcDLYGn9R3y8zWAwy6rJAFkC1w4VrVcwS+qLyggw73Dj0fjvRifPiLmW2mO6jgmxOYg3f3BygPj6fQsVeNihiv8osdiVwZRV04CkynXF11iD4dfK5In/iSdCjHHyqApxJ2v4Vz+g0pOkC8kB1yBU8mEF3cvBTvawA4bBlFX1QW+g48TX8MPl16oND6l+cIWTm8XnOGFVfWbTIxdQ+v91cr2TY52sUcA9wGJcQg8fBoMpq4oB9x4uP1w1R7Tg87ela//TyT90U/3cpkZwoPDvdLKx+Nyn70naeBYJzuSKPS7eXWkwmLKqCKhSAHNrP/Ft5FsJKKfHVDHdJD4A/5FNiSSgCscPxbPziIkunMiKn1WV1QXiXbwGgymrkgOG30bimVq4RlopLgVJAvbeLaqsxom5+IrAdFUaxLSg8g5PdN0Vncxpyspgyqr8gEDxJydbtpiSelqf+1zxFSWmiLmCigbvgLjg1k5u07kZG8RlaVvzog2/oQhYgmrXwMWCy293XaQ7toCioorEy06udLKF+O7Ep8mMmnumqMoBYoa4A0k2fzXRXrGuDbvBlFU5sbmTP6tlMaQFlBR9jCCL0JUYuvS1Yo34yg7KN50onnkZG6asDIXB3IAdg3yWI3XDHiLNTUUnaH+NKmQSd2mtYYy+6gBrlxgWuX1bRr7WqjbcBlNW5QCsJ0rLUD1g4SZ+TpI7cetR8ui34iuYG6oL+ndR1guGau+I16FC/JriK5EYDElhbkAPStks4+QEPaU2q6LiFH6fKqjVxBcqNUXVHCAh++wE11nMhtpgllUxGOhkF/HlZEY1sSV1r25m/ElA3kofNR+oorKDzulYIGXjrzbUBlNW6RXVZeL7Cs3cpM9ITtSP1aL6VIzN18wg941CwdtFvMZCNsyGItCKbkDIErRhwAX2mvjAdLMpKphhd4hn9VFhA5bfRFNULYGrJC5BZmkbYoNZVmlAA8QfOPmOpEmmTAlIEySLUkyWUkjv2BRvOTyvFlasbtQccPFIWCULgymriCC59whdyM307MSkqNH3e/HNDE1JtS7eFN/cMpaygow0tykrgymrOJhHfN7UntI8Lj9cep/pSZpmfdfbdDaIp7G/HvH7e4ixiA2mrKI833q6mTdT9j1KipgUNPuLxArKGmaAiiNviI9b9bLhMJiyKj9ogkh19H3F951qBkA3r1HQb4t8gjZUF6+p0uoXybIaYENsMGUVBrQyoH3CFk30jJRBopcR7r4PxZh9hs5Ra98SQ1mxnua1ITaYssqHWpM4FNWIJngeiBMk8OLqO1kVlsHQHaZFPMzw3UauMJiyymlN7afWxxxN8Dy0JKFNB+3iH9dNwmAoGsTCxtswGExZZQNJvrTyoItvv4o/C7lSF4ovpjtWfNUJg8FgMGVVYdQK0EI2GFjxZ6HI7Bgnhzi506amwWAwNIeyIj5F0c6jK66oJqmS+qf4WJs1OzSUGbijP7RhMJiyqg99xbfzoPbd4AqPP/kwp4qPTb0gFpcyhMFcEi/5HdKPpUwYTFnVAbr4UqyTAq1VTXqEVgzD7+eqsKbaVDQExICIa/sNG16DKauuQTIiDQNpHLiCVLPVPHGpR52cKL6V/GSbgoYI62R+8V19Y+A5G2KDKauu8S0nv3SyZAXHGbrv0+Jp6Ofb6dQQEcRyKTQbq37f8zbEBlNWHQPf+6Hi23oMqeAY4+KDPAEV3fKlDLHBGlkg4vc/akNsMGX1VcwmvsvtwVK9/CmsKSpO0OTxZptqhkQgIX6+iN//lA2xwZTVl0Fbj0PUoupdsXGFLXWxWlPjbJoZEgKranik76b9yNM2xAZTVjOwmHgSwiYVVFTXOTnJyYPiq1EYDCnx9Yjr+l4bXoMpqxmAyUTu0YZSLcbfB06OcfIXsaRJQ3FYPeJ3W7zKYMpKMdLJXyMvuND4TE+cv3Jyu00pQ4EY4WTNSN9NDPZuG2KDKSuvoE53smyFxm+sKtfTxNomGIrH3hG/+zWd7wZDSyurNZz8sWKK6j/i6xI+IJbcaygefSMrK1iAH9gwG1pZWX1NLaplKjJmKKbjxCcoGwxlwWYSt07maCfv2jAbWlVZUd/v7IooKnz2MPyOd3KtTR1DiVDrQBALUNaf1DVgMLScslpbfKxn6QqM0yRVqmeKzzOxKhSGMmGUxHWhTxBjAhpaVFlRiPYUJ0tVYIxo4b2vk5vEuvYayrmG1xPPBIyFZ8S3sDEYWkpZLS6+yWDZyRS4PO4TX+rpIZsqhpKCljnbSbzCteBq8yYYikbPxNeDnn6hk+VLPi7Q0GEn7myKylBybCNxPRTUt7QYraGlLCvIFKdUwKJ61cnh4rv3mtvPUGZQYf2nka9BS5t3bKgNraKs5nXya/GxqrJiupNnxVdJf9CmhqHk6KGHqjkjXgNX+O9tqA1lQAo3IG0+KOy6WYnHAbbfZeLrEZqiMlQBFKzdKfI1rjCrytAqlhVJirSh/1aJx4Cs/NNVob5nU8JQAQx0sqf43lWxQM1LYlVTbLgNza6saO1xmHiSQpnbfOzj5F+6OA2GKmA1J1s56RXxGuRVUaB5ug23oZmVFd+7tyqCMioqfPEviXejmNvPUCXQMftQiRurmurkHrHCtYYSIVbMagPx7egHlFRR3a4WnykqQ9XwIyfrRL4GcarzVWkZDE1rWVH6hbJE85f0ma938hMnz9nrN1QMEIAOS3CdW5w8bsNtaGZlNZ/4/k5lVFRk4F/qZHt77YYKYh7x6R/9E6yTn4lVrDCUDCHdgIP01FfGen9UpDhV4vb7MRhigarqlP0aFfk6tbyqcTbkhma2rL4rnrAwc8meETbTieLp6R/aKzdUEJuKT1aPvbboKHCWDbehmZXVyk5OkHISKiB6nCE+8ddgqBoWdfIH8aWVYltVlzt5xYbc0KzKijjVNSVUVB+L7+h7kr1mQ0VBnOocXWOxgVVFFRdLAjaUEnljVuR6EPQdXLLnQlFROeN0e8WGioI1dZR4r0UK/MPJEzbshma0rPjstk6+I+lbjXSHY8W7/ixGZajqIZJySjtKmqT6MU7+bMNuaFZlhQ8d9l//Ej0PdFtyqMz1Z6gqqKa+ilpV/RKtGXpifWBDbyj7CS4LZhef+Du8RM+CFfVLtagMhqqux42d3JxIUVGhAqr6izb0hmZUVrglDnHyzRI9B/T0C8THqIz1Z6jqWlzbyW8SKSqA++9c8UxAg6HUyOIGxEWxa8me42LxHVMtRmWoKpbSw9bXEl3vE72elR0zNKWygqH0A0lDpa0HnAjvE5+QbDBUFUPF51ItnvCa/xbvjTCrylAJNOoG3EK8T70MwPV3v/g2JAZDlS2qC52sl/CaT4mv3m4uc0NTKitYf4dLedh/E5wc4+RZe42GimKkeObq2gmv+a4qqrE2/IYqoV43IHTak50sViKrCubfjfYKDRVFX/G5TSkV1RS95l02/IZmtazoo1MWUgULDv/+mfb6DBVdc6uKd8Wtnfjat6myMvefoSmV1VxO9nXSqyT3fK14eq/BUDXgydhAD1ojEl+bth+/cPKqvQZDVRdPd1hTfBvtHiW4X4ptUt39XXt1hgpiE7Vs5k583YlO9nLygL0CQ7Mqqzmc7O5kYAnudbIudFtwhqqB+BTpFTQA7Zf42rj8iO/eJD7WazA0pbLaQKUMuMTJn+yVGSoGrCjc6Ic66ZP42sR3qaZ+nikqQzMrK1pp4+PuXYL7fFJ8iafJ9soMFcJQ9QZ8owBFBUaL70Dwlr0KQzMrqz0kbUZ9Z8CNcbAtOEPFQJrHg1KcC/11JxuJlSAzNAk6YwMOcrJ3Ce6v1mp7tL0qQ0UwUNfOXQUpKtx9eCK+Y4rK0AqWFWWVFijB/WFN/VWM/WeoBmhDf7T4/lCzF2hRHeHkIXsdhmZXVhSr3dzJgBLcHzXT7rbXZKgAcLmd4mRhydfUNC/oPnCDWIFaQwsoK+qVrSXF51W95uS34hlNBkNZQXrHLk6O1INeUaDT757i3eYGQ0soK6jqcxd8X3QwhYk4wV6RocRrh95utMzZ0snMBd7L+2pRmaIytJSy2q0E90Xi7zX2egwlRa2v247i3X5FguoU1Mq8yF6LoZWUFa3qRxR8T7j9znPynr0eQwkB8egKJ8uX5H72d/I3saRfQ5OjLXWdQrU/KcE9PeHkXifT7PUYSrROFhJftuiFkiiqN53sIFadwtCCltXXnKxW8P3AYLrFyfP2agwlwUBVCjs7WVGKZfrVAD2dRqgWozK0pLKiInTRDECqVVwqxgA0lGNtrCG+Hc3Skr4AbWf4n/jqMreLlR8ztKCy6lcSZfWok4fttRgKBBXS53TyK/GV0mcpyX3hdaAX1WbiW+UYDC2prBYVn31fNFq9qeKSTpZxMtbJfTY9k6+FlZx8W3ze1JAS3RupHP8W7/ozRWVoaWVF0c15C76XN8S33W5VrODkHCcLis8vg458hk3RJGD+7yOeDcv49yrZ/V0mvoTSy/aqDK2srGgBArliYAkW5Kct/C5+plYVGKDKCpaX9fCKB7wJNXcfLXF6lPAeYeieJMaONZiy+iJetWzB90Gg+MYWfxftK+BTEYEqHp85+bt4V5AhH3rooYxE3m3Ft3qfvYT3ySHlRVWkF5qiMhi8suJEuUTB98HCfKnF38X7HfzbXE5+7eQj8SxJQ3agpLYSX05sHSfDSnyvHNyOEx+3tIK0BoMqq75SfMmYZ8TagND/aPcO/p1YIq5A6jWeZlO2YaDw6S9Ff6cRTvpL533cigYehhOdnOzkHXt1BsOXldWaUmzrelweT3diWbQSLlOl1BFVmlp0x+rBgjbp/7Op2ykgRwxQxXSAzIhHlRm4+caJd/v+Q8zlazB0qKyKdgHi4npOzN3BOBCf2K2T/2cDPtrJ4mphPWLT9ysKnbn8dScbOlldypPI2xU+dnK9k987edBeo8HQubJaugSb9Cv2Kr7A+eLdVf07+f++qszYkCFd/EWs4C9tOohDUW2CfMHhUo6SSPWAnm3HqVVtbj+DoRtlVTQbypTVDPzXyc1OvtXN7y2hmxzt07+nn2slDNDnptkgzUJx/fWo2DNQA3M/8eQiK0RrMNShrFYu+B7IrXrbXsUXeFctJuKI3VVQgCRAIvFjTi52crb+3GwndBQT+VDzqkW5kVpTs1bwWYhFQSY608npNt0NhsaUVdGg1cHH9iq+dOK+RHyfonqxnZP1xTMK7xBPfX5Rqhuop2fUUiqL65+LSPGJ63lA23nctsQlH7dpbjBUT1mNs9fwJdD59Si1HlZo4HMUX91afEHiA53co0rvugo8M1Ykielri489ze9kNpWZK/4+6SAAgQKm33PS2lVaDIZKK6t37TV8BdD4N1OFQ9O/RuIxfcTnzSEUZH3LyVVOrhTvJmSz/EwlRayEe+/dRqDmDxVfjw9rEDf0klKe6uahQLsbajz+VHxnYWt7YzBUXFlZcc6O8ZZaSNSFGynZCQQohr1VOBhAeX9SfIPLseLdU+N1c30jx/1CchislhCJuIPEsxexkog5jRBfNQLG3txSHcZeFiX1gB4OYHe+Z1PZYGgOZWXoGFg9tIU4SHw19hAtXFAmG6gAiC0fiidlTNa/fyLeNUu8C6YmXWk/72DejGzzd6w4cpoGqvU0h3gXHtbSnC30zu4Wn7RN7BBautX0MxhMWbUEcB3d5GRz8cSJ/oG/f4jKwu2U5PQ2P0/rwpKqoYdUjzoeEtS1xN13raRzrxq+DFijK7Sx4DksdVage4z4dJmb9d1Z/cWKKCte1kI2FKW2sHDdbSG+HNOiErffUnvF08tewVeAAsdNS5mwC8QXGbYSWGnAgQ22KOzQVcUXNVhJGmuWuVGbn+m+fK6Ti8QzaC22WGJl9ZQpq0oAFxNxJ9pGrGPDURgeVSuXFIN7xcf8DPGBexn3NZ2cV1NlFcIzREz1KP3eo8XHGs19W1JlRT2yzW0oSo+pqrB21EW1lw1J0rGnizWJ1/eLj+0ZBT2tNXW4+IolQyN8Pwn25PJBZrpLrWZDydBTF2GRJ4ne9hrqBi5BGHvfV3lDLD4SA6wHEtVxEZ2iGxnFcS/RfzNFlRYkhm8bSVG1t7K+Z8NdXstqrC7AEQXdw9L2GjJtppzy8bHv62RjqWb5obIdBMhve1ZmuPqQCTY0hYL4KbGpRRJd730b8vIqK06QjxWorOax15AJMJj+rRvrlqq0lhMjRDSKyTqGMMPuFE84etks1tIA789Gia5FGsfVNuTlVVbk1VC1e6uC7mE+8VUXJtnryAQSfc8TT5smifhIG5K6gDeBpF1ce5RBmirW9LCMmCOhsrpHrKJOqZUVVE2o0QSNhxRwD+RDLCieBmzIhhqVGlYT9PZDxZdrWtAsrS8sUFw7JD6T7HyreCbfI2Y9VQI7J5rDzJNrxKjrpVZWADfg2IKUFVUPFjVlFQyQLn4svtUIsSzq71W1pUZWfKLWEmWlSM0gDvWM/myoFrZPuG7GiNHWS6+sKKmDK3ClAu5hkCorQzhMVcuBd0rC45K66GFUDWjS56UiAdR+UjEeUkuTRN0PbQOqLOj6vHyiaz0hvl6moeTKChP4H072EB/QTImZdTNlE/3IXklQ8F7fVIGMQZ4KbpXviG9kSP5Kb30HZS+XNEVlsv5J7b3bxReNfUCs23QzgiTgFC7A2uHO8qsqoKzA/WoGjyrgPqCm0gn2WXsl0XG+CixM2INLiM9jYfyplj6nSt+C7g9r6FNVsBxeCHhTJeJFVUjP6QnYKMaNY2Cb98rhsF+b/+MQQIX4iWqNlgFrJLoObuNbbXpUR1lRgPNY8XXOUmNh3TBNWaVDzeK6Xma090BJzS4zqqbjniURc4j+29z62SVyWHq1d/yOnmTZKF5XhfSKbpST2vzf+yXaPKuERXVNLarra7C+0z76//3bHUim6Dv4VMecUlLX6TspgogyWO8/BcapdW6oiLIC1MXCd7tU4vvAFbWN+CaBhvT4XJXDWx3MD9yDPVV6dDJv2ASXafdv76piah8vqtHDaxXd2/5p1a/zgQoMu4uPTw7XQ8hMbd5fI2A9nuDkTPFdjj9J/CyLSTrC13/UojRUSFmxWfzRyWmSvgzS1jo537bXUhrUm3f0oZ5ODenBOl3LyQ/FV+YP+b3IIeLZpNSiTMnYXTihsrrYplH50dFpiyz+Iii+fXVhGAyG+vEt8WkKW0S8xtfVYkuV/tBLLcP+Ca6FC/phm0bVVFYvOPmX+IBrauwiPpHVYDDUBxLB501gvUG8mi3RM0H8+JqkYSZDrPjMplE1lRWB1vPEU4NTA7O/CPq8wVBF0IduyUTXej/hpg5rMVWBa2MBVlhZAQp5nlnA/RBD20xPVQaDoWt8O9F1UFIkW6fqhgyDMQXJiyLe5gKsuLICZ+kETQ3oqt8U63NlMHSHVAVex4undqeqBLJrovUPW9UKETSBsoLhtb+kbzRHHgjVw4fb6zEYOgVxqsUSKqtHEl2LZOUdEl0LD9InNpWqr6wAVNXzJH3rBBbir6W4KgoGQ9kB4aF/omtBuEqVh/RT+WpKTSy8Ltb1uWmUFacOWk6MKeDedlB3gMFg6FhZ9UuorFIAb8o2ia6FS/NVU1bNo6wAOVdnSDHVBQ6SYirBGwxlBhYVsd2ZE1yLSvbPJHquTcU3Y00ByBVWgKDJlBVK6q/iO9GmrhGGT5741UB7VQbD/4OCwwsluta5koZYwTNtKekSj9nXJttUai5lVQPlVh4q4B6h5+5ur8pg+H8MkzQ94KCqX53omVaQtF4UQhzWwr5JlRUmMwUtU9eA46R1uPjeNgZDq6OHbuwp6uZRei0FtRtCBT3W5kw4jhQ/sHhVkyorcJv4/KtJie+TNhUXiiULGwwoq1T5Vffoph4bFK3dyV6tobsTTSMgk/1PerLbMvG90k8Jogfdbl+yV9eSmFkPLvTVosIBzSNp0Ee8Y1g7LwBNGklqv8PJY+oRaIYWJPR5WivBdSivRG5V7HgVyb9/ECsCYAisrABN8w7WDWKVxCdKOgof4eRQMX9zK4GGkGvqfFvNyfLik0c7wxCV1Z3s5+RR8fTrf0j1W5kcIGnyD8eKz0OKjfWcbGJT3BBDWYlaNnvr4l8m4f32UXcBHU2tnUjzA2uavJvvq+XE33s1+B2zqJJDwW3l5Gfim+1VdTwOTHStVxIoKyj4PyxoLAfogdtQEeSpbv6kk2Mkfa7CzGrZnWCug6YEFjSkGhigo8UXVB6lllKvnPNmZf2+VSs6NluplRkbVKyhbl7swrVYVSsUeFCfxZZbaygrfNlXOjlWimHV7K+n5AH2GpsGsMG2dXKjk3OcjIhwDSjfdMKev2JjQ65hqirr5B89F/ka9MaiceTQgsazj6Trz2UoWFnVTmAkDB8p6RmClJrBJbKdvcamAK66s9XyWTPytVbQ68xSsfEZlehaEKmeiHwNCDKbFzieffRwZL3zWkRZAcqWnOrkzwXcP8yoU/Q0bqgmON3+3slN4lvDDEp03Y3Fu9WqAJQqLrN5El0PuvrYyNf4ga7fIkEc1Iplt5CyqllYVEk/S9KXMCG+QQ4W7khzCVYHxJ+IHV0lPsiO0uqR8Ppc63tSjVJe86gVkmp8cOu/FfH7iR1m9Yh8EPA+5lILy9BCygpAJf+lk78V9BzEsH4s6WqLGbID9wtFiv/pZF3JR5zIA4rBVqFQ8jecLJHwes9H/G6sqZMyfvYZnTOhMK8pq9ZUVuANJ4eppZMaA3UD/IW91lKDagUklsMkXbAEFguxoJlKPmY/SHy9mCzArcUnc2fB0U7uDaw4jRHYosoKvCc+L+YWSV8xADcgCcPXilVqL+NcW8TJpeLrwJVhk8CiI0+wf4nH7btOlk58zfcjfS+VR8ibyxInolXJreLTGUJV1VhULHTQ0soKfOhkDyd/l2JK3Gzo5HRJU5na0D1gbu6gm81yJbu3xUu8YeHS3quA68boX8VeA6lltQyfpUvxBapEIXQ9Gdi6NrSwsgKUtSEPqgiWIMnC24unJ1vx22KBIoBAQf23MuY2LSTljXOuUULlnhXEhvbLaMWinG7Ugy/kj5C1QVe3JWrKCowXT3o4pYBnw8WzrroP1rRXXRgg3fxc0rZ/aNR6GVbC++qr1mizuLMpQJ2lWsXneugcq38PbVltaUvUlFUNn+qG9UfxDc9SAqovQVQIH/j+LZiaDiini8STXso+7sNLeE8jxTMVexRw7QUjjO+xGfebZ3T91rqUT1bLKlQRAuKBS9pyNWVVA75mXILHic+OTw1OztBlDynxCb+ZMJ+T30m68kB5UbaYFQpqLVVYRWDugN/FQeWnks39h2L6iXy1nNsLTiYEvMc9bMmasmoLOo4St9gr8ERrZAHSXuTPupka4qCvnqJJ+kxFCcdixzX0WMbPL1SyMSTmSleDovLPQnYhJgF4i4yfhZBzSwf//mLgPQQ6/VBbuqas2oITEm1Fvl+QwiI+QfHMi/XU2sOmQFBQ2RwG6C4SN9lyulrobGa0jKESQa0ZI/T4ezKc/ssE2KxFuqYWCbQ2aizQLMQavDHk4k3t4P8gb70S+CD7TVu+pqw62mgosbOz+KZ4RQD6LPk+W4plsIdc8BSi/U7k67yr84fT+qbiKxp80u7UDaHng4qOI/PxhILvAYsuRN2+5dRqaRTkUV3n5OkufueegM+LN4ByVrPbMjZl1REw73cT38F1SgHXJ7BKxXiSiOewqZAL1PU7OIGiekit8t11/nRWh5Kmge9VdCw3k7SllTqzkEcE+J7DJZt7jW7kf5Ouk5PvCfzMVDL5ui1lU1adYYx43/y5UkzyMEoK4scZprByAeVxoMSrYI01frX43LnLpftyQJ9LY1UOXijJOOKO3CXjZ0M2QSXWmDdZFs/Jxhk/+28nt3fzO8QnXwv4zCjVHcUaupYWZaiJ9pZudB+o4hpUwAYBGWABJ/uKD9RPsalR92FnE/Esz1juVIg5UJd/JPU3+RwijTXWK4sVRj7gChnH6Fz1EoQAG3Ye+joxxKxUdQ4iv5GOY1VtMVUPMPsHemZidJur0nq94HnQR/fmWfW+equ1W0Mv/Z22ccWP233HJD201f6cKOHKVLWssgK4c36ulhaFcJcq4B5W0clPThjxrA9NF3WLtZ38ReJVgMBa+K14GnwjGNTgPX1cgrFk81lfN/pG8bCTKwIrq3lzfBbGb1b6O0qu3saPFwZUVmB2PXjtmuid99b3PUyVJGM2WH+G6j+/7tGzyZdjiLPq77Q9DLSv6kFRcUhIENmI6Y7TQ9kEVcb8/3hJ3zS38spKdGAv1EEnwLyGpGfrDddrExj+oRTjmqwKFtUDxtyRvv8jVVRnZJjTLPJ+DXzmpRKMJ8phqwxrEi/AnaqwcGcuEuBeeun9zFSHhdMeHDS3l2zutPuksRYgD+imO2/A97CtzrkHIrxjrCPikcuL7+W2kCrI2VQ5Dchx8Fuom7/XjIKP9CD+of78iPhK9syfl8tsfZWtNcI0nbAwiKC4byDpc00G62ltLXUL4BefbrrpS8B1CtFhnUjfP1Wtqd9l+GwfXaj1HnTe00VbO+nOpAclTq24pp/R0+eUyAuZuZ6ljiVkhGv1YHVnIGUFcKUSx22kCWNv3eyz0O45rJ6np/1G5sl/xKcvhLRwsVC3yfm+e+lcGqoWM9T4dSV9mKO9shzczkpjrtda0NDH7Grde5/R8f28LPtfTyknoCcTC/l1gcoCtuDN4qswWJmmGSDwTumqPSN9/6f63n+V8fOcTBdr4Pff1I1yZT1Rv67vncKp9+v/36ob2EqR1gzElAMyfpaWGWP052sD3hMx3EZrJmJVfS/j9e7TMW9UQdySwfrrDsQOt8zg2emtc28jJ0fpPHpKfDxx64IVVb3eEqr8wLqFwHKq+LzUxaQExJOyN507XgcNxl4RtFISh6m6Qc+j30j9Af5mxKy6gHdSqzNGDyhOcRfqIskK7mvZBn7/I32mXTqxbFAkq6vbho2YVhWnS9i271tJ9jjtSTKDwn+nKt4QhyuUFSSLenMhsUhOlmzVL7Baacj5aobPPqmfC1mFZE5VLrdJffl6C6iCq1XJL3PbmXr1wkiV3Zw8rvvwjXo4KCTG22P0PmeVfeB66gnvFMmWYBgCk/W0gYvjjRZUVCurtbOazGAoxQB+850lXz8lEoWva3CjnNbABs/v36CWZQi6OMqQmMGoDJ99VK29trFV5umKgd7HH9SirMdy2VsVThbL83bxVTuysHAH6HV3DDwXYSVurNZ1Z8DlerhaUoP0XfZs0j2ANQJR4zndiy+MYNF2qwiqMEivqaLAwsKnndotOLOerq9Xq2ImaX7wzEvqyZ0ETGIq/SIqKgK+x0n+xn8bZHDdzNLg72+g1liIeCob4sIZ18Wf5askoP8GfCdbSH1EFQgtP8q4n3yoiiZrushHquxCn/YH6jO1fcc14gmhgZvEx3j20MN0vyZWVDVdwcGA1ApKquHeJNVnvlT7YZUGd6q6GQ7Q02MRwL10jnhyQbOWZmHiLa8HA8oaHSRpSC5/aNAi6gybJbhXTtC4RPMyIQfqxtcvw2drwfD2CFnZActh825+B/cf7tEsbjgU7e8CeCtulsaIGfViKz2kzqwWLGk1pAhcpJZgK4P41qm6R+wtCYqDV+0kQMzoSj3Vniadl9uJCU7BxK9+L81XvX2wujXOF1+hfpFE18UXfmKA97mELqIUWEjyxyWIbayacR1eIx2XI8JN807A5zxKuq5MsqCuxyxxsgfFu5PygpjVpRHe8SyqTPEuEKuE9LNyi3hW6j3YYmmdoEp8F4lXxaaSZus0PVXSgZheN0UULCWIT4khqrcv0ASTDssJeu0DuiCXSLgg39fJHqIx53cSz4HeOcd8k4wWCQxFShJ1lNBJ8udTAZ9zpM6NjtBD12CWZ5ioCiBUqas/SpzUAiyq/fXg1sxuvrxrgXE6Ww+6s0uEcEGVB3+yzKBW4voooqnjarppbBbzRBERuKFw8+BOukWyxU7ygDjFOXrCzgtcNd9IeO/v5pxzA3XuZgFU9c5c4W+pAggZ1z1Q77c9IBZsn/E7HwxsDb2h3g5DceDwhlsb5iCxvJB90ZripHCbLpiTdANJDU5c5FEQ2xlckTFjY19PT0LIplJMb68XVFlNDPBdC0k6tyUYn/O+qUeZha5ea5/RWT3DT9WyCnl4W76DgwD5didmPKRhEeJeDN3T7jwJm1JgyIb51ZA4WQKWzmsWsxbXB+4rXHOvFnD9Ibr4eDllTyAeoab6JeLdZnMVeC8oyqcDfRe1HVPmtpDf837Gz0KoODLjZ6FUX9DN7+DODVnbcrAqq7ZEEFxji2f8Plx290Z4JzRkvMp0RSkwqx7Irgnl8WgmH+wkHRgCoLSRSJ24BitqJ12EZHyXKQjbW0/CMPzIZdq2BFbgI2oNh3BXMdYQFfonuvfPVFlljbNRASRrPbuz6vAgPB7Yy4DVDY29Rl5hrClHlIUlSpHa4yROfIn3AQHrzQruX9PUKp6oB5K365T39Ln53OSSPVMvPRyTl3hg3vXZjKwW3DO7iU/a3Eey1VvL6zK5SC2960swgVBS26uCWqUk74gF9sPAboeUbeBxNY3JYYVnrWVXq0Jfj/V1Zw7LpyOQSwRFHUIFrK8s8U0s0VMlbkcDyjbdrcq0jJiie9QEnUcomtf0sP2W/v/7Un/bmn46p1AMg/QQOod6GeZQGawelKJKJqFn6GYBGe3YrB6JZqVgYlWdoZMWayJ15QuqEZymE+WcgsaASs47iA90Linx2nhkwZVq4YXCAomVFVbLsxk/SzHTpTN+9pIGNrEL9LAWEigpaPE7ZrCqput6hOIcs5sBipq2NQT6y+A5wgqHcECyNhVHXtIx/EjlM8nuTu5Kgc2if9ZkkK6TZXT+LS2BCRDdAIbg/np43ksyxHubOV9gsm6IMK5+oJbOwETXxm1CDtZfxechHCDpqm70VOsOZtQaUj5X70uqwCcFHOtVJG2R0EclWxIqp92NJVtXajbhRnKS7tTPhJzzHICOzvjZiboGU5CgYLZSfHiDxHN7ugqW4036vu6S9M09P1Hp7rpL6EGe5OfldC3F3C/66AF6kB6kxpmy+iooPPqi+NysNRI/N6eIaeq+eS3idfrpaWkHvWafEr6HabqJPBJYOW+c+DnuyPg5XGdZgs1sgLTCeL7Bz3EoOKgE732qehoeTnjNg8WntMwW+TpTdF2PFV9HkAT3B6WYVJpG8ZQKrjmqsawjvjIHMfeF9N9isIRZr1SsIRRQd/WSVlFWuB2uU1N8Vx2kVCZwrXMqfuOjVGmGxvLqosGKHF7i9/CpWpshu5Niwa6U+DnuzPi57TO+n09VWTVamQLW596SrZxTSNyrG2JKQOTAbRqrlc1nemghz/I+vd4HUl3gKSDWfrEqqWV1X6EPF67DkHmkHDA3U8v/QKmzm0WrZWSPUwuHyt5jEl4X//E2qjAXDPi9s6sChG2zf8kVFbgiwul6L0mbkM39v5Lhc7gAd8+xkVwpjTPoxuawAkMBBUtH6SLaSrAuYhCccANT1eO7aiHcXXFF1d6Kf1MtRPbKLVSuC3ydvmo4/KURDddqwGzHn0xS7N8kLjOpvRU7UjdsTip5isMOUeWH24E4wNAKWMlsVj+VsMF1kpt3S/wcV0k22vWh+p6ygKaKr2f43P9005la0DvnulToTl14ema1Ck7Wn0ODOGCNsTdVmhc8GwxUXPdUuiHpHuLOWxIu5eS7epjp9j21cq2rd3WjO0hPy58nui6KimTYdTJ8Flciibz/FN96erEKjfdfJHz+C/HHYQmfgYPOJRk+N0wXZVYlf3rGz05Ty+rZgt45rrEzJUyFkkYUCRbsnRE9DcRzVpTWw4s6tqTBkO83LsB3ooNwVW/a3QHeCjP6kx9U3PMSXY8xX0lf9noNfG49vUd6GG0Q6cQYCxMybvLd4VuJn+OFjAsUKzhrhX5KeT2X456pEHKXpO8BB0j+fT7h9WbVwyddEWLH6baW1sRkPQD9SPdN4lx5Y9Ac5o7u7nBhysqbumwGe+qm8k6i63I6u6YOCwuX31VtTPE5KjjGt0U43Q8t4HR7mzTu9iEZk+rqWcpwTVTLJK81eIbEqRjRFbjvSxNeD9YawfpfSJpec9C9B0nrYpJar3gMiD3lzRVbVg/wPUxZ1QfKNNFU7zpJU3liVl3UG7V7F/hyqbxBT6lH9Z5i4l195kkRvpvEx5skfOIjTfFSFq7FTTy6QWXFwltVsrMVmY8hal1SfumWhGPFnP1lwutRugrX+PGJ94tdbcv8ApeosuEd5OEA4DHaTzpxB5qy+jJwldyrVhaFRl9PcE1IF9TIW6WNSUxH0vP1lBgzJjNZrTbaU58icXKzXlOrMCS4z5UlbbdmXJmNtt7AVfvNjPdJ8P56CRfvOUgPDrFB3gzuv1TVz4epkvp2AfvFtrZlfmmdkxL0c8mXBE0u7DKmrOoHVGGYRMRE7k9wPTLJiZ0dolYIihIXV8xaXmPUhN9DT/A7RroOTLZxgb8T90vq6hzEXhqlrM8l2YkVT6qbJZT77hk9+ca2Pi8T795O5Xakk+92UkwMd3FJS/ApO/DQ/El8DtXLGb+DOp8d5gaasuoc+PrJRMcFR9mU2HkiC+vCo8ZdrDYjbCBjxdPd2eyh0b+vJ/8dIo3h5RI+uI81ukJii/slaSDbXvGzjNZqrWfVG4Gf41wJ30OqLXBZkpuTonoDLvTzxCdaN6qoPgw0J/sknodVwGQ94G+ih61GWdbopK06GldTVt0Dd8buavU8IekD1SHNdCpeQyLBvdjWJbR+pLlwv4TpAtwe20vaclJsvv9V5VsvRkj2mAZulIsiPAckl+sjzeH39UScwnUOyeinGceX8kIQMV4IcB94PpazLbLTuUb86d8ZPksFjV1MWWXfrCgTRIuEG6QYGnCee79QXz6JqR1VkFgn0lw4I8J3zinp2z9APBnd4GcOyqFQGbdXIjwHScKXSZzCqpyg703wLmbRdZil5uEYVVTnZ9xE2wMiACSfVilb1yhwZVNZ57YMnyUeuIwpq+yLESsB+viJFbnn1/V+cfHd3ollwOZPzCx0wUoy32+M8Ey4ZVM3joTkcHcDvw+TM2tx3fFq+cYCltWjkQ4RuyR4FzBnYRo22hWaeMr3xddY5LB5V4B7Yc3MI8U3Mi0zSCTeRBVXI+D9nmzKKj9wQUBMIGhdRrcgro6jxQeAuztBsrHOH+Ee7pDwsYs+Ou6pcX2Dp20UVZYkYObS3xI8D0HwGGWCsHZidmteU7x7tNFakMTpSOK9r82/YbmGYEfOYcqqW3ymB4VnGvzcOuJ7A5qyygnKHe2T0cSNBQLyxKUo1HtMnYtxIT0dhrZC74ygrFaS9J2fpUELcYie/rM0u2QDTZFIe51aGKGBgl430j3Xqr70zTCmB3dgSbE2QpT/mk3ityFpBjzg5ARpjKjWo+3h1JRVdkzRBYCL7ZyC72WaWlCwaA4X3y+qHhYOAeJFJDxZgZNsDDLKpgVtDI1YVsvn2LBvlzR1/Car5R06CZx5tJmET7ngMAWzstFamMToKL3UUamvepoT1oP+ka3JZtoviZ3/tcHPrSaeKW3KKifwfcMWJIh4rC6O1BOAuBRBY8r4U926kSRSchmWiXBfMA9D51ZhAa4l6YPZkAY+rfN3e6q7I0vqATG+yyVdKw0OE9cG/k6efwV9V6HA+95bD2KN7FcclCieDF1/aidrN0Tx6h4Sp0FhMwJPy5E69+rFAuLTeUxZBTyp/ksa98nmwVjxVSc4eZyR8ZSMq2qpCAr8ZQlPYV6qNmkT44YGfpeNesOM14Hmn9KlzGYeoz0OlnpIwg6VKQ7J+N5OkDRl0wz1g8PYQVJ/hROIO6QH9DZllR8EVw9V8zZFzgVKiXgZcSlYY3lqx1EJIjS5YqqenEK2heilluPAAg4hjZSKOlKyJ3T/WdK20oAa/J0I3ztIlXYIC3h5PZA1yvy7X70d74ihjLhfvQj1WrZU8+lv+QHZgX+eEkXHq8JK4QogkfEAJzdLmFwvik+Gji/gmnwq8HcyT7cv4B0z3uPr/F1clOtnvA4stesTPtfX9HAVa86upUp7So7v4GCCa32uBj+HgqJCS3d5asSZhoqhKOuK0l9Q2kfU8fswAvubZdUYGC+CvZupwjhbzdQUigq3DQyueyRcUvJKEe4TayR0Hs9PpZgg9ktSXwyJjZn6dH0zXGOiWmSpEs2JAZwfec4SB83TyoYDFFVj1shwUOLZ7qjzsDkg0LqsalWbIvGQ7mX1AJbpUFNWjbk3dhNPn4VevGYBivIbosyYQFg6wn1ysg1JroD9t3dB7xx35gd1/N5InQ9Z1hOxlQcTPQ9j+YNI7729VbR+js9D0NgnwwGFvnSnSX3uVJTpkADP+pGkqWbfbOBQ2wiLem1TVvWBqgkEv09Wq6pvQfeByfzNgN+3eoR7ZMMImXBKzlIRla3ZgJ6W7l1ZPdUCWDzDNaBOQ+f9JNEzra0WyyyJrpUVh+oBoFHQWqfeat+4wHsFeM63JF07lGbDnWph1YOvmbLq2k0AYeJfakmNUrdBkTRV3hexmxCxxvkjKd2Qvat6SzGxKvC21NdOfqBa3FneCcVxCTancAHiGYAdl6oH2AYZLU2qf+yRYZ0RsG+Eir9GoOecYMoqM6ZKu5JKXWCUKauON0gsDhrI3aSWTO8S3d8Skr3uXFssHun+ng/4XaP0BFwE3qlTWUEmWCnjQqXvU4oq5ZAUzo/4zjvCvBksYqptH5tRYRzTwO9z6FwlwDNidZOAP1EMWcEBo54UiuGmrL66WDh90giRXIAhJb3PnwT4jgUj3dtjAa1IDg3zFTTGFN7srsIBlumvMn7/OJ1nscE94lbbrIAxHNXg72+nh7FGcUWDh6RvB1rbxF3uEUMeoOjrqdY/tymrGaC1OwH1H0nYDPz2ILcA98/7Ob6Dlu4jct7HKpGe77VA34N7bVVJE1/pCI/U8TvrSfYKIOTIvRv5GVjf5FPRUqMI93UjNSdxSxMbbrT0F5bpVdJY3O/QQM9HasMdYsiDafUq/FZXVpw6calBQ6cAbMx8KRYTvaRocw5p4KUc30V8ZMOc9zMowjOODvhdWH7rFzg3ujvt4Uo6JON3P5jIqiLmepikT6auoV63I2turYwHKNIkHmjg91l/iwZ6PuItVeptV1Zl9ajUkSDcqknBM6mLYi/xrQNiuvum6wmMCgUXyYwYxeOSvSU2hwyo0lA/szLvRkZ41pDle7aR4lovQFfvrqAsh5ws8TQs6uMSPAOWyh8lW5X6SRKmuHG9BB5iwrtJNsLPxVJ/Tc55JDsZpj1gil5huiYIPtZ1MadZVl9dQIfoJN9b4selKKYJSeM0+XIw/aEc38lJFFfl3Bk/T8B95gjPOjbgd+1W4Bx5ULp2Kw1QyzYLs+42iR/nGKiHoyyWCtTvCwLdx4g6f28JtawaBevp8gYOeHg0Vgv0bL+VOLUVWxEoqm4Zla1iWfVQJbWEKo9Rka9H4JW4FG0NOmt+mLdTKadEXGVZEnBni/TuQ/Wv2i2HIg6B7kofYa1sIo27jD/Q03jMmnWz6rxbL8Nn39Gx3zLQvdRrGR8h2Ri3dAyutyI+lTsgJuWthIKn5EaJ0wW7VcG+0S2jslUsK4Lg9LW5PYGigkVGvcBvS9ddep+XfO0gsAiH5dhEYlhWLwf4DtxPexY8X7qrfr5rxrGHKXlT5HuntfzuGd4vSdAwYYn/9Es41hxKNs3wOejq/6zzd6kBeKpkYxp2pNDPEcutSo0Pmt2yYuODgk5QdfHIliSK53y13IhHdRdLIi5AXCRr3IoT4sL6TI3GrQZFGosQ/bygqy9V4Jx5S7qOV7Hh7ZTxu/8Y2apaT62NLK5tLL5z9ZS7aMLx3kKydVW+Uuovq4QS3jzQ/f5TLW+rB5gWLzazskI5/Vk3v9gWJL7zfdQ10EhDt4dzKCvRTWWWDMqKWEvvkr43XFADCrz+U91sRLSeyMKuu0832FhYWudflvdKmxlSNmp1ENcJdE/1FDTO0lX5szrHknl0TI7DRUdek1+KJQGHRt861vz9zegGJJZDzhQuuKzFResBvmvaR9Bqgb4710njnUdfyXkPwyWbO2+OkiorGIqrSrHu6ae7UFY0f9w9w3fiYvtZpNN4Dz2Y/SXjO4WpunEbRbVBwPHv7nnnl2yuuSfqWDsjxFPL9wzkRcBtv4PUV9jY0Bg4/M3Zze882EyWFQuV4plUld5I4sRk2oK4Bn5wYhCTMn7H4znvYcEEz5kKbLorSdqSQB3hsU422VnUes6SpHyJ+BqAMYCVfLRka/w5Xj/btsN1yIaM3ZWSWqyOTaojcL9vdPJ/vB+YmiT+hqr/N1Z8vtoTYoix7tnHuiLjYMk+1izKipPg4eLzpoZJ3Gx92Ec/F9+td4LkSwrM2/dpvozKamgJlRz3Q25VvwLvgUXxWifvdOmMVgdsTfLrPot0z7ilts5gVVHXjvjL5W2edz4J2/qmO8LNyAzKarJavx2Rk3AlHSWeZDJXoGfgvZ0uvoadxaniKKsVu/kdmNXjq66sZtIFRpuFVSJfa6oO2g/FVzcIkbmetzVEbz2RNFriKBZ1PQ/mV2VQJMj3+KiTcYax1miC7XSdK/dJ+EoHKPf9xHeObhTT1NI7so1XgE1jYwlbi7ErzwEW0IgMlirr8IM249lTlRRK9iQJSw5hbE508jvTKdHA+9+imzVEJ4dKswFhtG2r5v7Cka/1tp6OT5Rwte9qL4ITYp7cD1wpjzXBpCXXpm/B9/COdByTwFrfOaMVfo6E71eFotpRraosQIFuL192Xw/RTSMUuYUiwF2xKmfNqBhRTn3azP011CJfL7C3gLqNvxef8mKIhw31oNrV3ks6xeSqKqvhetrhJB6zP8/nOlBQX2+R+hMQG/n+1yVf6aORJXovWd/F8rrhZAWU+RD176ZKxyQZgvSLZPg+qqTcFmGcV1HlnkWxcLChgkv7mM83JFsicWf4j3Qdy51FslHsa+5iYpuj1NoN7TrGvV9z9RvigUNHd10LxqgXoJIVLFhQlIMZKvErSePPP1gXdqyClZ/n/PwcGT5DEd2Jki2/pStkbTuyc457uSugwh4vX82Dwq300wzfhcVMxYTJgceY931WRm8Cz4frr6NSXydI/uoObXFdHRtVlrgSltXXVWKtf4g09BqzGFVcQOZZuov/Z889v7Ymq0RdH6wnwkt0kseaqExQAsPEprZTy6fMlZVnyfiMZbkXEoA3zXg9FP3penAJgfbvGbfkcRkOdYwvtSBDtwChoeG/MipnlOcfVIm0fU6sEogWIWNVb+l9doWZchxQekRY/1PU6lxK790UVVzMo4eCrt4j7MtL206YKmBpPRFmYT01AtxAN+kGdV9FxmbhEt3LiAZ/v5d4n/XwjNcbI3E77a4p2dhxz0q4YrA1zKXWTxY6NtYd8a1TOzhc7K2HspCg5c4kqQ4YH1x+xKieNj2S5IBNj7Xlu/gdYp4QiD6tirJiMyNnilbXoxJcj5MnsbC3pTp9ambL8Jm3dYGGdgMumWED3lKyEytIyJ4z0rgSD8rSUZZxvVC6bzHSCIjT7CnZcqCwGH6rll5bl2RPPSgcoussFD6V+nIPsYo/K8H6gfzyY/EEKkv4TYPlVRF1tf+c4uRuaTdhy6x9KZNyTmRFhbn/pm4Eh6oLI5Wi6pFR2eTFB5K9D1ZXmFMaY2RhJayV8Vokht7RzeksD3AHbZZhjeBCvkKVRAj01PvAs9Anw9yG5HFSB4oBi5wKD8MCj9vDusl0t4aImY4rcH+ZovdKg88zTVElA+5mGo921kWaeQM5528dLYQygnL+v9ZJNFfka92qJ+grC3jOXhI2VlAvJkQ81dbbwZjUg5/lOGBAv6bkTkhSwKyqEFC4h2XcyLGqngx4TxCKTpdszRAhCfxCfP5YW1CPEjflQoHf/WRdR2Pr+N1JekgsAq+qFwVW4QNiSAXIStRr7YpZ+6L4rhVfKadVNjcglgaupKPFu4di3t8k3QT+pAPUSpgg4VlqbTfXa+v4PdxPy2a8BlR1Kl+TwBuSug+JBwo8VfqzkD5w/Z0a8H5WVetnngyfpYHkAR1YL6uri2WFCO+eiiz10r0/VqWOhZOqTiXz5TLx1eUfkmrF1aoOLHlCLBt1Y20foZaVlF1ZzaOTaTGJS0t/R0/1TNqpBT7vqgUqq1iWFa0YDu7md1Aw++a4BtT7Wl+okDk2WFJH5TgoHdGBFZMVkE7IQclS6PVhtRraK6q1VZkMi/TuqUj/dp2/S8yK/Jk31JMSGzDLqBt6t4Rz0Rrqw5xqGHRVroxYJ4nuV0snTMyyuAFr5Wwe1Y0spqJioztQfCxsasHPPXtB18UvPCbSd+O27aofFcrl0JzPfp7ka1zZ1aKiKkoWCj6W3g2B7mMWnaNrZ1gLsNlo9/Fqm3+DLEL8t0ZRj0H7RrGObvBzKKu7Is5zFOcdugnCKL7NFFVSMI9pAXOfWlQ9u3hPpApdJ12kDJTBsmLzgjqLb31o5GtxGj9B4lQVyIKVCrz2U5G+F2bfJtJxheqe+n+b5zgo0aqhbfC1TwneIzTbv0q4Cif7qpXSqHuMGNDh8uUK7ying/Q7Y5SzYnO5XXwsolHgiqaEGUSbEYHuB4sNt/4tKvdI3IaXho4Bi3Y3tWa7isuP0zl7eXcHiTIoq931VDYo4jWm6qkShfhKiV5oiI64EzJ+7s6IVjLmPgH81zuYwIflPJQQw2lbbHaZgt8hViq9026VMCxS6vNBLmo0rYAE5C3VuqmdTon/QiRYK6O1WA9e0/U7PuPnsfCJEeL+z+uevEE3vXt0nX8qhiKwmvhcVeKiXRGg7tP9/3mpIwm7SGXFpraH+PyPmJiqE/gQCV9RIA9qZWPy4uWMn3tYT6G9Ik1WzP7zdBL20M33H5IvsE9848oOLLki8aF4Ku7/cn4PY4Sr6rfSOMORaxMnfKjNWO+hG0bMrsvEPWnLc3fO78EShEV6lnob6kl/YF5NUqv2Bj3EPCWGIgE56UdqKXV1OPpYjYcjGtmTi1JWLCCSHGNXNOYE/kfx2fuflezFEjifrcDrf6Sn2uUifHctLgXZ4BHxFGmYad/Ieeg4TzenMoHSPLcE+J5BOmaLNfg5Fj5FVy/RTR62375qZcXsWTZBLcBbAn0fioZcR2KG5D5RqHaBds/wgV4XdyexubvUqn1bDEWD93S8dN2ZmT2YlBP4AuT/NRQ/LEJZYVFRauNnEV0TtcV0onw1c78sWDvQ9zyf47M3R1JWYKSelKFzzyv5GV9v6sbY/tDxiqRhk3V2T0cFml+7qoJpNJb3kh462Oi31ve5gMQlT+HePVo8mzYkcCVC/ad4KTk57ZuLYkG+o783XowsUSawl+/QiU7BPU4vwL+IZ/tlSgYvQlnhnjgh8qmPSU2lbNxOn5f05a4b6HvyBI9vkmwVxevFnBKuHBJ5Qx0lcBaprPAMvBrge76WY00Ql7pO13KK7s9Y5MQZ/hNxbb2v7/tB0wGVAXPhBflqRZmX1OLC7YfbNnOB4JTKqp8qqlMjXwcfKL7Qv5X4xULvXizQd72U47PPiQ+QDy/5QuAE3Rnbrqgajg/rKTEv+qr1n1XREHOcNcHzTtbT8Z4SL+3BUF2wNolfflfn9FjxRJfRgTwPyZQVrr/t1HUQEwS7qaH255K/WFiAgwNNkPE5Pv+xWitlV1bEvTpjLxZRheAjVZ4hattB216p5OPP8+KaowLBy2IwdHxofEQlClIlBW+oiipmEuzHam7+veQvlZPwqhKm5uGbks9vzyZ0fwUWAgyjzlrDP1HA/WBhXCZh3GDQ/PuXeOzHqzV1uCkqQ5FIYVkRJD018ukdrX6VeHfKxJKP+WA9SYegjL+c08TGf/y4eEr4vCUdr391o1D/l/h+GDP6HoVINOXwNlLipA/kXU+TdOwPFEuqNbSAsqJ4IZ0eF4p8HSisB0ucEjyhARlgxUDf9ZbkZ0RBGX6lpMoKt+6Z3fzO7QUozxsDfRd09TlKNuYT9XCAK/3aChz+DKascgMWGLTeZSM/A8He3aQ6uRbrB1QMT0r+mA1WFfGgVSRuTcYsuE+6D+Y/k/B+KONzqISLk0H37VOSsebQQ3LvX/XPV8RgKBFixazY9GgYt63EjYvVCBVV8qXvE3BzIWaVtxjvND1Bl43iT4zqaum+5xFJwmMT3A/u1t9I2HYyULTL4GKDEUqODKWeLjBFZWglZUX2OVUjYpbCYbMmyezWCo03+SkjAn3XhICbCifpsuW0EEujKkN31PTpCe691nH3CglLlecdPiLpq/+jeEnsxZ25o87Jy/SAMF0MhhZRVpRSIgAdO1GTWAuNE6viU6eI60EBv494Vci24CeUbLyOr9PqSKGsUJy/lXC9qtqCzsIvJLRWSeY92snO4jtkXyA5EjUNhlSIEbOiYOwGCe6dBVelDr80wwvZ1Rb3WEj3J9UsCKyvUoKxot5bvb2hUFaPia8bF6NyPxv8bhKPIs+hi15Tl0c84GFFXaoyVi26z8VgaGFltawu7JhUXDYnEhSvqtA4z6vKKlQ5HE7CEAtC1jyk5h7B9a9LsU05cYkd3uCzPaPW1YaB74WY6K6qDGOBd0mW/zfF5whyoOmTcV18ruPGGBKHws13hY7NVDEYTFl9gT56QhwW+Z6xJo6v0Biz8a8nX62ZlXeDi9Fhle8k4XW5gsaK57pIfEXtRkDiKg01KQ4cqjgyiur3auWlAKxHqtJDTILoQNI4OXmzd3B4mKKWJOOFOxhXOC5TSm89osr7FbOeDKasOgY5VVtKXDo8i4+CiFVy/1ETcT8J2w6Ecbgj0kGAPKIlJG5F/M6Au+pv0ngc8nNVcnvqPAwBKvbTXiZl7t47+vwXtVFWc3SjrCboeH1k25nBlFV9gKa+SOT7JRB9rZSz5Udn+LGEjwPdoJtVaEzWzXIXiZ/I3R64sYib3S7ZGGlYEic5OT3AvRys31PUPMMl+6qEqehuMDQFQsUmYADuL3GTSqepNfFohcZ3Jd34Qo/LORHveaxu+qldSBBGyGPKGltBwZ0hnmKeVcmQs0WftVMqdiAyGExZ1Ym9JEwV8a6A6+MiqU7DNSp4HCvhi5QSOL8l8r2fLWnz11AM9NV6KcB3UfT2Umm8MzSsvB+Ir2NpVG6DoQmVFQHgQxLcK4ypuysyrrD+YJGtFuG7cYPGbovBRv8TVYwpcLYeREKAGM5hah3V+6zk69Fll5ynT2xbMBiaU1nBwBoS+T6n64m3KlbVUnpK7xf4eznxX5/oGcgr+pV03PAw5HvlAELC7dSA3zlOLbU1xac4fKTPMUnlU/03xnIdJweIb0RpFpXBUFLkJVjAGPu2xK/ePtbJNRUZUxQ3lOf5I3w3tORnEz0HGzeJqsTd9pQ4uVe4/Y6TeLXoUIQUw51HfOrAzG2sKZSx9WcyGFpEWS2sVkTsat03SzXKKqG8T9HTemhgeUAwSckQo7zQr/U9rx/4uyEzHKzvNiY+V0trnC13g6G6yHtaXlTi1wAEN1RgLDm10xJlm4iK41ZpnDiQF2zyxHP+E/g7SYAtY7V3g8HQZMqqt5NRErdVPSDIP7bk40h5Kcrl7C7xXKLkmN1T0PMR36HwKQnZeZJkiTnSO+u74ksYWYzIYDDUhTwbK+0/lk9wj8Royt5WG9YfOUIxu+1CQviwwGekSSOkkdvFxyl55nqrcmANUrmc/lTkiL1uS89gMKRUVilqyL0u5S4ls4aT8yRuxQfIAGVwhRJngmZ+nXgXMEzQlfXnxdr9LhU2IE4QZyMuVatXZwVVDQZDUmVFaaXhke+vRkP+sIRjB6lkVfG5OfNFvA6usqMkfayqK7ypcqctIYPBkAJ5YlZfT3B/5MO8UdKxW93JaZEVlahlcptNVYPBYJZVNqyc4P6wKspYow2LikKny0S+Dq40ehx9bFPVYDCYssqGJVp0zGiDQtxmzgTXekg8KcHo3QaDoaWRxw24dIuNFaWT9hZfRy6FosIFShXx92yaGgwGs6yyYd4WGyeel75UezgZmOiaF4hn3RkMBoMpq4yfG5bo/ihfNLjgMYJIcaz+OVOiaz7v5FCpTuFeg8FgKKWySgWqZMytf04p4No7iG9vPiThdamBSHsOc/8ZDAaDomcF7nHxxMqCZGfYfueLT/ZNeW0SZul0e5dNTYPBYKiOZQWokjFC0uRbUZR3PyfbSZoCve2B++8ks6oMBoOhesoKy2YnJ/dGvMYgJweq8HPvgp6VJoBP2rQ0GAyG6ikryhrRIp52EjdKuErduPugoG8svqvswgU+I6WUjpewbTgMBoPBlFVizCq+YgSWxy2Sr6oFCopSUes4WdfJigU/G8QR6gueYNPRYDAYwiqrVwu4V2JIJMlCfKAb79sNfJaEXtqz00QQ8gQFeIdK8QQTCvXSo4rW7p/adDQYDIaO0WP0Pmdl/SzuuB4F3vuZ4t2CbPYf6cYvqoD6iK+wgQVFG4v1VGGVDf9zsoUY+89gMBiiWFZgtBTrQvu+CqDQK72SaC2/oFTDvTneybamqAwGg6F75HGDPVGi5+jvZEnxTQCroKheE5/4a4rKYDAYIiurW234MoEcqp87uciGwmAwGOIrK9pXWO26xkCM6gjxlTGsvbvBYDAkUFbvOHnKhrBujHPyI/HEEIPBYDAkUlafiLVbrxeUijpMPO3eYDAYDAmV1SQn96nSMnQOaPWQKf4p1vHXYDAYkisrQB27520YO8TnOj6bi2+kaDAYDIaClNVzal1Nt6H8EigHRS3D3ZzcacNhMBgMxSor2IDnSb5afc2Ic53sIz5x2mAwGAwFKyvwoJNLbSi/KD/1lpODxVfWmGAWp8FgMJRHWYGjpbHCss0G4lMkSe8ovsiuwWAwGEqorF508vsWHcOJTo5ysrcqrGk2rQwGgyEsQtbRo3zQpk7WapGxw8X3hFpTj9tUMhgMhvJbVoCq5yeLj9U0M3D5Qdc/xsn6pqgMBoOhWsoKXC/NHbOBQPFHJ7uIL0b7tk0hg8FgiI/Q7TQ+U+uqr/g4TjPhZvGVKLCqrKuvwWAwVNiyEt3IT3RypVQ//+pd8fUPN3OykZMxpqgMBoOh+pZVDdTDo8L4m+JZcjNVaEyISVGZ434nFzu5Q3wdRIPBYDA0mbICr4p3Bb7g5FjxrsGygwTnf6o1BR1/ok0Rg8FgaG5lBeiK+wfd/M9xMspJjxI9P/TzD8XT7iFOPGFTwmAwGFpPWdXwmPj8q2+JZ9INUxmQ+Hlx50Gtxz35tJNrnNzu5H2bCgaDwWDKCnzs5O9OLnOyuJORThZxspSThZ0s4aRP4GvCTnxNLSbckcSintc/x4tVmzAYDAZTVp2AONBold5OZlUl1c/JAk6WViW2nP4fP8/WzXfizntQLaenVSHxJ3GnT1QmqfKy4rIGg8FQMfyfAAMAdQeZLnX5SLcAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassDart/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/SassDart/class.Preprocessor_SassDart.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFByZXByb2Nlc3Nvcl9TYXNzRGFydCBleHRlbmRzIFByZXByb2Nlc3NvciB7CgoJY29uc3QgRlJJRU5ETFlfTkFNRSA9ICdTYXNzIGNvbXBpbGVyIGZyb20gY29tbWFuZCBsaW5lIChEYXJ0KSc7Cgljb25zdCBERVNDUklQVElPTiA9ICdUaGUgb2ZmaWNpYWwgY29tbWFuZCBsaW5lIFNBU1MgY29tcGlsYXRvcic7Cgljb25zdCBBVVRIT1IgPSAnQ29yZSBTQVNTIHRlYW0nOwoJY29uc3QgV0VCU0lURSA9ICdodHRwczovL3Nhc3MtbGFuZy5jb20vZGFydC1zYXNzJzsKCWNvbnN0IE5PVEUgPSAnUHJpbWFyeSBpbXBsZW1lbnRhdGlvbiBvZiBTYXNzLiBZb3UgTkVFRCB0aGUgRGFydC1TYXNzIGNvbW1hbmQgbGluZSB0b29sIGluc3RhbGxlZCBvbiB5b3VyIHNlcnZlciB0byB1c2UgaXQgLSBjaGVjayB0aGUgb2ZmaWNpYWwgd2Vic2l0ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbnMuIFN1cHBvcnRzIHNvdXJjZW1hcHMnOwoJY29uc3QgTE9HTyA9ICdsb2dvLnBuZyc7Cgljb25zdCBTT1VSQ0VNQVBGSUxFID0gJ2Nzc3ByZXByb2Nlc3Nvcl9vdXQuY3NzLm1hcCc7CiAgICBjb25zdCBQUklPUklUWSA9IDEwOwoKCgoJLy8gTm90ZSA6ICRjc3MgaXMgcGFzc2VkIGJ5IHJlZmVyZW5jZSAtIG5vIG5lZWQgdG8gcmV0dXJuCglwdWJsaWMgZnVuY3Rpb24gQ29tcGlsZUNTUygmJGNzcz0nJykKCXsKCQkvLyBQdXQgaW4gYSBjYWNoZSBmaWxlCgkJJGZpbGUgPSBjbXNfam9pbl9wYXRoKFRNUF9DQUNIRV9MT0NBVElPTiwgJ2Nzc3ByZXByb2Nlc3Nvci5zY3NzJyk7CgkJZmlsZV9wdXRfY29udGVudHMoJGZpbGUsICRjc3MpOwoKCQkvL2RlYnVnX3RvX2xvZygnV3JpdGUgQ1NTIGZpbGUnIC4gJGNzcyk7CgoJCSRmaWxlX291dHB1dCA9IGNtc19qb2luX3BhdGgoVE1QX0NBQ0hFX0xPQ0FUSU9OLCAnY3NzcHJlcHJvY2Vzc29yX291dC5jc3MnKTsKCgkJLy8gRVhFQyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCS8vIENvbXBpbGUKICAgICAgICAkY29tbWFuZCA9ICdzYXNzICc7CgogCQlpZiAoJHRoaXMtPm1pbmlmeSkgewogICAgICAgICAgICAkY29tbWFuZCAuPSAnLS1zdHlsZT1jb21wcmVzc2VkICc7CgkJfQoKICAgICAgICAvLyBOTyBTb3VyY2VtYXAgPwogICAgICAgIGlmICghJHRoaXMtPmdlbmVyYXRlX3NvdXJjZW1hcCkgewogICAgICAgICAgICAkY29tbWFuZCAuPSAnLS1uby1zb3VyY2UtbWFwICc7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5pbXBvcnRfZGlycykpIHsKICAgICAgICAgICAgJHNlcGFyYXRvciA9ICcsJzsKICAgICAgICAgICAgJGNvbW1hbmQgLj0gJy0tbG9hZC1wYXRoPScgLiBpbXBsb2RlKCRzZXBhcmF0b3IsICR0aGlzLT5pbXBvcnRfZGlycyk7CiAgICAgICAgfQoKICAgICAgICAkY29tbWFuZCAuPSAnICcgLiAkZmlsZSAuICcgJyAuJGZpbGVfb3V0cHV0OwoKCQkvLyBBc2sgZm9yIGNvbW1hbmQgdG8gc3lzdGVtCiAgICAgICAgZGVidWdfdG9fbG9nKCRjb21tYW5kKTsKCQkkcmVzdWx0ID0gZXhlYygkY29tbWFuZCk7CgoJCWlmICghZW1wdHkoJHJlc3VsdCkpIHsKCQkJZGVidWdfdG9fbG9nKCdDU1NQcmVwcm9jZXNzb3I6ICcgLiAkcmVzdWx0KTsKICAgICAgICB9CgkJJGNzcyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlX291dHB1dCk7CgogICAgICAgIC8vIEZvcmNlIHRoZSBzb3VyY2VtYXAgVVJMLCBiZWNhdXNlIHRoZSBzYXNzIENMSSB0b29sIGRvZXNuJ3Qga25vdyBhbnl0aGluZyBhYm91dCB0aGUgZmluYWwgY2FjaGVkIGNzcyBmaWxlbmFtZSAoc29tZXRoaW5nIGxpa2UgY21zXzgyY2IuLi4uY3NzKQogICAgICAgIGlmICgkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwICYmICR0aGlzLT5zb3VyY2VfbWFwX3VybCkKICAgICAgICB7CiAgICAgICAgICAgICRjc3MgLj0gIi8qIyBzb3VyY2VNYXBwaW5nVVJMPSIgLiAkdGhpcy0+c291cmNlX21hcF91cmwgLiAiICovIjsKICAgICAgICB9CgoJCS8vIFJlbW92ZSB0ZW1wIGZpbGVzCiAgICAgICAgaWYgKCEkdGhpcy0+Z2VuZXJhdGVfc291cmNlbWFwKSB7CiAgICAgICAgLy8gRG8gbm90IHJlbW92ZSB0aGUgdG1wIHNvdXJjZSBmaWxlIGZvciBkZXZlbG9wbWVudCB0byBhbGxvdyBmb3IgdGhlIGJyb3dzZXIgaW5zcGVjdG9yIHRvIGdldCBpdAoJCSAgQHVubGluaygkZmlsZSk7CiAgICAgICAgfQoJCUB1bmxpbmsoJGZpbGVfb3V0cHV0KTsKCgkJcmV0dXJuIHRydWU7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassDart/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/SassDart/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/class.Preprocessor_ScssPHP.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZShjbXNfam9pbl9wYXRoKF9fRElSX18sICdzY3NzcGhwJywgJ3Njc3MuaW5jLnBocCcpKTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxDb21waWxlcjsKCmNsYXNzIFByZXByb2Nlc3Nvcl9TY3NzUEhQIGV4dGVuZHMgUHJlcHJvY2Vzc29yIHsKCgljb25zdCBGUklFTkRMWV9OQU1FID0gJ1Njc3NQSFAnOwoJY29uc3QgREVTQ1JJUFRJT04gPSAnQSBQSFAgLyBTQVNTIHByZS1wcm9jZXNzb3InOwoJY29uc3QgQVVUSE9SID0gJ0xlYWYnOwoJY29uc3QgV0VCU0lURSA9ICdodHRwOi8vbGVhZm8uZ2l0aHViLmlvL3Njc3NwaHAvJzsKCWNvbnN0IE5PVEUgPSAnUXVpdGUgYXMgZmFzdCBhcyBTYXNzIGZyb20gY29tbWFuZCBsaW5lLCBzdXBwb3J0cyBzb3VyY2VtYXBzJzsKCWNvbnN0IExPR08gPSAnbG9nby5wbmcnOwoJY29uc3QgUFJJT1JJVFkgPSA1OwoKCglwdWJsaWMgJHBhcnNlcjsKCgoJcHVibGljIGZ1bmN0aW9uIExvYWQoKQoJewoJCXBhcmVudDo6TG9hZCgpOwoJCSR0aGlzLT5wYXJzZXIgPSBuZXcgQ29tcGlsZXIoKTsKCgkJLy8gT3B0aW9ucwoJCWlmICgkdGhpcy0+bWluaWZ5KSB7CgkJCSR0aGlzLT5wYXJzZXItPnNldEZvcm1hdHRlcignU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxDcnVuY2hlZCcpOwoJCX0KCgkJaWYgKCR0aGlzLT5nZW5lcmF0ZV9zb3VyY2VtYXApIHsKCQkJJGNvbmZpZyA9IFxjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKCgkJCS8vIFJldHJpZXZlIHRoZSBzdWJkaXIsIGlmIGFueSAtIG5lZWRlZCBmb3IgdGhlIHNvdXJjZW1hcC5tYXAgZmlsZQoJCQlsaXN0KCRmb28sICR0bXApID0gZXhwbG9kZSgnLy8nLCAkY29uZmlnWydyb290X3VybCddKTsKCQkJJHRtcCA9IGV4cGxvZGUoJy8nLCAkdG1wKTsKCQkJLy8gUmVtb3ZlIHRoZSBmaXJzdCAoaXQncyB0aGUgZG9tYWluKQoJCQkkYmFzZVBhdGggPSAnJzsKCQkJaWYgKGlzc2V0KCR0bXBbMV0pKSB7CgkJCQl1bnNldCgkdG1wWzBdKTsKCQkJCSRiYXNlUGF0aCA9IGltcGxvZGUoJy8nLCAkdG1wKTsKCQkJfQoKCQkJJHRoaXMtPnBhcnNlci0+c2V0U291cmNlTWFwKENvbXBpbGVyOjpTT1VSQ0VfTUFQX0ZJTEUpOwoJCQkkdGhpcy0+cGFyc2VyLT5zZXRTb3VyY2VNYXBPcHRpb25zKFsKCQkJICAgIC8vIGFic29sdXRlIHBhdGggdG8gd3JpdGUgLm1hcCBmaWxlCgkJCSAgICAvLyAnc291cmNlTWFwV3JpdGVUbycgID0+IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sndG1wX2NhY2hlX2xvY2F0aW9uJ10sICdzb3VyY2VtYXAubWFwJyksCgkJCSAgICAnc291cmNlTWFwV3JpdGVUbycgID0+ICR0aGlzLT5zb3VyY2VfbWFwX2ZpbGUsCgoJCQkgICAgLy8gcmVsYXRpdmUgb3IgZnVsbCB1cmwgdG8gdGhlIGFib3ZlIC5tYXAgZmlsZQoJCQkgICAgLy8gJ3NvdXJjZU1hcFVSTCcgICAgICA9PiAkY29uZmlnWydwdWJsaWNfY2FjaGVfdXJsJ10gLiAnL3NvdXJjZW1hcC5tYXAnLAoJCQkgICAgJ3NvdXJjZU1hcFVSTCcgICAgICA9PiAkdGhpcy0+c291cmNlX21hcF91cmwsCgoJCQkgICAgLy8gKG9wdGlvbmFsKSByZWxhdGl2ZSBvciBmdWxsIHVybCB0byB0aGUgLmNzcyBmaWxlCgkJCSAgICAvLydzb3VyY2VNYXBGaWxlbmFtZScgPT4gJ3NvdXJjZW1hcC5tYXAnLAoKCQkJICAgIC8vIHBhcnRpYWwgcGF0aCAoc2VydmVyIHJvb3QpIHJlbW92ZWQgKG5vcm1hbGl6ZWQpIHRvIGNyZWF0ZSBhIHJlbGF0aXZlIHVybAoJCQkgICAgJ3NvdXJjZU1hcEJhc2VwYXRoJyA9PiAkY29uZmlnWydyb290X3BhdGgnXSwKCgkJCSAgICAvLyBzdWJkaXJzLCBpZiBhbnkKCQkJICAgICdzb3VyY2VNYXBSb290cGF0aCcgPT4gY21zX2pvaW5fcGF0aCgkYmFzZVBhdGgsICcnKSwKCgkJCSAgICAvLyAob3B0aW9uYWwpIHByZXBlbmRlZCB0byAnc291cmNlJyBmaWVsZCBlbnRyaWVzIGZvciByZWxvY2F0aW5nIHNvdXJjZSBmaWxlcwoJCQkgICAgJ3NvdXJjZVJvb3QnICAgICAgICA9PiAnLycsCgkJCV0pOwoJCX0KCgkJLy8gSW1wb3J0IGRpcnMKCQkkdGhpcy0+cGFyc2VyLT5zZXRJbXBvcnRQYXRocygkdGhpcy0+aW1wb3J0X2RpcnMpOwoJfQoKCS8vIE5vdGUgOiAkY3NzIGlzIHBhc3NlZCBieSByZWZlcmVuY2UgZm9yIGNtc19zdHlsZXNoZWV0LCBidXQgbmVlZHNzIHJldHVybiBmb3IgY21zX3JlbmRlcl9jc3MKCXB1YmxpYyBmdW5jdGlvbiBDb21waWxlQ1NTKCYkY3NzPScnKQoJewoJCXRyeSB7CgkJCS8vIFVzaW5nIHRoZSBzZWNvbmQgcGFyYW0gdG8gY29ycmVjdCBhIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL2xlYWZvL3Njc3NwaHAvaXNzdWVzLzY3NwoJCQkkY3NzID0gJHRoaXMtPnBhcnNlci0+Y29tcGlsZSgkY3NzLCAnLycpOwoJCX0KCQljYXRjaCAoZXhjZXB0aW9uICRlKSB7CgkJCSRlcnJvcl9tZXNzYWdlID0gJGUtPmdldE1lc3NhZ2UoKTsKCQkJZGVidWdfdG9fbG9nKCRlcnJvcl9tZXNzYWdlKTsKCQl9CgoJCXJldHVybiB0cnVlOwoJfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/logo.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/bin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/bin/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/bin/pscss</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2Jpbi9lbnYgcGhwCjw/cGhwCi8qKgogKiBTQ1NTUEhQCiAqCiAqIEBjb3B5cmlnaHQgMjAxMi0yMDE5IExlYWYgQ29yY29yYW4KICoKICogQGxpY2Vuc2UgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVCBNSVQKICoKICogQGxpbmsgaHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHAKICovCgplcnJvcl9yZXBvcnRpbmcoRV9BTEwpOwoKaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuNicpIDwgMCkgewogICAgZGllKCdSZXF1aXJlcyBQSFAgNS42IG9yIGFib3ZlJyk7Cn0KCmluY2x1ZGUgX19ESVJfXyAuICcvLi4vc2Nzcy5pbmMucGhwJzsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcUGFyc2VyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFZlcnNpb247Cgokc3R5bGUgPSBudWxsOwokbG9hZFBhdGhzID0gbnVsbDsKJHByZWNpc2lvbiA9IG51bGw7CiRkdW1wVHJlZSA9IGZhbHNlOwokaW5wdXRGaWxlID0gbnVsbDsKJGNoYW5nZURpciA9IGZhbHNlOwokZGVidWdJbmZvID0gZmFsc2U7CiRsaW5lTnVtYmVycyA9IGZhbHNlOwokaWdub3JlRXJyb3JzID0gZmFsc2U7CiRlbmNvZGluZyA9IGZhbHNlOwokc291cmNlTWFwID0gZmFsc2U7CgovKioKICogUGFyc2UgYXJndW1lbnQKICoKICogQHBhcmFtIGludGVnZXIgJGkKICogQHBhcmFtIGFycmF5ICRvcHRpb25zCiAqCiAqIEByZXR1cm4gc3RyaW5nfG51bGwKICovCmZ1bmN0aW9uIHBhcnNlQXJndW1lbnQoJiRpLCAkb3B0aW9ucykgewogICAgZ2xvYmFsICRhcmdjOwogICAgZ2xvYmFsICRhcmd2OwoKICAgIGlmICghIHByZWdfbWF0Y2goJy9eKD86JyAuIGltcGxvZGUoJ3wnLCAoYXJyYXkpICRvcHRpb25zKSAuICcpPT8oLiopLycsICRhcmd2WyRpXSwgJG1hdGNoZXMpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChzdHJsZW4oJG1hdGNoZXNbMV0pKSB7CiAgICAgICAgcmV0dXJuICRtYXRjaGVzWzFdOwogICAgfQoKICAgIGlmICgkaSArIDEgPCAkYXJnYykgewogICAgICAgICRpKys7CgogICAgICAgIHJldHVybiAkYXJndlskaV07CiAgICB9Cn0KCmZvciAoJGkgPSAxOyAkaSA8ICRhcmdjOyAkaSsrKSB7CiAgICBpZiAoJGFyZ3ZbJGldID09PSAnLWgnIHx8ICRhcmd2WyRpXSA9PT0gJy0taGVscCcpIHsKICAgICAgICAkZXhlID0gJGFyZ3ZbMF07CgogICAgICAgICRIRUxQID0gPDw8RU9UClVzYWdlOiAkZXhlIFtvcHRpb25zXSBbaW5wdXQtZmlsZV0KCk9wdGlvbnMgaW5jbHVkZToKCiAgICAtaCwgLS1oZWxwICAgICAgICAgIFNob3cgdGhpcyBtZXNzYWdlCiAgICAtLWNvbnRpbnVlLW9uLWVycm9yIENvbnRpbnVlIGNvbXBpbGF0aW9uIChhcyBiZXN0IGFzIHBvc3NpYmxlKSB3aGVuIGVycm9yIGVuY291bnRlcmVkCiAgICAtLWRlYnVnLWluZm8gICAgICAgIEFubm90YXRlIHNlbGVjdG9ycyB3aXRoIENTUyByZWZlcnJpbmcgdG8gdGhlIHNvdXJjZSBmaWxlIGFuZCBsaW5lIG51bWJlcgogICAgLWY9Zm9ybWF0ICAgICAgICAgICBTZXQgdGhlIG91dHB1dCBmb3JtYXQgKGNvbXBhY3QsIGNvbXByZXNzZWQsIGNydW5jaGVkLCBleHBhbmRlZCwgb3IgbmVzdGVkKQogICAgLWk9cGF0aCAgICAgICAgICAgICBTZXQgaW1wb3J0IHBhdGgKICAgIC0taXNvODg1OS0xICAgICAgICAgVXNlIGlzbzg4NTktMSBlbmNvZGluZyBpbnN0ZWFkIG9mIHV0Zi04IChkZWZhdWx0IHV0Zi04KQogICAgLS1saW5lLW51bWJlcnMgICAgICBBbm5vdGF0ZSBzZWxlY3RvcnMgd2l0aCBjb21tZW50cyByZWZlcnJpbmcgdG8gdGhlIHNvdXJjZSBmaWxlIGFuZCBsaW5lIG51bWJlcgogICAgLXA9cHJlY2lzaW9uICAgICAgICBTZXQgZGVjaW1hbCBudW1iZXIgcHJlY2lzaW9uIChkZWZhdWx0IDEwKQogICAgLS1zb3VyY2VtYXAgICAgICAgICBDcmVhdGUgc291cmNlIG1hcCBmaWxlCiAgICAtVCAgICAgICAgICAgICAgICAgIER1bXAgZm9ybWF0dGVkIHBhcnNlIHRyZWUKICAgIC12LCAtLXZlcnNpb24gICAgICAgUHJpbnQgdGhlIHZlcnNpb24KCkVPVDsKICAgICAgICBleGl0KCRIRUxQKTsKICAgIH0KCiAgICBpZiAoJGFyZ3ZbJGldID09PSAnLXYnIHx8ICRhcmd2WyRpXSA9PT0gJy0tdmVyc2lvbicpIHsKICAgICAgICBleGl0KFZlcnNpb246OlZFUlNJT04gLiAiXG4iKTsKICAgIH0KCiAgICBpZiAoJGFyZ3ZbJGldID09PSAnLS1jb250aW51ZS1vbi1lcnJvcicpIHsKICAgICAgICAkaWdub3JlRXJyb3JzID0gdHJ1ZTsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAoJGFyZ3ZbJGldID09PSAnLS1kZWJ1Zy1pbmZvJykgewogICAgICAgICRkZWJ1Z0luZm8gPSB0cnVlOwogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmICgkYXJndlskaV0gPT09ICctLWlzbzg4NTktMScpIHsKICAgICAgICAkZW5jb2RpbmcgPSAnaXNvODg1OS0xJzsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAoJGFyZ3ZbJGldID09PSAnLS1saW5lLW51bWJlcnMnIHx8ICRhcmd2WyRpXSA9PT0gJy0tbGluZS1jb21tZW50cycpIHsKICAgICAgICAkbGluZU51bWJlcnMgPSB0cnVlOwogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmICgkYXJndlskaV0gPT09ICctLXNvdXJjZW1hcCcpIHsKICAgICAgICAkc291cmNlTWFwID0gdHJ1ZTsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICBpZiAoJGFyZ3ZbJGldID09PSAnLVQnKSB7CiAgICAgICAgJGR1bXBUcmVlID0gdHJ1ZTsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICAkdmFsdWUgPSBwYXJzZUFyZ3VtZW50KCRpLCBhcnJheSgnLWYnLCAnLS1zdHlsZScpKTsKCiAgICBpZiAoaXNzZXQoJHZhbHVlKSkgewogICAgICAgICRzdHlsZSA9ICR2YWx1ZTsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICAkdmFsdWUgPSBwYXJzZUFyZ3VtZW50KCRpLCBhcnJheSgnLWknLCAnLS1sb2FkX3BhdGhzJykpOwoKICAgIGlmIChpc3NldCgkdmFsdWUpKSB7CiAgICAgICAgJGxvYWRQYXRocyA9ICR2YWx1ZTsKICAgICAgICBjb250aW51ZTsKICAgIH0KCiAgICAkdmFsdWUgPSBwYXJzZUFyZ3VtZW50KCRpLCBhcnJheSgnLXAnLCAnLS1wcmVjaXNpb24nKSk7CgogICAgaWYgKGlzc2V0KCR2YWx1ZSkpIHsKICAgICAgICAkcHJlY2lzaW9uID0gJHZhbHVlOwogICAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIGlmIChmaWxlX2V4aXN0cygkYXJndlskaV0pKSB7CiAgICAgICAgJGlucHV0RmlsZSA9ICRhcmd2WyRpXTsKICAgICAgICBjb250aW51ZTsKICAgIH0KfQoKCmlmICgkaW5wdXRGaWxlKSB7CiAgICAkZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRpbnB1dEZpbGUpOwoKICAgICRuZXdXb3JraW5nRGlyID0gZGlybmFtZShyZWFscGF0aCgkaW5wdXRGaWxlKSk7CiAgICAkb2xkV29ya2luZ0RpciA9IGdldGN3ZCgpOwoKICAgIGlmICgkb2xkV29ya2luZ0RpciAhPT0gJG5ld1dvcmtpbmdEaXIpIHsKICAgICAgICAkY2hhbmdlRGlyID0gY2hkaXIoJG5ld1dvcmtpbmdEaXIpOwogICAgICAgICRpbnB1dEZpbGUgPSBiYXNlbmFtZSgkaW5wdXRGaWxlKTsKICAgIH0KfSBlbHNlIHsKICAgICRkYXRhID0gJyc7CgogICAgd2hpbGUgKCEgZmVvZihTVERJTikpIHsKICAgICAgICAkZGF0YSAuPSBmcmVhZChTVERJTiwgODE5Mik7CiAgICB9Cn0KCmlmICgkZHVtcFRyZWUpIHsKICAgICRwYXJzZXIgPSBuZXcgUGFyc2VyKCRpbnB1dEZpbGUpOwoKICAgIHByaW50X3IoanNvbl9kZWNvZGUoanNvbl9lbmNvZGUoJHBhcnNlci0+cGFyc2UoJGRhdGEpKSwgdHJ1ZSkpOwoKICAgIGV4aXQoKTsKfQoKJHNjc3MgPSBuZXcgQ29tcGlsZXIoKTsKCmlmICgkZGVidWdJbmZvKSB7CiAgICAkc2Nzcy0+c2V0TGluZU51bWJlclN0eWxlKENvbXBpbGVyOjpERUJVR19JTkZPKTsKfQoKaWYgKCRsaW5lTnVtYmVycykgewogICAgJHNjc3MtPnNldExpbmVOdW1iZXJTdHlsZShDb21waWxlcjo6TElORV9DT01NRU5UUyk7Cn0KCmlmICgkaWdub3JlRXJyb3JzKSB7CiAgICAkc2Nzcy0+c2V0SWdub3JlRXJyb3JzKCRpZ25vcmVFcnJvcnMpOwp9CgppZiAoJGxvYWRQYXRocykgewogICAgJHNjc3MtPnNldEltcG9ydFBhdGhzKGV4cGxvZGUoUEFUSF9TRVBBUkFUT1IsICRsb2FkUGF0aHMpKTsKfQoKaWYgKCRwcmVjaXNpb24pIHsKICAgICRzY3NzLT5zZXROdW1iZXJQcmVjaXNpb24oJHByZWNpc2lvbik7Cn0KCmlmICgkc3R5bGUpIHsKICAgICRzY3NzLT5zZXRGb3JtYXR0ZXIoJ1Njc3NQaHBcXFNjc3NQaHBcXEZvcm1hdHRlclxcJyAuIHVjZmlyc3QoJHN0eWxlKSk7Cn0KCmlmICgkc291cmNlTWFwKSB7CiAgICAkc2Nzcy0+c2V0U291cmNlTWFwKENvbXBpbGVyOjpTT1VSQ0VfTUFQX0lOTElORSk7Cn0KCmlmICgkZW5jb2RpbmcpIHsKICAgICRzY3NzLT5zZXRFbmNvZGluZygkZW5jb2RpbmcpOwp9CgplY2hvICRzY3NzLT5jb21waWxlKCRkYXRhLCAkaW5wdXRGaWxlKTsKCmlmICgkY2hhbmdlRGlyKSB7CiAgICBjaGRpcigkb2xkV29ya2luZ0Rpcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic2Nzc3BocC9zY3NzcGhwIiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImRlc2NyaXB0aW9uIjogInNjc3NwaHAgaXMgYSBjb21waWxlciBmb3IgU0NTUyB3cml0dGVuIGluIFBIUC4iLAogICAgImtleXdvcmRzIjogWyJjc3MiLCAic3R5bGVzaGVldCIsICJzY3NzIiwgInNhc3MiLCAibGVzcyJdLAogICAgImhvbWVwYWdlIjogImh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwLyIsCiAgICAibGljZW5zZSI6IFsKICAgICAgICAiTUlUIgogICAgXSwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiQW50aG9uIFBhbmciLAogICAgICAgICAgICAiZW1haWwiOiAiYXBhbmdAc29mdHdhcmVkZXZlbG9wbWVudC5jYSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcm9ib2NvZGVyIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJDw6lkcmljIE1vcmluIiwKICAgICAgICAgICAgImVtYWlsIjogImNlZHJpY0B5dGVyaXVtLmNvbSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vQ2VyZGljIgogICAgICAgIH0KICAgIF0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogeyAiU2Nzc1BocFxcU2Nzc1BocFxcIjogInNyYy8iIH0KICAgIH0sCiAgICAiYXV0b2xvYWQtZGV2IjogewogICAgICAgICJwc3ItNCI6IHsgIlNjc3NQaHBcXFNjc3NQaHBcXFRlc3RcXCI6ICJ0ZXN0cy8iIH0KICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl41LjYuMCB8fCBeNyIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInNxdWl6bGFicy9waHBfY29kZXNuaWZmZXIiOiAifjIuNSIsCiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC42IiwKICAgICAgICAidHdicy9ib290c3RyYXAiOiAifjQuMyIsCiAgICAgICAgInp1cmIvZm91bmRhdGlvbiI6ICJ+Ni41IgogICAgfSwKICAgICJiaW4iOiBbImJpbi9wc2NzcyJdLAogICAgImFyY2hpdmUiOiB7CiAgICAgICAgImV4Y2x1ZGUiOiBbCiAgICAgICAgICAgICIvTWFrZWZpbGUiLAogICAgICAgICAgICAiLy5naXRhdHRyaWJ1dGVzIiwKICAgICAgICAgICAgIi8uZ2l0aWdub3JlIiwKICAgICAgICAgICAgIi8udHJhdmlzLnltbCIsCiAgICAgICAgICAgICIvcGhwdW5pdC54bWwuZGlzdCIsCiAgICAgICAgICAgICIvdGVzdHMiCiAgICAgICAgXQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/LICENSE.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IExlYWYgQ29yY29yYW4sIGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwCiAKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCmEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQoiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCndpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCnBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwp0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUKaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCkVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgpNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORApOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCkxJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCldJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBzY3NzcGhwCiMjIyA8aHR0cDovL3Njc3NwaHAuZ2l0aHViLmlvL3Njc3NwaHA+CgpbIVtCdWlsZF0oaHR0cHM6Ly90cmF2aXMtY2kub3JnL3Njc3NwaHAvc2Nzc3BocC5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHA6Ly90cmF2aXMtY2kub3JnL3Njc3NwaHAvc2Nzc3BocCkKWyFbTGljZW5zZV0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9zY3NzcGhwL3Njc3NwaHAvbGljZW5zZSldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9zY3NzcGhwL3Njc3NwaHApCgpgc2Nzc3BocGAgaXMgYSBjb21waWxlciBmb3IgU0NTUyB3cml0dGVuIGluIFBIUC4KCkNoZWNrb3V0IHRoZSBob21lcGFnZSwgPGh0dHA6Ly9zY3NzcGhwLmdpdGh1Yi5pby9zY3NzcGhwPiwgZm9yIGRpcmVjdGlvbnMgb24gaG93IHRvIHVzZS4KCiMjIFJ1bm5pbmcgVGVzdHMKCmBzY3NzcGhwYCB1c2VzIFtQSFBVbml0XShodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdCkgZm9yIHRlc3RpbmcuCgpSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIHJ1biBldmVyeSB0ZXN0OgoKICAgIHZlbmRvci9iaW4vcGhwdW5pdCB0ZXN0cwoKVGhlcmUgYXJlIHNldmVyYWwgdGVzdHMgaW4gdGhlIGB0ZXN0cy9gIGRpcmVjdG9yeToKCiogYEFwaVRlc3QucGhwYCBjb250YWlucyB2YXJpb3VzIHVuaXQgdGVzdHMgdGhhdCB0ZXN0IHRoZSBQSFAgaW50ZXJmYWNlLgoqIGBFeGNlcHRpb25UZXN0LnBocGAgY29udGFpbnMgdW5pdCB0ZXN0cyB0aGF0IHRlc3QgZm9yIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IHRoZSBwYXJzZXIgYW5kIGNvbXBpbGVyLgoqIGBGYWlsaW5nVGVzdC5waHBgIGNvbnRhaW5zIHRlc3RzIHJlcG9ydGVkIGluIEdpdGh1YiBpc3N1ZXMgdGhhdCBkZW1vbnN0cmF0ZSBjb21wYXRpYmlsaXR5IGJ1Z3MuCiogYElucHV0VGVzdC5waHBgIGNvbXBpbGVzIGV2ZXJ5IGAuc2Nzc2AgZmlsZSBpbiB0aGUgYHRlc3RzL2lucHV0c2AgZGlyZWN0b3J5CiAgdGhlbiBjb21wYXJlcyB0byB0aGUgcmVzcGVjdGl2ZSBgLmNzc2AgZmlsZSBpbiB0aGUgYHRlc3RzL291dHB1dHNgIGRpcmVjdG9yeS4KKiBgU2Nzc1Rlc3QucGhwYCBleHRyYWN0cyAocnVieSkgYHNjc3NgIHRlc3RzIGZyb20gdGhlIGB0ZXN0cy9zY3NzX3Rlc3QucmJgIGZpbGUuCiogYFNlcnZlclRlc3QucGhwYCBjb250YWlucyBmdW5jdGlvbmFsIHRlc3RzIGZvciB0aGUgYFNlcnZlcmAgY2xhc3MuCgpXaGVuIGNoYW5naW5nIGFueSBvZiB0aGUgdGVzdHMgaW4gYHRlc3RzL2lucHV0c2AsIHRoZSB0ZXN0cyB3aWxsIG1vc3QgbGlrZWx5CmZhaWwgYmVjYXVzZSB0aGUgb3V0cHV0IGhhcyBjaGFuZ2VkLiBPbmNlIHlvdSB2ZXJpZnkgdGhhdCB0aGUgb3V0cHV0IGlzIGNvcnJlY3QKeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHJlYnVpbGQgYWxsIHRoZSB0ZXN0czoKCiAgICBCVUlMRD0xIHZlbmRvci9iaW4vcGhwdW5pdCB0ZXN0cwoKVGhpcyB3aWxsIGNvbXBpbGUgYWxsIHRoZSB0ZXN0cywgYW5kIHNhdmUgcmVzdWx0cyBpbnRvIGB0ZXN0cy9vdXRwdXRzYC4KClRvIGVuYWJsZSB0aGUgYHNjc3NgIGNvbXBhdGliaWxpdHkgdGVzdHM6CgogICAgVEVTVF9TQ1NTX0NPTVBBVD0xIHZlbmRvci9iaW4vcGhwdW5pdCB0ZXN0cwoKIyMgQ29kaW5nIFN0YW5kYXJkCgpgc2Nzc3BocGAgc291cmNlIGNvbmZvcm1zIHRvIFtQU1IyXShodHRwOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItMi8pLgoKUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHRoZSByb290IGRpcmVjdG9yeSB0byBjaGVjayB0aGUgY29kZSBmb3IgInNuaWZmcyIuCgogICAgdmVuZG9yL2Jpbi9waHBjcyAtLXN0YW5kYXJkPVBTUjIgYmluIHNyYyB0ZXN0cwo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/scss.inc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzUuNicpIDwgMCkgewogICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ3Njc3NwaHAgcmVxdWlyZXMgUEhQIDUuNiBvciBhYm92ZScpOwp9CgppZiAoISBjbGFzc19leGlzdHMoJ1Njc3NQaHBcU2Nzc1BocFxWZXJzaW9uJywgZmFsc2UpKSB7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL0Jhc2UvUmFuZ2UucGhwJzsKICAgIGluY2x1ZGVfb25jZSBfX0RJUl9fIC4gJy9zcmMvQmxvY2sucGhwJzsKICAgIGluY2x1ZGVfb25jZSBfX0RJUl9fIC4gJy9zcmMvQ2FjaGUucGhwJzsKICAgIGluY2x1ZGVfb25jZSBfX0RJUl9fIC4gJy9zcmMvQ29sb3JzLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL0NvbXBpbGVyLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL0NvbXBpbGVyL0Vudmlyb25tZW50LnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL0V4Y2VwdGlvbi9Db21waWxlckV4Y2VwdGlvbi5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9FeGNlcHRpb24vUGFyc2VyRXhjZXB0aW9uLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL0V4Y2VwdGlvbi9SYW5nZUV4Y2VwdGlvbi5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9FeGNlcHRpb24vU2VydmVyRXhjZXB0aW9uLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL0Zvcm1hdHRlci5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9Gb3JtYXR0ZXIvQ29tcGFjdC5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9Gb3JtYXR0ZXIvQ29tcHJlc3NlZC5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9Gb3JtYXR0ZXIvQ3J1bmNoZWQucGhwJzsKICAgIGluY2x1ZGVfb25jZSBfX0RJUl9fIC4gJy9zcmMvRm9ybWF0dGVyL0RlYnVnLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL0Zvcm1hdHRlci9FeHBhbmRlZC5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9Gb3JtYXR0ZXIvTmVzdGVkLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL0Zvcm1hdHRlci9PdXRwdXRCbG9jay5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9Ob2RlLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL05vZGUvTnVtYmVyLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL1BhcnNlci5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9Tb3VyY2VNYXAvQmFzZTY0LnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL1NvdXJjZU1hcC9CYXNlNjRWTFEucGhwJzsKICAgIGluY2x1ZGVfb25jZSBfX0RJUl9fIC4gJy9zcmMvU291cmNlTWFwL1NvdXJjZU1hcEdlbmVyYXRvci5waHAnOwogICAgaW5jbHVkZV9vbmNlIF9fRElSX18gLiAnL3NyYy9UeXBlLnBocCc7CiAgICBpbmNsdWRlX29uY2UgX19ESVJfXyAuICcvc3JjL1V0aWwucGhwJzsKICAgIGluY2x1ZGVfb25jZSBfX0RJUl9fIC4gJy9zcmMvVmVyc2lvbi5waHAnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Base/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Base/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Base/Range.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDE1LTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcQmFzZTsKCi8qKgogKiBSYW5nZQogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqLwpjbGFzcyBSYW5nZQp7CiAgICBwdWJsaWMgJGZpcnN0OwogICAgcHVibGljICRsYXN0OwoKICAgIC8qKgogICAgICogSW5pdGlhbGl6ZSByYW5nZQogICAgICoKICAgICAqIEBwYXJhbSBpbnRlZ2VyfGZsb2F0ICRmaXJzdAogICAgICogQHBhcmFtIGludGVnZXJ8ZmxvYXQgJGxhc3QKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRmaXJzdCwgJGxhc3QpCiAgICB7CiAgICAgICAgJHRoaXMtPmZpcnN0ID0gJGZpcnN0OwogICAgICAgICR0aGlzLT5sYXN0ID0gJGxhc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0IGZvciBpbmNsdXNpb24gaW4gcmFuZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlcnxmbG9hdCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGluY2x1ZGVzKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJHZhbHVlID49ICR0aGlzLT5maXJzdCAmJiAkdmFsdWUgPD0gJHRoaXMtPmxhc3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Block.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7CgovKioKICogQmxvY2sKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKi8KY2xhc3MgQmxvY2sKewogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJHR5cGU7CgogICAgLyoqCiAgICAgKiBAdmFyIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sKICAgICAqLwogICAgcHVibGljICRwYXJlbnQ7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJHNvdXJjZU5hbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHVibGljICRzb3VyY2VJbmRleDsKCiAgICAvKioKICAgICAqIEB2YXIgaW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgJHNvdXJjZUxpbmU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHVibGljICRzb3VyY2VDb2x1bW47CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyAkc2VsZWN0b3JzOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGNvbW1lbnRzOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJGNoaWxkcmVuOwoKICAgIC8qKgogICAgICogQHZhciBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrCiAgICAgKi8KICAgIHB1YmxpYyAkc2VsZlBhcmVudDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Cache.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7Cgp1c2UgRXhjZXB0aW9uOwoKLyoqCiAqIFRoZSBzY3NzIGNhY2hlIG1hbmFnZXIuCiAqCiAqIEluIHNob3J0OgogKgogKiBhbGxvdyB0byBwdXQgaW4gY2FjaGUvZ2V0IGZyb20gY2FjaGUgYSBnZW5lcmljIHJlc3VsdCBmcm9tIGEga25vd24gb3BlcmF0aW9uIG9uIGEgZ2VuZXJpYyBkYXRhc2V0LAogKiB0YWtpbmcgaW4gYWNjb3VudCBvcHRpb25zIHRoYXQgYWZmZWN0cyB0aGUgcmVzdWx0CiAqCiAqIFRoZSBjYWNoZSBtYW5hZ2VyIGlzIGFnbm9zdGljIGFib3V0IGRhdGEgZm9ybWF0IGFuZCBvbmx5IHRoZSBvcGVyYXRpb24gaXMgZXhwZWN0ZWQgdG8gYmUgZGVzY3JpYmVkIGJ5IHN0cmluZwogKgogKi8KCi8qKgogKiBTQ1NTIGNhY2hlCiAqCiAqIEBhdXRob3IgQ2VkcmljIE1vcmluCiAqLwpjbGFzcyBDYWNoZQp7CiAgICBjb25zdCBDQUNIRV9WRVJTSU9OID0gMTsKCiAgICAvLyBkaXJlY3RvcnkgdXNlZCBmb3Igc3RvcmluZyBkYXRhCiAgICBwdWJsaWMgc3RhdGljICRjYWNoZURpciA9IGZhbHNlOwoKICAgIC8vIHByZWZpeCBmb3IgdGhlIHN0b3JpbmcgZGF0YQogICAgcHVibGljIHN0YXRpYyAkcHJlZml4ID0gJ3Njc3NwaHBfJzsKCiAgICAvLyBmb3JjZSBhIHJlZnJlc2ggOiAnb25jZScgZm9yIHJlZnJlc2hpbmcgdGhlIGZpcnN0IGhpdCBvbiBhIGNhY2hlIG9ubHksIHRydWUgdG8gbmV2ZXIgdXNlIHRoZSBjYWNoZSBpbiB0aGlzIGhpdAogICAgcHVibGljIHN0YXRpYyAkZm9yY2VSZWZyZXNoID0gZmFsc2U7CgogICAgLy8gc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBhZnRlciB3aGljaCBkYXRhIGNhY2hlZCB3aWxsIGJlIHNlZW4gYXMgJ2dhcmJhZ2UnIGFuZCBwb3RlbnRpYWxseSBjbGVhbmVkIHVwCiAgICBwdWJsaWMgc3RhdGljICRnY0xpZmV0aW1lID0gNjA0ODAwOwoKICAgIC8vIGFycmF5IG9mIGFscmVhZHkgcmVmcmVzaGVkIGNhY2hlIGlmICRmb3JjZVJlZnJlc2g9PT0nb25jZScKICAgIHByb3RlY3RlZCBzdGF0aWMgJHJlZnJlc2hlZCA9IFtdOwoKICAgIC8qKgogICAgICogQ29uc3RydWN0b3IKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvcHRpb25zKQogICAgewogICAgICAgIC8vIGNoZWNrICRjYWNoZURpcgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snY2FjaGVfZGlyJ10pKSB7CiAgICAgICAgICAgIHNlbGY6OiRjYWNoZURpciA9ICRvcHRpb25zWydjYWNoZV9kaXInXTsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eShzZWxmOjokY2FjaGVEaXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ2NhY2hlX2RpciBub3Qgc2V0Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3ByZWZpeCddKSkgewogICAgICAgICAgICBzZWxmOjokcHJlZml4ID0gJG9wdGlvbnNbJ3ByZWZpeCddOwogICAgICAgIH0KCiAgICAgICAgaWYgKGVtcHR5KHNlbGY6OiRwcmVmaXgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ3ByZWZpeCBub3Qgc2V0Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2ZvcmNlUmVmcmVzaCddKSkgewogICAgICAgICAgICBzZWxmOjokZm9yY2VSZWZyZXNoID0gJG9wdGlvbnNbJ2ZvcmNlX3JlZnJlc2gnXTsKICAgICAgICB9CgogICAgICAgIHNlbGY6OmNoZWNrQ2FjaGVEaXIoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY2FjaGVkIHJlc3VsdCBvZiAkb3BlcmF0aW9uIG9uICR3aGF0LAogICAgICogd2hpY2ggaXMga25vd24gYXMgZGVwZW5kYW50IGZyb20gdGhlIGNvbnRlbnQgb2YgJG9wdGlvbnMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAkb3BlcmF0aW9uICAgIHBhcnNlLCBjb21waWxlLi4uCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAkd2hhdCAgICAgICAgIGNvbnRlbnQga2V5IChlLmcuLCBmaWxlbmFtZSB0byBiZSB0cmVhdGVkKQogICAgICogQHBhcmFtIGFycmF5ICAgJG9wdGlvbnMgICAgICBhbnkgb3B0aW9uIHRoYXQgYWZmZWN0IHRoZSBvcGVyYXRpb24gcmVzdWx0IG9uIHRoZSBjb250ZW50CiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGFzdE1vZGlmaWVkIGxhc3QgbW9kaWZpZWQgdGltZXN0YW1wCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2FjaGUoJG9wZXJhdGlvbiwgJHdoYXQsICRvcHRpb25zID0gW10sICRsYXN0TW9kaWZpZWQgPSBudWxsKQogICAgewogICAgICAgICRmaWxlQ2FjaGUgPSBzZWxmOjokY2FjaGVEaXIgLiBzZWxmOjpjYWNoZU5hbWUoJG9wZXJhdGlvbiwgJHdoYXQsICRvcHRpb25zKTsKCiAgICAgICAgaWYgKCghIHNlbGY6OiRmb3JjZVJlZnJlc2ggfHwgKHNlbGY6OiRmb3JjZVJlZnJlc2ggPT09ICdvbmNlJyAmJgogICAgICAgICAgICBpc3NldChzZWxmOjokcmVmcmVzaGVkWyRmaWxlQ2FjaGVdKSkpICYmIGZpbGVfZXhpc3RzKCRmaWxlQ2FjaGUpCiAgICAgICAgKSB7CiAgICAgICAgICAgICRjYWNoZVRpbWUgPSBmaWxlbXRpbWUoJGZpbGVDYWNoZSk7CgogICAgICAgICAgICBpZiAoKGlzX251bGwoJGxhc3RNb2RpZmllZCkgfHwgJGNhY2hlVGltZSA+ICRsYXN0TW9kaWZpZWQpICYmCiAgICAgICAgICAgICAgICAkY2FjaGVUaW1lICsgc2VsZjo6JGdjTGlmZXRpbWUgPiB0aW1lKCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkYyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlQ2FjaGUpOwogICAgICAgICAgICAgICAgJGMgPSB1bnNlcmlhbGl6ZSgkYyk7CgogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRjKSAmJiBpc3NldCgkY1sndmFsdWUnXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGNbJ3ZhbHVlJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUHV0IGluIGNhY2hlIHRoZSByZXN1bHQgb2YgJG9wZXJhdGlvbiBvbiAkd2hhdCwKICAgICAqIHdoaWNoIGlzIGtub3duIGFzIGRlcGVuZGFudCBmcm9tIHRoZSBjb250ZW50IG9mICRvcHRpb25zCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkb3BlcmF0aW9uCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR3aGF0CiAgICAgKiBAcGFyYW0gbWl4ZWQgICR2YWx1ZQogICAgICogQHBhcmFtIGFycmF5ICAkb3B0aW9ucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Q2FjaGUoJG9wZXJhdGlvbiwgJHdoYXQsICR2YWx1ZSwgJG9wdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICAkZmlsZUNhY2hlID0gc2VsZjo6JGNhY2hlRGlyIC4gc2VsZjo6Y2FjaGVOYW1lKCRvcGVyYXRpb24sICR3aGF0LCAkb3B0aW9ucyk7CgogICAgICAgICRjID0gWyd2YWx1ZScgPT4gJHZhbHVlXTsKICAgICAgICAkYyA9IHNlcmlhbGl6ZSgkYyk7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGVDYWNoZSwgJGMpOwoKICAgICAgICBpZiAoc2VsZjo6JGZvcmNlUmVmcmVzaCA9PT0gJ29uY2UnKSB7CiAgICAgICAgICAgIHNlbGY6OiRyZWZyZXNoZWRbJGZpbGVDYWNoZV0gPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY2FjaGUgbmFtZSBmb3IgdGhlIGNhY2hpbmcgb2YgJG9wZXJhdGlvbiBvbiAkd2hhdCwKICAgICAqIHdoaWNoIGlzIGtub3duIGFzIGRlcGVuZGFudCBmcm9tIHRoZSBjb250ZW50IG9mICRvcHRpb25zCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkb3BlcmF0aW9uCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR3aGF0CiAgICAgKiBAcGFyYW0gYXJyYXkgICRvcHRpb25zCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2FjaGVOYW1lKCRvcGVyYXRpb24sICR3aGF0LCAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICR0ID0gWwogICAgICAgICAgJ3ZlcnNpb24nID0+IHNlbGY6OkNBQ0hFX1ZFUlNJT04sCiAgICAgICAgICAnb3BlcmF0aW9uJyA9PiAkb3BlcmF0aW9uLAogICAgICAgICAgJ3doYXQnID0+ICR3aGF0LAogICAgICAgICAgJ29wdGlvbnMnID0+ICRvcHRpb25zCiAgICAgICAgXTsKCiAgICAgICAgJHQgPSBzZWxmOjokcHJlZml4CiAgICAgICAgICAuIHNoYTEoanNvbl9lbmNvZGUoJHQpKQogICAgICAgICAgLiAiLiRvcGVyYXRpb24iCiAgICAgICAgICAuICIuc2Nzc2NhY2hlIjsKCiAgICAgICAgcmV0dXJuICR0OwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgdGhhdCB0aGUgY2FjaGUgZGlyIGV4aXN0cyBhbmQgaXMgd3JpdGVhYmxlCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tDYWNoZURpcigpCiAgICB7CiAgICAgICAgc2VsZjo6JGNhY2hlRGlyID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBzZWxmOjokY2FjaGVEaXIpOwogICAgICAgIHNlbGY6OiRjYWNoZURpciA9IHJ0cmltKHNlbGY6OiRjYWNoZURpciwgJy8nKSAuICcvJzsKCiAgICAgICAgaWYgKCEgZmlsZV9leGlzdHMoc2VsZjo6JGNhY2hlRGlyKSkgewogICAgICAgICAgICBpZiAoISBta2RpcihzZWxmOjokY2FjaGVEaXIpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdDYWNoZSBkaXJlY3RvcnkgY291bGRuXCd0IGJlIGNyZWF0ZWQ6ICcgLiBzZWxmOjokY2FjaGVEaXIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCEgaXNfZGlyKHNlbGY6OiRjYWNoZURpcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQ2FjaGUgZGlyZWN0b3J5IGRvZXNuXCd0IGV4aXN0OiAnIC4gc2VsZjo6JGNhY2hlRGlyKTsKICAgICAgICB9IGVsc2VpZiAoISBpc193cml0YWJsZShzZWxmOjokY2FjaGVEaXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0NhY2hlIGRpcmVjdG9yeSBpc25cJ3Qgd3JpdGFibGU6ICcgLiBzZWxmOjokY2FjaGVEaXIpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIERlbGV0ZSB1bnVzZWQgY2FjaGVkIGZpbGVzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2xlYW5DYWNoZSgpCiAgICB7CiAgICAgICAgc3RhdGljICRjbGVhbiA9IGZhbHNlOwoKICAgICAgICBpZiAoJGNsZWFuIHx8IGVtcHR5KHNlbGY6OiRjYWNoZURpcikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGNsZWFuID0gdHJ1ZTsKCiAgICAgICAgLy8gb25seSByZW1vdmUgZmlsZXMgd2l0aCBleHRlbnNpb25zIGNyZWF0ZWQgYnkgU0NTU1BIUCBDYWNoZQogICAgICAgIC8vIGNzcyBmaWxlcyByZW1vdmVkIGJhc2VkIG9uIHRoZSBsaXN0IGZpbGVzCiAgICAgICAgJHJlbW92ZVR5cGVzID0gWydzY3NzY2FjaGUnID0+IDFdOwoKICAgICAgICAkZmlsZXMgPSBzY2FuZGlyKHNlbGY6OiRjYWNoZURpcik7CgogICAgICAgIGlmICghICRmaWxlcykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkY2hlY2tUaW1lID0gdGltZSgpIC0gc2VsZjo6JGdjTGlmZXRpbWU7CgogICAgICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewogICAgICAgICAgICAvLyBkb24ndCBkZWxldGUgaWYgdGhlIGZpbGUgd2Fzbid0IGNyZWF0ZWQgd2l0aCBTQ1NTUEhQIENhY2hlCiAgICAgICAgICAgIGlmIChzdHJwb3MoJGZpbGUsIHNlbGY6OiRwcmVmaXgpICE9PSAwKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnLicsICRmaWxlKTsKICAgICAgICAgICAgJHR5cGUgPSBhcnJheV9wb3AoJHBhcnRzKTsKCiAgICAgICAgICAgIGlmICghIGlzc2V0KCRyZW1vdmVUeXBlc1skdHlwZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGZ1bGxQYXRoID0gc2VsZjo6JGNhY2hlRGlyIC4gJGZpbGU7CiAgICAgICAgICAgICRtdGltZSA9IGZpbGVtdGltZSgkZnVsbFBhdGgpOwoKICAgICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlIGlmIGl0J3MgYSByZWxhdGl2ZWx5IG5ldyBmaWxlCiAgICAgICAgICAgIGlmICgkbXRpbWUgPiAkY2hlY2tUaW1lKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdW5saW5rKCRmdWxsUGF0aCk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Colors.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7CgovKioKICogQ1NTIENvbG9ycwogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqLwpjbGFzcyBDb2xvcnMKewogICAgLyoqCiAgICAgKiBDU1MgQ29sb3JzCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWNvbG9yCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljICRjc3NDb2xvcnMgPSBbCiAgICAgICAgJ2FsaWNlYmx1ZScgPT4gJzI0MCwyNDgsMjU1JywKICAgICAgICAnYW50aXF1ZXdoaXRlJyA9PiAnMjUwLDIzNSwyMTUnLAogICAgICAgICdhcXVhJyA9PiAnMCwyNTUsMjU1JywKICAgICAgICAnYXF1YW1hcmluZScgPT4gJzEyNywyNTUsMjEyJywKICAgICAgICAnYXp1cmUnID0+ICcyNDAsMjU1LDI1NScsCiAgICAgICAgJ2JlaWdlJyA9PiAnMjQ1LDI0NSwyMjAnLAogICAgICAgICdiaXNxdWUnID0+ICcyNTUsMjI4LDE5NicsCiAgICAgICAgJ2JsYWNrJyA9PiAnMCwwLDAnLAogICAgICAgICdibGFuY2hlZGFsbW9uZCcgPT4gJzI1NSwyMzUsMjA1JywKICAgICAgICAnYmx1ZScgPT4gJzAsMCwyNTUnLAogICAgICAgICdibHVldmlvbGV0JyA9PiAnMTM4LDQzLDIyNicsCiAgICAgICAgJ2Jyb3duJyA9PiAnMTY1LDQyLDQyJywKICAgICAgICAnYnVybHl3b29kJyA9PiAnMjIyLDE4NCwxMzUnLAogICAgICAgICdjYWRldGJsdWUnID0+ICc5NSwxNTgsMTYwJywKICAgICAgICAnY2hhcnRyZXVzZScgPT4gJzEyNywyNTUsMCcsCiAgICAgICAgJ2Nob2NvbGF0ZScgPT4gJzIxMCwxMDUsMzAnLAogICAgICAgICdjb3JhbCcgPT4gJzI1NSwxMjcsODAnLAogICAgICAgICdjb3JuZmxvd2VyYmx1ZScgPT4gJzEwMCwxNDksMjM3JywKICAgICAgICAnY29ybnNpbGsnID0+ICcyNTUsMjQ4LDIyMCcsCiAgICAgICAgJ2NyaW1zb24nID0+ICcyMjAsMjAsNjAnLAogICAgICAgICdjeWFuJyA9PiAnMCwyNTUsMjU1JywKICAgICAgICAnZGFya2JsdWUnID0+ICcwLDAsMTM5JywKICAgICAgICAnZGFya2N5YW4nID0+ICcwLDEzOSwxMzknLAogICAgICAgICdkYXJrZ29sZGVucm9kJyA9PiAnMTg0LDEzNCwxMScsCiAgICAgICAgJ2RhcmtncmF5JyA9PiAnMTY5LDE2OSwxNjknLAogICAgICAgICdkYXJrZ3JlZW4nID0+ICcwLDEwMCwwJywKICAgICAgICAnZGFya2dyZXknID0+ICcxNjksMTY5LDE2OScsCiAgICAgICAgJ2RhcmtraGFraScgPT4gJzE4OSwxODMsMTA3JywKICAgICAgICAnZGFya21hZ2VudGEnID0+ICcxMzksMCwxMzknLAogICAgICAgICdkYXJrb2xpdmVncmVlbicgPT4gJzg1LDEwNyw0NycsCiAgICAgICAgJ2RhcmtvcmFuZ2UnID0+ICcyNTUsMTQwLDAnLAogICAgICAgICdkYXJrb3JjaGlkJyA9PiAnMTUzLDUwLDIwNCcsCiAgICAgICAgJ2RhcmtyZWQnID0+ICcxMzksMCwwJywKICAgICAgICAnZGFya3NhbG1vbicgPT4gJzIzMywxNTAsMTIyJywKICAgICAgICAnZGFya3NlYWdyZWVuJyA9PiAnMTQzLDE4OCwxNDMnLAogICAgICAgICdkYXJrc2xhdGVibHVlJyA9PiAnNzIsNjEsMTM5JywKICAgICAgICAnZGFya3NsYXRlZ3JheScgPT4gJzQ3LDc5LDc5JywKICAgICAgICAnZGFya3NsYXRlZ3JleScgPT4gJzQ3LDc5LDc5JywKICAgICAgICAnZGFya3R1cnF1b2lzZScgPT4gJzAsMjA2LDIwOScsCiAgICAgICAgJ2Rhcmt2aW9sZXQnID0+ICcxNDgsMCwyMTEnLAogICAgICAgICdkZWVwcGluaycgPT4gJzI1NSwyMCwxNDcnLAogICAgICAgICdkZWVwc2t5Ymx1ZScgPT4gJzAsMTkxLDI1NScsCiAgICAgICAgJ2RpbWdyYXknID0+ICcxMDUsMTA1LDEwNScsCiAgICAgICAgJ2RpbWdyZXknID0+ICcxMDUsMTA1LDEwNScsCiAgICAgICAgJ2RvZGdlcmJsdWUnID0+ICczMCwxNDQsMjU1JywKICAgICAgICAnZmlyZWJyaWNrJyA9PiAnMTc4LDM0LDM0JywKICAgICAgICAnZmxvcmFsd2hpdGUnID0+ICcyNTUsMjUwLDI0MCcsCiAgICAgICAgJ2ZvcmVzdGdyZWVuJyA9PiAnMzQsMTM5LDM0JywKICAgICAgICAnZnVjaHNpYScgPT4gJzI1NSwwLDI1NScsCiAgICAgICAgJ2dhaW5zYm9ybycgPT4gJzIyMCwyMjAsMjIwJywKICAgICAgICAnZ2hvc3R3aGl0ZScgPT4gJzI0OCwyNDgsMjU1JywKICAgICAgICAnZ29sZCcgPT4gJzI1NSwyMTUsMCcsCiAgICAgICAgJ2dvbGRlbnJvZCcgPT4gJzIxOCwxNjUsMzInLAogICAgICAgICdncmF5JyA9PiAnMTI4LDEyOCwxMjgnLAogICAgICAgICdncmVlbicgPT4gJzAsMTI4LDAnLAogICAgICAgICdncmVlbnllbGxvdycgPT4gJzE3MywyNTUsNDcnLAogICAgICAgICdncmV5JyA9PiAnMTI4LDEyOCwxMjgnLAogICAgICAgICdob25leWRldycgPT4gJzI0MCwyNTUsMjQwJywKICAgICAgICAnaG90cGluaycgPT4gJzI1NSwxMDUsMTgwJywKICAgICAgICAnaW5kaWFucmVkJyA9PiAnMjA1LDkyLDkyJywKICAgICAgICAnaW5kaWdvJyA9PiAnNzUsMCwxMzAnLAogICAgICAgICdpdm9yeScgPT4gJzI1NSwyNTUsMjQwJywKICAgICAgICAna2hha2knID0+ICcyNDAsMjMwLDE0MCcsCiAgICAgICAgJ2xhdmVuZGVyJyA9PiAnMjMwLDIzMCwyNTAnLAogICAgICAgICdsYXZlbmRlcmJsdXNoJyA9PiAnMjU1LDI0MCwyNDUnLAogICAgICAgICdsYXduZ3JlZW4nID0+ICcxMjQsMjUyLDAnLAogICAgICAgICdsZW1vbmNoaWZmb24nID0+ICcyNTUsMjUwLDIwNScsCiAgICAgICAgJ2xpZ2h0Ymx1ZScgPT4gJzE3MywyMTYsMjMwJywKICAgICAgICAnbGlnaHRjb3JhbCcgPT4gJzI0MCwxMjgsMTI4JywKICAgICAgICAnbGlnaHRjeWFuJyA9PiAnMjI0LDI1NSwyNTUnLAogICAgICAgICdsaWdodGdvbGRlbnJvZHllbGxvdycgPT4gJzI1MCwyNTAsMjEwJywKICAgICAgICAnbGlnaHRncmF5JyA9PiAnMjExLDIxMSwyMTEnLAogICAgICAgICdsaWdodGdyZWVuJyA9PiAnMTQ0LDIzOCwxNDQnLAogICAgICAgICdsaWdodGdyZXknID0+ICcyMTEsMjExLDIxMScsCiAgICAgICAgJ2xpZ2h0cGluaycgPT4gJzI1NSwxODIsMTkzJywKICAgICAgICAnbGlnaHRzYWxtb24nID0+ICcyNTUsMTYwLDEyMicsCiAgICAgICAgJ2xpZ2h0c2VhZ3JlZW4nID0+ICczMiwxNzgsMTcwJywKICAgICAgICAnbGlnaHRza3libHVlJyA9PiAnMTM1LDIwNiwyNTAnLAogICAgICAgICdsaWdodHNsYXRlZ3JheScgPT4gJzExOSwxMzYsMTUzJywKICAgICAgICAnbGlnaHRzbGF0ZWdyZXknID0+ICcxMTksMTM2LDE1MycsCiAgICAgICAgJ2xpZ2h0c3RlZWxibHVlJyA9PiAnMTc2LDE5NiwyMjInLAogICAgICAgICdsaWdodHllbGxvdycgPT4gJzI1NSwyNTUsMjI0JywKICAgICAgICAnbGltZScgPT4gJzAsMjU1LDAnLAogICAgICAgICdsaW1lZ3JlZW4nID0+ICc1MCwyMDUsNTAnLAogICAgICAgICdsaW5lbicgPT4gJzI1MCwyNDAsMjMwJywKICAgICAgICAnbWFnZW50YScgPT4gJzI1NSwwLDI1NScsCiAgICAgICAgJ21hcm9vbicgPT4gJzEyOCwwLDAnLAogICAgICAgICdtZWRpdW1hcXVhbWFyaW5lJyA9PiAnMTAyLDIwNSwxNzAnLAogICAgICAgICdtZWRpdW1ibHVlJyA9PiAnMCwwLDIwNScsCiAgICAgICAgJ21lZGl1bW9yY2hpZCcgPT4gJzE4Niw4NSwyMTEnLAogICAgICAgICdtZWRpdW1wdXJwbGUnID0+ICcxNDcsMTEyLDIxOScsCiAgICAgICAgJ21lZGl1bXNlYWdyZWVuJyA9PiAnNjAsMTc5LDExMycsCiAgICAgICAgJ21lZGl1bXNsYXRlYmx1ZScgPT4gJzEyMywxMDQsMjM4JywKICAgICAgICAnbWVkaXVtc3ByaW5nZ3JlZW4nID0+ICcwLDI1MCwxNTQnLAogICAgICAgICdtZWRpdW10dXJxdW9pc2UnID0+ICc3MiwyMDksMjA0JywKICAgICAgICAnbWVkaXVtdmlvbGV0cmVkJyA9PiAnMTk5LDIxLDEzMycsCiAgICAgICAgJ21pZG5pZ2h0Ymx1ZScgPT4gJzI1LDI1LDExMicsCiAgICAgICAgJ21pbnRjcmVhbScgPT4gJzI0NSwyNTUsMjUwJywKICAgICAgICAnbWlzdHlyb3NlJyA9PiAnMjU1LDIyOCwyMjUnLAogICAgICAgICdtb2NjYXNpbicgPT4gJzI1NSwyMjgsMTgxJywKICAgICAgICAnbmF2YWpvd2hpdGUnID0+ICcyNTUsMjIyLDE3MycsCiAgICAgICAgJ25hdnknID0+ICcwLDAsMTI4JywKICAgICAgICAnb2xkbGFjZScgPT4gJzI1MywyNDUsMjMwJywKICAgICAgICAnb2xpdmUnID0+ICcxMjgsMTI4LDAnLAogICAgICAgICdvbGl2ZWRyYWInID0+ICcxMDcsMTQyLDM1JywKICAgICAgICAnb3JhbmdlJyA9PiAnMjU1LDE2NSwwJywKICAgICAgICAnb3JhbmdlcmVkJyA9PiAnMjU1LDY5LDAnLAogICAgICAgICdvcmNoaWQnID0+ICcyMTgsMTEyLDIxNCcsCiAgICAgICAgJ3BhbGVnb2xkZW5yb2QnID0+ICcyMzgsMjMyLDE3MCcsCiAgICAgICAgJ3BhbGVncmVlbicgPT4gJzE1MiwyNTEsMTUyJywKICAgICAgICAncGFsZXR1cnF1b2lzZScgPT4gJzE3NSwyMzgsMjM4JywKICAgICAgICAncGFsZXZpb2xldHJlZCcgPT4gJzIxOSwxMTIsMTQ3JywKICAgICAgICAncGFwYXlhd2hpcCcgPT4gJzI1NSwyMzksMjEzJywKICAgICAgICAncGVhY2hwdWZmJyA9PiAnMjU1LDIxOCwxODUnLAogICAgICAgICdwZXJ1JyA9PiAnMjA1LDEzMyw2MycsCiAgICAgICAgJ3BpbmsnID0+ICcyNTUsMTkyLDIwMycsCiAgICAgICAgJ3BsdW0nID0+ICcyMjEsMTYwLDIyMScsCiAgICAgICAgJ3Bvd2RlcmJsdWUnID0+ICcxNzYsMjI0LDIzMCcsCiAgICAgICAgJ3B1cnBsZScgPT4gJzEyOCwwLDEyOCcsCiAgICAgICAgJ3JlYmVjY2FwdXJwbGUnID0+ICcxMDIsNTEsMTUzJywKICAgICAgICAncmVkJyA9PiAnMjU1LDAsMCcsCiAgICAgICAgJ3Jvc3licm93bicgPT4gJzE4OCwxNDMsMTQzJywKICAgICAgICAncm95YWxibHVlJyA9PiAnNjUsMTA1LDIyNScsCiAgICAgICAgJ3NhZGRsZWJyb3duJyA9PiAnMTM5LDY5LDE5JywKICAgICAgICAnc2FsbW9uJyA9PiAnMjUwLDEyOCwxMTQnLAogICAgICAgICdzYW5keWJyb3duJyA9PiAnMjQ0LDE2NCw5NicsCiAgICAgICAgJ3NlYWdyZWVuJyA9PiAnNDYsMTM5LDg3JywKICAgICAgICAnc2Vhc2hlbGwnID0+ICcyNTUsMjQ1LDIzOCcsCiAgICAgICAgJ3NpZW5uYScgPT4gJzE2MCw4Miw0NScsCiAgICAgICAgJ3NpbHZlcicgPT4gJzE5MiwxOTIsMTkyJywKICAgICAgICAnc2t5Ymx1ZScgPT4gJzEzNSwyMDYsMjM1JywKICAgICAgICAnc2xhdGVibHVlJyA9PiAnMTA2LDkwLDIwNScsCiAgICAgICAgJ3NsYXRlZ3JheScgPT4gJzExMiwxMjgsMTQ0JywKICAgICAgICAnc2xhdGVncmV5JyA9PiAnMTEyLDEyOCwxNDQnLAogICAgICAgICdzbm93JyA9PiAnMjU1LDI1MCwyNTAnLAogICAgICAgICdzcHJpbmdncmVlbicgPT4gJzAsMjU1LDEyNycsCiAgICAgICAgJ3N0ZWVsYmx1ZScgPT4gJzcwLDEzMCwxODAnLAogICAgICAgICd0YW4nID0+ICcyMTAsMTgwLDE0MCcsCiAgICAgICAgJ3RlYWwnID0+ICcwLDEyOCwxMjgnLAogICAgICAgICd0aGlzdGxlJyA9PiAnMjE2LDE5MSwyMTYnLAogICAgICAgICd0b21hdG8nID0+ICcyNTUsOTksNzEnLAogICAgICAgICd0cmFuc3BhcmVudCcgPT4gJzAsMCwwLDAnLAogICAgICAgICd0dXJxdW9pc2UnID0+ICc2NCwyMjQsMjA4JywKICAgICAgICAndmlvbGV0JyA9PiAnMjM4LDEzMCwyMzgnLAogICAgICAgICd3aGVhdCcgPT4gJzI0NSwyMjIsMTc5JywKICAgICAgICAnd2hpdGUnID0+ICcyNTUsMjU1LDI1NScsCiAgICAgICAgJ3doaXRlc21va2UnID0+ICcyNDUsMjQ1LDI0NScsCiAgICAgICAgJ3llbGxvdycgPT4gJzI1NSwyNTUsMCcsCiAgICAgICAgJ3llbGxvd2dyZWVuJyA9PiAnMTU0LDIwNSw1MCcsCiAgICBdOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Compiler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEJhc2VcUmFuZ2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQ2FjaGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcQ29sb3JzOwp1c2UgU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyXEVudmlyb25tZW50Owp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxDb21waWxlckV4Y2VwdGlvbjsKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2s7CnVzZSBTY3NzUGhwXFNjc3NQaHBcTm9kZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcU291cmNlTWFwR2VuZXJhdG9yOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFR5cGU7CnVzZSBTY3NzUGhwXFNjc3NQaHBcUGFyc2VyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFV0aWw7CgovKioKICogVGhlIHNjc3MgY29tcGlsZXIgYW5kIHBhcnNlci4KICoKICogQ29udmVydGluZyBTQ1NTIHRvIENTUyBpcyBhIHRocmVlIHN0YWdlIHByb2Nlc3MuIFRoZSBpbmNvbWluZyBmaWxlIGlzIHBhcnNlZAogKiBieSBgUGFyc2VyYCBpbnRvIGEgc3ludGF4IHRyZWUsIHRoZW4gaXQgaXMgY29tcGlsZWQgaW50byBhbm90aGVyIHRyZWUKICogcmVwcmVzZW50aW5nIHRoZSBDU1Mgc3RydWN0dXJlIGJ5IGBDb21waWxlcmAuIFRoZSBDU1MgdHJlZSBpcyBmZWQgaW50byBhCiAqIGZvcm1hdHRlciwgbGlrZSBgRm9ybWF0dGVyYCB3aGljaCB0aGVuIG91dHB1dHMgQ1NTIGFzIGEgc3RyaW5nLgogKgogKiBEdXJpbmcgdGhlIGZpcnN0IGNvbXBpbGUsIGFsbCB2YWx1ZXMgYXJlICpyZWR1Y2VkKiwgd2hpY2ggbWVhbnMgdGhhdCB0aGVpcgogKiB0eXBlcyBhcmUgYnJvdWdodCB0byB0aGUgbG93ZXN0IGZvcm0gYmVmb3JlIGJlaW5nIGR1bXAgYXMgc3RyaW5ncy4gVGhpcwogKiBoYW5kbGVzIG1hdGggZXF1YXRpb25zLCB2YXJpYWJsZSBkZXJlZmVyZW5jZXMsIGFuZCB0aGUgbGlrZS4KICoKICogVGhlIGBjb21waWxlYCBmdW5jdGlvbiBvZiBgQ29tcGlsZXJgIGlzIHRoZSBlbnRyeSBwb2ludC4KICoKICogSW4gc3VtbWFyeToKICoKICogVGhlIGBDb21waWxlcmAgY2xhc3MgY3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgcGFyc2VyLCBmZWVkcyBpdCBTQ1NTIGNvZGUsCiAqIHRoZW4gdHJhbnNmb3JtcyB0aGUgcmVzdWx0aW5nIHRyZWUgdG8gYSBDU1MgdHJlZS4gVGhpcyBjbGFzcyBhbHNvIGhvbGRzIHRoZQogKiBldmFsdWF0aW9uIGNvbnRleHQsIHN1Y2ggYXMgYWxsIGF2YWlsYWJsZSBtaXhpbnMgYW5kIHZhcmlhYmxlcyBhdCBhbnkgZ2l2ZW4KICogdGltZS4KICoKICogVGhlIGBQYXJzZXJgIGNsYXNzIGlzIG9ubHkgY29uY2VybmVkIHdpdGggcGFyc2luZyBpdHMgaW5wdXQuCiAqCiAqIFRoZSBgRm9ybWF0dGVyYCB0YWtlcyBhIENTUyB0cmVlLCBhbmQgZHVtcHMgaXQgdG8gYSBmb3JtYXR0ZWQgc3RyaW5nLAogKiBoYW5kbGluZyB0aGluZ3MgbGlrZSBpbmRlbnRhdGlvbi4KICovCgovKioKICogU0NTUyBjb21waWxlcgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqLwpjbGFzcyBDb21waWxlcgp7CiAgICBjb25zdCBMSU5FX0NPTU1FTlRTID0gMTsKICAgIGNvbnN0IERFQlVHX0lORk8gICAgPSAyOwoKICAgIGNvbnN0IFdJVEhfUlVMRSAgICAgPSAxOwogICAgY29uc3QgV0lUSF9NRURJQSAgICA9IDI7CiAgICBjb25zdCBXSVRIX1NVUFBPUlRTID0gNDsKICAgIGNvbnN0IFdJVEhfQUxMICAgICAgPSA3OwoKICAgIGNvbnN0IFNPVVJDRV9NQVBfTk9ORSAgID0gMDsKICAgIGNvbnN0IFNPVVJDRV9NQVBfSU5MSU5FID0gMTsKICAgIGNvbnN0IFNPVVJDRV9NQVBfRklMRSAgID0gMjsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgc3RhdGljIHByb3RlY3RlZCAkb3BlcmF0b3JOYW1lcyA9IFsKICAgICAgICAnKycgICA9PiAnYWRkJywKICAgICAgICAnLScgICA9PiAnc3ViJywKICAgICAgICAnKicgICA9PiAnbXVsJywKICAgICAgICAnLycgICA9PiAnZGl2JywKICAgICAgICAnJScgICA9PiAnbW9kJywKCiAgICAgICAgJz09JyAgPT4gJ2VxJywKICAgICAgICAnIT0nICA9PiAnbmVxJywKICAgICAgICAnPCcgICA9PiAnbHQnLAogICAgICAgICc+JyAgID0+ICdndCcsCgogICAgICAgICc8PScgID0+ICdsdGUnLAogICAgICAgICc+PScgID0+ICdndGUnLAogICAgICAgICc8PT4nID0+ICdjbXAnLAogICAgXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgc3RhdGljIHByb3RlY3RlZCAkbmFtZXNwYWNlcyA9IFsKICAgICAgICAnc3BlY2lhbCcgID0+ICclJywKICAgICAgICAnbWl4aW4nICAgID0+ICdAJywKICAgICAgICAnZnVuY3Rpb24nID0+ICdeJywKICAgIF07CgogICAgc3RhdGljIHB1YmxpYyAkdHJ1ZSAgICAgICAgID0gW1R5cGU6OlRfS0VZV09SRCwgJ3RydWUnXTsKICAgIHN0YXRpYyBwdWJsaWMgJGZhbHNlICAgICAgICA9IFtUeXBlOjpUX0tFWVdPUkQsICdmYWxzZSddOwogICAgc3RhdGljIHB1YmxpYyAkbnVsbCAgICAgICAgID0gW1R5cGU6OlRfTlVMTF07CiAgICBzdGF0aWMgcHVibGljICRudWxsU3RyaW5nICAgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbXV07CiAgICBzdGF0aWMgcHVibGljICRkZWZhdWx0VmFsdWUgPSBbVHlwZTo6VF9LRVlXT1JELCAnJ107CiAgICBzdGF0aWMgcHVibGljICRzZWxmU2VsZWN0b3IgPSBbVHlwZTo6VF9TRUxGXTsKICAgIHN0YXRpYyBwdWJsaWMgJGVtcHR5TGlzdCAgICA9IFtUeXBlOjpUX0xJU1QsICcnLCBbXV07CiAgICBzdGF0aWMgcHVibGljICRlbXB0eU1hcCAgICAgPSBbVHlwZTo6VF9NQVAsIFtdLCBbXV07CiAgICBzdGF0aWMgcHVibGljICRlbXB0eVN0cmluZyAgPSBbVHlwZTo6VF9TVFJJTkcsICciJywgW11dOwogICAgc3RhdGljIHB1YmxpYyAkd2l0aCAgICAgICAgID0gW1R5cGU6OlRfS0VZV09SRCwgJ3dpdGgnXTsKICAgIHN0YXRpYyBwdWJsaWMgJHdpdGhvdXQgICAgICA9IFtUeXBlOjpUX0tFWVdPUkQsICd3aXRob3V0J107CgogICAgcHJvdGVjdGVkICRpbXBvcnRQYXRocyA9IFsnJ107CiAgICBwcm90ZWN0ZWQgJGltcG9ydENhY2hlID0gW107CiAgICBwcm90ZWN0ZWQgJGltcG9ydGVkRmlsZXMgPSBbXTsKICAgIHByb3RlY3RlZCAkdXNlckZ1bmN0aW9ucyA9IFtdOwogICAgcHJvdGVjdGVkICRyZWdpc3RlcmVkVmFycyA9IFtdOwogICAgcHJvdGVjdGVkICRyZWdpc3RlcmVkRmVhdHVyZXMgPSBbCiAgICAgICAgJ2V4dGVuZC1zZWxlY3Rvci1wc2V1ZG9jbGFzcycgPT4gZmFsc2UsCiAgICAgICAgJ2F0LWVycm9yJyAgICAgICAgICAgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICAndW5pdHMtbGV2ZWwtMycgICAgICAgICAgICAgICA9PiBmYWxzZSwKICAgICAgICAnZ2xvYmFsLXZhcmlhYmxlLXNoYWRvd2luZycgICA9PiBmYWxzZSwKICAgIF07CgogICAgcHJvdGVjdGVkICRlbmNvZGluZyA9IG51bGw7CiAgICBwcm90ZWN0ZWQgJGxpbmVOdW1iZXJTdHlsZSA9IG51bGw7CgogICAgcHJvdGVjdGVkICRzb3VyY2VNYXAgPSBzZWxmOjpTT1VSQ0VfTUFQX05PTkU7CiAgICBwcm90ZWN0ZWQgJHNvdXJjZU1hcE9wdGlvbnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyCiAgICAgKi8KICAgIHByb3RlY3RlZCAkZm9ybWF0dGVyID0gJ1Njc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcTmVzdGVkJzsKCiAgICBwcm90ZWN0ZWQgJHJvb3RFbnY7CiAgICBwcm90ZWN0ZWQgJHJvb3RCbG9jazsKCiAgICAvKioKICAgICAqIEB2YXIgXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgJGVudjsKICAgIHByb3RlY3RlZCAkc2NvcGU7CiAgICBwcm90ZWN0ZWQgJHN0b3JlRW52OwogICAgcHJvdGVjdGVkICRjaGFyc2V0U2VlbjsKICAgIHByb3RlY3RlZCAkc291cmNlTmFtZXM7CgogICAgcHJvdGVjdGVkICRjYWNoZTsKCiAgICBwcm90ZWN0ZWQgJGluZGVudExldmVsOwogICAgcHJvdGVjdGVkICRleHRlbmRzOwogICAgcHJvdGVjdGVkICRleHRlbmRzTWFwOwogICAgcHJvdGVjdGVkICRwYXJzZWRGaWxlczsKICAgIHByb3RlY3RlZCAkcGFyc2VyOwogICAgcHJvdGVjdGVkICRzb3VyY2VJbmRleDsKICAgIHByb3RlY3RlZCAkc291cmNlTGluZTsKICAgIHByb3RlY3RlZCAkc291cmNlQ29sdW1uOwogICAgcHJvdGVjdGVkICRzdGRlcnI7CiAgICBwcm90ZWN0ZWQgJHNob3VsZEV2YWx1YXRlOwogICAgcHJvdGVjdGVkICRpZ25vcmVFcnJvcnM7CgogICAgcHJvdGVjdGVkICRjYWxsU3RhY2sgPSBbXTsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkY2FjaGVPcHRpb25zID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+cGFyc2VkRmlsZXMgPSBbXTsKICAgICAgICAkdGhpcy0+c291cmNlTmFtZXMgPSBbXTsKCiAgICAgICAgaWYgKCRjYWNoZU9wdGlvbnMpIHsKICAgICAgICAgICAgJHRoaXMtPmNhY2hlID0gbmV3IENhY2hlKCRjYWNoZU9wdGlvbnMpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29tcGlsZU9wdGlvbnMoKQogICAgewogICAgICAgICRvcHRpb25zID0gWwogICAgICAgICAgICAnaW1wb3J0UGF0aHMnICAgICAgICA9PiAkdGhpcy0+aW1wb3J0UGF0aHMsCiAgICAgICAgICAgICdyZWdpc3RlcmVkVmFycycgICAgID0+ICR0aGlzLT5yZWdpc3RlcmVkVmFycywKICAgICAgICAgICAgJ3JlZ2lzdGVyZWRGZWF0dXJlcycgPT4gJHRoaXMtPnJlZ2lzdGVyZWRGZWF0dXJlcywKICAgICAgICAgICAgJ2VuY29kaW5nJyAgICAgICAgICAgPT4gJHRoaXMtPmVuY29kaW5nLAogICAgICAgICAgICAnc291cmNlTWFwJyAgICAgICAgICA9PiBzZXJpYWxpemUoJHRoaXMtPnNvdXJjZU1hcCksCiAgICAgICAgICAgICdzb3VyY2VNYXBPcHRpb25zJyAgID0+ICR0aGlzLT5zb3VyY2VNYXBPcHRpb25zLAogICAgICAgICAgICAnZm9ybWF0dGVyJyAgICAgICAgICA9PiAkdGhpcy0+Zm9ybWF0dGVyLAogICAgICAgIF07CgogICAgICAgIHJldHVybiAkb3B0aW9uczsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgc2NzcwogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb2RlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGUoJGNvZGUsICRwYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNhY2hlKSB7CiAgICAgICAgICAgICRjYWNoZUtleSAgICAgICA9ICgkcGF0aCA/ICRwYXRoIDogIihzdGRpbikiKSAuICI6IiAuIG1kNSgkY29kZSk7CiAgICAgICAgICAgICRjb21waWxlT3B0aW9ucyA9ICR0aGlzLT5nZXRDb21waWxlT3B0aW9ucygpOwogICAgICAgICAgICAkY2FjaGUgICAgICAgICAgPSAkdGhpcy0+Y2FjaGUtPmdldENhY2hlKCJjb21waWxlIiwgJGNhY2hlS2V5LCAkY29tcGlsZU9wdGlvbnMpOwoKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRjYWNoZSkgJiYgaXNzZXQoJGNhY2hlWydkZXBlbmRlbmNpZXMnXSkgJiYgaXNzZXQoJGNhY2hlWydvdXQnXSkpIHsKICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIGFueSBkZXBlbmRlbmN5IGZpbGUgY2hhbmdlZCBiZWZvcmUgYWNjZXB0aW5nIHRoZSBjYWNoZQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNhY2hlWydkZXBlbmRlbmNpZXMnXSBhcyAkZmlsZSA9PiAkbXRpbWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISBmaWxlX2V4aXN0cygkZmlsZSkgfHwgZmlsZW10aW1lKCRmaWxlKSAhPT0gJG10aW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRjYWNoZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGNhY2hlKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY2FjaGVbJ291dCddOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKCiAgICAgICAgJHRoaXMtPmluZGVudExldmVsICAgID0gLTE7CiAgICAgICAgJHRoaXMtPmV4dGVuZHMgICAgICAgID0gW107CiAgICAgICAgJHRoaXMtPmV4dGVuZHNNYXAgICAgID0gW107CiAgICAgICAgJHRoaXMtPnNvdXJjZUluZGV4ICAgID0gbnVsbDsKICAgICAgICAkdGhpcy0+c291cmNlTGluZSAgICAgPSBudWxsOwogICAgICAgICR0aGlzLT5zb3VyY2VDb2x1bW4gICA9IG51bGw7CiAgICAgICAgJHRoaXMtPmVudiAgICAgICAgICAgID0gbnVsbDsKICAgICAgICAkdGhpcy0+c2NvcGUgICAgICAgICAgPSBudWxsOwogICAgICAgICR0aGlzLT5zdG9yZUVudiAgICAgICA9IG51bGw7CiAgICAgICAgJHRoaXMtPmNoYXJzZXRTZWVuICAgID0gbnVsbDsKICAgICAgICAkdGhpcy0+c2hvdWxkRXZhbHVhdGUgPSBudWxsOwogICAgICAgICR0aGlzLT5zdGRlcnIgICAgICAgICA9IGZvcGVuKCdwaHA6Ly9zdGRlcnInLCAndycpOwoKICAgICAgICAkdGhpcy0+cGFyc2VyID0gJHRoaXMtPnBhcnNlckZhY3RvcnkoJHBhdGgpOwogICAgICAgICR0cmVlICAgICAgICAgPSAkdGhpcy0+cGFyc2VyLT5wYXJzZSgkY29kZSk7CiAgICAgICAgJHRoaXMtPnBhcnNlciA9IG51bGw7CgogICAgICAgICR0aGlzLT5mb3JtYXR0ZXIgPSBuZXcgJHRoaXMtPmZvcm1hdHRlcigpOwogICAgICAgICR0aGlzLT5yb290QmxvY2sgPSBudWxsOwogICAgICAgICR0aGlzLT5yb290RW52ICAgPSAkdGhpcy0+cHVzaEVudigkdHJlZSk7CgogICAgICAgICR0aGlzLT5pbmplY3RWYXJpYWJsZXMoJHRoaXMtPnJlZ2lzdGVyZWRWYXJzKTsKICAgICAgICAkdGhpcy0+Y29tcGlsZVJvb3QoJHRyZWUpOwogICAgICAgICR0aGlzLT5wb3BFbnYoKTsKCiAgICAgICAgJHNvdXJjZU1hcEdlbmVyYXRvciA9IG51bGw7CgogICAgICAgIGlmICgkdGhpcy0+c291cmNlTWFwKSB7CiAgICAgICAgICAgIGlmIChpc19vYmplY3QoJHRoaXMtPnNvdXJjZU1hcCkgJiYgJHRoaXMtPnNvdXJjZU1hcCBpbnN0YW5jZW9mIFNvdXJjZU1hcEdlbmVyYXRvcikgewogICAgICAgICAgICAgICAgJHNvdXJjZU1hcEdlbmVyYXRvciA9ICR0aGlzLT5zb3VyY2VNYXA7CiAgICAgICAgICAgICAgICAkdGhpcy0+c291cmNlTWFwID0gc2VsZjo6U09VUkNFX01BUF9GSUxFOwogICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPnNvdXJjZU1hcCAhPT0gc2VsZjo6U09VUkNFX01BUF9OT05FKSB7CiAgICAgICAgICAgICAgICAkc291cmNlTWFwR2VuZXJhdG9yID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcigkdGhpcy0+c291cmNlTWFwT3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRvdXQgPSAkdGhpcy0+Zm9ybWF0dGVyLT5mb3JtYXQoJHRoaXMtPnNjb3BlLCAkc291cmNlTWFwR2VuZXJhdG9yKTsKCiAgICAgICAgaWYgKCEgZW1wdHkoJG91dCkgJiYgJHRoaXMtPnNvdXJjZU1hcCAmJiAkdGhpcy0+c291cmNlTWFwICE9PSBzZWxmOjpTT1VSQ0VfTUFQX05PTkUpIHsKICAgICAgICAgICAgJHNvdXJjZU1hcCAgICA9ICRzb3VyY2VNYXBHZW5lcmF0b3ItPmdlbmVyYXRlSnNvbigpOwogICAgICAgICAgICAkc291cmNlTWFwVXJsID0gbnVsbDsKCiAgICAgICAgICAgIHN3aXRjaCAoJHRoaXMtPnNvdXJjZU1hcCkgewogICAgICAgICAgICAgICAgY2FzZSBzZWxmOjpTT1VSQ0VfTUFQX0lOTElORToKICAgICAgICAgICAgICAgICAgICAkc291cmNlTWFwVXJsID0gc3ByaW50ZignZGF0YTphcHBsaWNhdGlvbi9qc29uLCVzJywgVXRpbDo6ZW5jb2RlVVJJQ29tcG9uZW50KCRzb3VyY2VNYXApKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIHNlbGY6OlNPVVJDRV9NQVBfRklMRToKICAgICAgICAgICAgICAgICAgICAkc291cmNlTWFwVXJsID0gJHNvdXJjZU1hcEdlbmVyYXRvci0+c2F2ZU1hcCgkc291cmNlTWFwKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dCAuPSBzcHJpbnRmKCcvKiMgc291cmNlTWFwcGluZ1VSTD0lcyAqLycsICRzb3VyY2VNYXBVcmwpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5jYWNoZSAmJiBpc3NldCgkY2FjaGVLZXkpICYmIGlzc2V0KCRjb21waWxlT3B0aW9ucykpIHsKICAgICAgICAgICAgJHYgPSBbCiAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJyA9PiAkdGhpcy0+Z2V0UGFyc2VkRmlsZXMoKSwKICAgICAgICAgICAgICAgICdvdXQnID0+ICYkb3V0LAogICAgICAgICAgICBdOwoKICAgICAgICAgICAgJHRoaXMtPmNhY2hlLT5zZXRDYWNoZSgiY29tcGlsZSIsICRjYWNoZUtleSwgJHYsICRjb21waWxlT3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEluc3RhbnRpYXRlIHBhcnNlcgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcUGFyc2VyCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwYXJzZXJGYWN0b3J5KCRwYXRoKQogICAgewogICAgICAgICRwYXJzZXIgPSBuZXcgUGFyc2VyKCRwYXRoLCBjb3VudCgkdGhpcy0+c291cmNlTmFtZXMpLCAkdGhpcy0+ZW5jb2RpbmcsICR0aGlzLT5jYWNoZSk7CgogICAgICAgICR0aGlzLT5zb3VyY2VOYW1lc1tdID0gJHBhdGg7CiAgICAgICAgJHRoaXMtPmFkZFBhcnNlZEZpbGUoJHBhdGgpOwoKICAgICAgICByZXR1cm4gJHBhcnNlcjsKICAgIH0KCiAgICAvKioKICAgICAqIElzIHNlbGYgZXh0ZW5kPwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdGFyZ2V0CiAgICAgKiBAcGFyYW0gYXJyYXkgJG9yaWdpbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNTZWxmRXh0ZW5kKCR0YXJnZXQsICRvcmlnaW4pCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJG9yaWdpbiBhcyAkc2VsKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkdGFyZ2V0LCAkc2VsKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFB1c2ggZXh0ZW5kcwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICAgJHRhcmdldAogICAgICogQHBhcmFtIGFycmF5ICAgICAkb3JpZ2luCiAgICAgKiBAcGFyYW0gXHN0ZENsYXNzICRibG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHVzaEV4dGVuZHMoJHRhcmdldCwgJG9yaWdpbiwgJGJsb2NrKQogICAgewogICAgICAgIGlmICgkdGhpcy0+aXNTZWxmRXh0ZW5kKCR0YXJnZXQsICRvcmlnaW4pKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRpID0gY291bnQoJHRoaXMtPmV4dGVuZHMpOwogICAgICAgICR0aGlzLT5leHRlbmRzW10gPSBbJHRhcmdldCwgJG9yaWdpbiwgJGJsb2NrXTsKCiAgICAgICAgZm9yZWFjaCAoJHRhcmdldCBhcyAkcGFydCkgewogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmV4dGVuZHNNYXBbJHBhcnRdKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmV4dGVuZHNNYXBbJHBhcnRdW10gPSAkaTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5leHRlbmRzTWFwWyRwYXJ0XSA9IFskaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIG91dHB1dCBibG9jawogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUKICAgICAqIEBwYXJhbSBhcnJheSAgJHNlbGVjdG9ycwogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1ha2VPdXRwdXRCbG9jaygkdHlwZSwgJHNlbGVjdG9ycyA9IG51bGwpCiAgICB7CiAgICAgICAgJG91dCA9IG5ldyBPdXRwdXRCbG9jazsKICAgICAgICAkb3V0LT50eXBlICAgICAgICAgPSAkdHlwZTsKICAgICAgICAkb3V0LT5saW5lcyAgICAgICAgPSBbXTsKICAgICAgICAkb3V0LT5jaGlsZHJlbiAgICAgPSBbXTsKICAgICAgICAkb3V0LT5wYXJlbnQgICAgICAgPSAkdGhpcy0+c2NvcGU7CiAgICAgICAgJG91dC0+c2VsZWN0b3JzICAgID0gJHNlbGVjdG9yczsKICAgICAgICAkb3V0LT5kZXB0aCAgICAgICAgPSAkdGhpcy0+ZW52LT5kZXB0aDsKCiAgICAgICAgaWYgKCR0aGlzLT5lbnYtPmJsb2NrIGluc3RhbmNlb2YgQmxvY2spIHsKICAgICAgICAgICAgJG91dC0+c291cmNlTmFtZSAgID0gJHRoaXMtPmVudi0+YmxvY2stPnNvdXJjZU5hbWU7CiAgICAgICAgICAgICRvdXQtPnNvdXJjZUxpbmUgICA9ICR0aGlzLT5lbnYtPmJsb2NrLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAkb3V0LT5zb3VyY2VDb2x1bW4gPSAkdGhpcy0+ZW52LT5ibG9jay0+c291cmNlQ29sdW1uOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRvdXQtPnNvdXJjZU5hbWUgICA9IG51bGw7CiAgICAgICAgICAgICRvdXQtPnNvdXJjZUxpbmUgICA9IG51bGw7CiAgICAgICAgICAgICRvdXQtPnNvdXJjZUNvbHVtbiA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgcm9vdAogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrICRyb290QmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVSb290KEJsb2NrICRyb290QmxvY2spCiAgICB7CiAgICAgICAgJHRoaXMtPnJvb3RCbG9jayA9ICR0aGlzLT5zY29wZSA9ICR0aGlzLT5tYWtlT3V0cHV0QmxvY2soVHlwZTo6VF9ST09UKTsKCiAgICAgICAgJHRoaXMtPmNvbXBpbGVDaGlsZHJlbk5vUmV0dXJuKCRyb290QmxvY2stPmNoaWxkcmVuLCAkdGhpcy0+c2NvcGUpOwogICAgICAgICR0aGlzLT5mbGF0dGVuU2VsZWN0b3JzKCR0aGlzLT5zY29wZSk7CiAgICAgICAgJHRoaXMtPm1pc3NpbmdTZWxlY3RvcnMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlcG9ydCBtaXNzaW5nIHNlbGVjdG9ycwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWlzc2luZ1NlbGVjdG9ycygpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmV4dGVuZHMgYXMgJGV4dGVuZCkgewogICAgICAgICAgICBpZiAoaXNzZXQoJGV4dGVuZFszXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsaXN0KCR0YXJnZXQsICRvcmlnaW4sICRibG9jaykgPSAkZXh0ZW5kOwoKICAgICAgICAgICAgLy8gaWdub3JlIGlmICFvcHRpb25hbAogICAgICAgICAgICBpZiAoJGJsb2NrWzJdKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRhcmdldCA9IGltcGxvZGUoJyAnLCAkdGFyZ2V0KTsKICAgICAgICAgICAgJG9yaWdpbiA9ICR0aGlzLT5jb2xsYXBzZVNlbGVjdG9ycygkb3JpZ2luKTsKCiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VMaW5lID0gJGJsb2NrW1BhcnNlcjo6U09VUkNFX0xJTkVdOwogICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcigiXCIkb3JpZ2luXCIgZmFpbGVkIHRvIEBleHRlbmQgXCIkdGFyZ2V0XCIuIFRoZSBzZWxlY3RvciBcIiR0YXJnZXRcIiB3YXMgbm90IGZvdW5kLiIpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEZsYXR0ZW4gc2VsZWN0b3JzCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRibG9jawogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJlbnRLZXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZsYXR0ZW5TZWxlY3RvcnMoT3V0cHV0QmxvY2sgJGJsb2NrLCAkcGFyZW50S2V5ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGJsb2NrLT5zZWxlY3RvcnMpIHsKICAgICAgICAgICAgJHNlbGVjdG9ycyA9IFtdOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGJsb2NrLT5zZWxlY3RvcnMgYXMgJHMpIHsKICAgICAgICAgICAgICAgICRzZWxlY3RvcnNbXSA9ICRzOwoKICAgICAgICAgICAgICAgIGlmICghIGlzX2FycmF5KCRzKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGNoZWNrIGV4dGVuZHMKICAgICAgICAgICAgICAgIGlmICghIGVtcHR5KCR0aGlzLT5leHRlbmRzTWFwKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaEV4dGVuZHMoJHMsICRzZWxlY3RvcnMpOwoKICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgZHVwbGljYXRlcwogICAgICAgICAgICAgICAgICAgIGFycmF5X3dhbGsoJHNlbGVjdG9ycywgZnVuY3Rpb24gKCYkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gc2VyaWFsaXplKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICRzZWxlY3RvcnMgPSBhcnJheV91bmlxdWUoJHNlbGVjdG9ycyk7CgogICAgICAgICAgICAgICAgICAgIGFycmF5X3dhbGsoJHNlbGVjdG9ycywgZnVuY3Rpb24gKCYkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gdW5zZXJpYWxpemUoJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGJsb2NrLT5zZWxlY3RvcnMgPSBbXTsKICAgICAgICAgICAgJHBsYWNlaG9sZGVyU2VsZWN0b3IgPSBmYWxzZTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmhhc1NlbGVjdG9yUGxhY2Vob2xkZXIoJHNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgICAgICRwbGFjZWhvbGRlclNlbGVjdG9yID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYmxvY2stPnNlbGVjdG9yc1tdID0gJHRoaXMtPmNvbXBpbGVTZWxlY3Rvcigkc2VsZWN0b3IpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHBsYWNlaG9sZGVyU2VsZWN0b3IgJiYgMCA9PT0gY291bnQoJGJsb2NrLT5zZWxlY3RvcnMpICYmIG51bGwgIT09ICRwYXJlbnRLZXkpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRibG9jay0+cGFyZW50LT5jaGlsZHJlblskcGFyZW50S2V5XSk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmNoaWxkcmVuIGFzICRrZXkgPT4gJGNoaWxkKSB7CiAgICAgICAgICAgICR0aGlzLT5mbGF0dGVuU2VsZWN0b3JzKCRjaGlsZCwgJGtleSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2x1ZSBwYXJ0cyBvZiA6bm90KCBvciA6bnRoLWNoaWxkKCAuLi4gdGhhdCBhcmUgaW4gZ2VuZXJhbCBzcGxpdHRlZCBpbiBzZWxlY3RvcnMgcGFydHMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhcnRzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2x1ZUZ1bmN0aW9uU2VsZWN0b3JzKCRwYXJ0cykKICAgIHsKICAgICAgICAkbmV3ID0gW107CgogICAgICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgewogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHBhcnQpKSB7CiAgICAgICAgICAgICAgICAkcGFydCA9ICR0aGlzLT5nbHVlRnVuY3Rpb25TZWxlY3RvcnMoJHBhcnQpOwogICAgICAgICAgICAgICAgJG5ld1tdID0gJHBhcnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBhIHNlbGVjdG9yIHBhcnQgZmluaXNoaW5nIHdpdGggYSApIGlzIHRoZSBsYXN0IHBhcnQgb2YgYSA6bm90KCBvciA6bnRoLWNoaWxkKAogICAgICAgICAgICAgICAgLy8gYW5kIG5lZWQgdG8gYmUgam9pbmVkIHRvIHRoaXMKICAgICAgICAgICAgICAgIGlmIChjb3VudCgkbmV3KSAmJiBpc19zdHJpbmcoJG5ld1tjb3VudCgkbmV3KSAtIDFdKSAmJgogICAgICAgICAgICAgICAgICAgIHN0cmxlbigkcGFydCkgJiYgc3Vic3RyKCRwYXJ0LCAtMSkgPT09ICcpJyAmJiBzdHJwb3MoJHBhcnQsICcoJykgPT09IGZhbHNlCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkbmV3W2NvdW50KCRuZXcpIC0gMV0gLj0gJHBhcnQ7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRuZXdbXSA9ICRwYXJ0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICAvKioKICAgICAqIE1hdGNoIGV4dGVuZHMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkc2VsZWN0b3IKICAgICAqIEBwYXJhbSBhcnJheSAgICRvdXQKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRmcm9tCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkaW5pdGlhbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWF0Y2hFeHRlbmRzKCRzZWxlY3RvciwgJiRvdXQsICRmcm9tID0gMCwgJGluaXRpYWwgPSB0cnVlKQogICAgewogICAgICAgIHN0YXRpYyAkcGFydHNQaWxlID0gW107CgogICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5nbHVlRnVuY3Rpb25TZWxlY3RvcnMoJHNlbGVjdG9yKTsKCiAgICAgICAgaWYgKGNvdW50KCRzZWxlY3RvcikgPT0gMSAmJiBpbl9hcnJheShyZXNldCgkc2VsZWN0b3IpLCAkcGFydHNQaWxlKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3IgYXMgJGkgPT4gJHBhcnQpIHsKICAgICAgICAgICAgaWYgKCRpIDwgJGZyb20pIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBjaGVjayB0aGF0IHdlIGFyZSBub3QgYnVpbGRpbmcgYW4gaW5maW5pdGUgbG9vcCBvZiBleHRlbnNpb25zCiAgICAgICAgICAgIC8vIGlmIHRoZSBuZXcgcGFydCBpcyBqdXN0IGluY2x1ZGluZyBhIHByZXZpb3VzIHBhcnQgZG9uJ3QgdHJ5IHRvIGV4dGVuZCBhbnltb3JlCiAgICAgICAgICAgIGlmIChjb3VudCgkcGFydCkgPiAxKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFydHNQaWxlIGFzICRwcmV2aW91c1BhcnQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISBjb3VudChhcnJheV9kaWZmKCRwcmV2aW91c1BhcnQsICRwYXJ0KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hFeHRlbmRzU2luZ2xlKCRwYXJ0LCAkb3JpZ2luKSkgewogICAgICAgICAgICAgICAgJHBhcnRzUGlsZVtdID0gJHBhcnQ7CiAgICAgICAgICAgICAgICAkYWZ0ZXIgICAgICAgPSBhcnJheV9zbGljZSgkc2VsZWN0b3IsICRpICsgMSk7CiAgICAgICAgICAgICAgICAkYmVmb3JlICAgICAgPSBhcnJheV9zbGljZSgkc2VsZWN0b3IsIDAsICRpKTsKCiAgICAgICAgICAgICAgICBsaXN0KCRiZWZvcmUsICRub25CcmVha2FibGVCZWZvcmUpID0gJHRoaXMtPmV4dHJhY3RSZWxhdGlvbnNoaXBGcm9tRnJhZ21lbnQoJGJlZm9yZSk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJG9yaWdpbiBhcyAkbmV3KSB7CiAgICAgICAgICAgICAgICAgICAgJGsgPSAwOwoKICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgc2hhcmVkIHBhcnRzCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRuZXcpID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJGsgPCAkaSAmJiBpc3NldCgkbmV3WyRrXSkgJiYgJHNlbGVjdG9yWyRrXSA9PT0gJG5ld1ska10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrKys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRyZXBsYWNlbWVudCA9IFtdOwogICAgICAgICAgICAgICAgICAgICR0ZW1wUmVwbGFjZW1lbnQgPSAkayA+IDAgPyBhcnJheV9zbGljZSgkbmV3LCAkaykgOiAkbmV3OwoKICAgICAgICAgICAgICAgICAgICBmb3IgKCRsID0gY291bnQoJHRlbXBSZXBsYWNlbWVudCkgLSAxOyAkbCA+PSAwOyAkbC0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzbGljZSA9IFtdOwoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRlbXBSZXBsYWNlbWVudFskbF0gYXMgJGNodW5rKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBpbl9hcnJheSgkY2h1bmssICRzbGljZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2xpY2VbXSA9ICRjaHVuazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkcmVwbGFjZW1lbnQsICRzbGljZSk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISAkdGhpcy0+aXNJbW1lZGlhdGVSZWxhdGlvbnNoaXBDb21iaW5hdG9yKGVuZCgkc2xpY2UpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRhZnRlckJlZm9yZSA9ICRsICE9IDAgPyBhcnJheV9zbGljZSgkdGVtcFJlcGxhY2VtZW50LCAwLCAkbCkgOiBbXTsKCiAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2Ugc2hhcmVkIGRpcmVjdCByZWxhdGlvbnNoaXBzLgogICAgICAgICAgICAgICAgICAgICRtZXJnZWRCZWZvcmUgPSAkdGhpcy0+bWVyZ2VEaXJlY3RSZWxhdGlvbnNoaXBzKCRhZnRlckJlZm9yZSwgJG5vbkJyZWFrYWJsZUJlZm9yZSk7CgogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICAgICAgICAgJGJlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1lcmdlZEJlZm9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAkYWZ0ZXIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdCA9PT0gJHNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJHJlc3VsdDsKCiAgICAgICAgICAgICAgICAgICAgLy8gcmVjdXJzaXZlbHkgY2hlY2sgZm9yIG1vcmUgbWF0Y2hlcwogICAgICAgICAgICAgICAgICAgICRzdGFydFJlY3Vyc2VGcm9tID0gY291bnQoJGJlZm9yZSkgKyBtaW4oY291bnQoJG5vbkJyZWFrYWJsZUJlZm9yZSksIGNvdW50KCRtZXJnZWRCZWZvcmUpKTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hFeHRlbmRzKCRyZXN1bHQsICRvdXQsICRzdGFydFJlY3Vyc2VGcm9tLCBmYWxzZSk7CgogICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdG9yIHNlcXVlbmNlIG1lcmdpbmcKICAgICAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkYmVmb3JlKSAmJiBjb3VudCgkbmV3KSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHByZVNoYXJlZFBhcnRzID0gJGsgPiAwID8gYXJyYXlfc2xpY2UoJGJlZm9yZSwgMCwgJGspIDogW107CiAgICAgICAgICAgICAgICAgICAgICAgICRwb3N0U2hhcmVkUGFydHMgPSAkayA+IDAgPyBhcnJheV9zbGljZSgkYmVmb3JlLCAkaykgOiAkYmVmb3JlOwoKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCgkYmV0d2VlblNoYXJlZFBhcnRzLCAkbm9uQnJlYWthYmxlMikgPSAkdGhpcy0+ZXh0cmFjdFJlbGF0aW9uc2hpcEZyb21GcmFnbWVudCgkYWZ0ZXJCZWZvcmUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdDIgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcmVTaGFyZWRQYXJ0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRiZXR3ZWVuU2hhcmVkUGFydHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcG9zdFNoYXJlZFBhcnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5vbkJyZWFrYWJsZTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbm9uQnJlYWthYmxlQmVmb3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlcGxhY2VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFmdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAkcmVzdWx0MjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRwYXJ0c1BpbGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogTWF0Y2ggZXh0ZW5kcyBzaW5nbGUKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHJhd1NpbmdsZQogICAgICogQHBhcmFtIGFycmF5ICRvdXRPcmlnaW4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1hdGNoRXh0ZW5kc1NpbmdsZSgkcmF3U2luZ2xlLCAmJG91dE9yaWdpbikKICAgIHsKICAgICAgICAkY291bnRzID0gW107CiAgICAgICAgJHNpbmdsZSA9IFtdOwoKICAgICAgICAvLyBzaW1wbGUgdXN1YWwgY2FzZXMsIG5vIG5lZWQgdG8gZG8gdGhlIHdob2xlIHRyaWNrCiAgICAgICAgaWYgKGluX2FycmF5KCRyYXdTaW5nbGUsIFtbJz4nXSxbJysnXSxbJ34nXV0pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRyYXdTaW5nbGUgYXMgJHBhcnQpIHsKICAgICAgICAgICAgLy8gbWF0Y2hlcyBOdW1iZXIKICAgICAgICAgICAgaWYgKCEgaXNfc3RyaW5nKCRwYXJ0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISBwcmVnX21hdGNoKCcvXltcWy46IyVdLycsICRwYXJ0KSAmJiBjb3VudCgkc2luZ2xlKSkgewogICAgICAgICAgICAgICAgJHNpbmdsZVtjb3VudCgkc2luZ2xlKSAtIDFdIC49ICRwYXJ0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHNpbmdsZVtdID0gJHBhcnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRleHRlbmRpbmdEZWNvcmF0ZWRUYWcgPSBmYWxzZTsKCiAgICAgICAgaWYgKGNvdW50KCRzaW5nbGUpID4gMSkgewogICAgICAgICAgICAkbWF0Y2hlcyA9IG51bGw7CiAgICAgICAgICAgICRleHRlbmRpbmdEZWNvcmF0ZWRUYWcgPSBwcmVnX21hdGNoKCcvXlthLXowLTldKyQvaScsICRzaW5nbGVbMF0sICRtYXRjaGVzKSA/ICRtYXRjaGVzWzBdIDogZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkc2luZ2xlIGFzICRwYXJ0KSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZXh0ZW5kc01hcFskcGFydF0pKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZXh0ZW5kc01hcFskcGFydF0gYXMgJGlkeCkgewogICAgICAgICAgICAgICAgICAgICRjb3VudHNbJGlkeF0gPSBpc3NldCgkY291bnRzWyRpZHhdKSA/ICRjb3VudHNbJGlkeF0gKyAxIDogMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG91dE9yaWdpbiA9IFtdOwogICAgICAgICRmb3VuZCA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkY291bnRzIGFzICRpZHggPT4gJGNvdW50KSB7CiAgICAgICAgICAgIGxpc3QoJHRhcmdldCwgJG9yaWdpbiwgLyogJGJsb2NrICovKSA9ICR0aGlzLT5leHRlbmRzWyRpZHhdOwoKICAgICAgICAgICAgJG9yaWdpbiA9ICR0aGlzLT5nbHVlRnVuY3Rpb25TZWxlY3RvcnMoJG9yaWdpbik7CgogICAgICAgICAgICAvLyBjaGVjayBjb3VudAogICAgICAgICAgICBpZiAoJGNvdW50ICE9PSBjb3VudCgkdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5leHRlbmRzWyRpZHhdWzNdID0gdHJ1ZTsKCiAgICAgICAgICAgICRyZW0gPSBhcnJheV9kaWZmKCRzaW5nbGUsICR0YXJnZXQpOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG9yaWdpbiBhcyAkaiA9PiAkbmV3KSB7CiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGluZmluaXRlIGxvb3Agd2hlbiB0YXJnZXQgZXh0ZW5kcyBpdHNlbGYKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+aXNTZWxmRXh0ZW5kKCRzaW5nbGUsICRvcmlnaW4pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRyZXBsYWNlbWVudCA9IGVuZCgkbmV3KTsKCiAgICAgICAgICAgICAgICAvLyBFeHRlbmRpbmcgYSBkZWNvcmF0ZWQgdGFnIHdpdGggYW5vdGhlciB0YWcgaXMgbm90IHBvc3NpYmxlLgogICAgICAgICAgICAgICAgaWYgKCRleHRlbmRpbmdEZWNvcmF0ZWRUYWcgJiYgJHJlcGxhY2VtZW50WzBdICE9ICRleHRlbmRpbmdEZWNvcmF0ZWRUYWcgJiYKICAgICAgICAgICAgICAgICAgICBwcmVnX21hdGNoKCcvXlthLXowLTldKyQvaScsICRyZXBsYWNlbWVudFswXSkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIHVuc2V0KCRvcmlnaW5bJGpdKTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkY29tYmluZWQgPSAkdGhpcy0+Y29tYmluZVNlbGVjdG9yU2luZ2xlKCRyZXBsYWNlbWVudCwgJHJlbSk7CgogICAgICAgICAgICAgICAgaWYgKGNvdW50KGFycmF5X2RpZmYoJGNvbWJpbmVkLCAkb3JpZ2luWyRqXVtjb3VudCgkb3JpZ2luWyRqXSkgLSAxXSkpKSB7CiAgICAgICAgICAgICAgICAgICAgJG9yaWdpblskal1bY291bnQoJG9yaWdpblskal0pIC0gMV0gPSAkY29tYmluZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRvdXRPcmlnaW4gPSBhcnJheV9tZXJnZSgkb3V0T3JpZ2luLCAkb3JpZ2luKTsKCiAgICAgICAgICAgICRmb3VuZCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGZvdW5kOwogICAgfQoKICAgIC8qKgogICAgICogRXh0cmFjdCBhIHJlbGF0aW9uc2hpcCBmcm9tIHRoZSBmcmFnbWVudC4KICAgICAqCiAgICAgKiBXaGVuIGV4dHJhY3RpbmcgdGhlIGxhc3QgcG9ydGlvbiBvZiBhIHNlbGVjdG9yIHdlIHdpbGwgYmUgbGVmdCB3aXRoIGEKICAgICAqIGZyYWdtZW50IHdoaWNoIG1heSBlbmQgd2l0aCBhIGRpcmVjdGlvbiByZWxhdGlvbnNoaXAgY29tYmluYXRvci4gVGhpcwogICAgICogbWV0aG9kIHdpbGwgZXh0cmFjdCB0aGUgcmVsYXRpb25zaGlwIGZyYWdtZW50IGFuZCByZXR1cm4gaXQgYWxvbmcgc2lkZQogICAgICogdGhlIHJlc3QuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRmcmFnbWVudCBUaGUgc2VsZWN0b3IgZnJhZ21lbnQgbWF5YmUgZW5kaW5nIHdpdGggYSBkaXJlY3Rpb24gcmVsYXRpb25zaGlwIGNvbWJpbmF0b3IuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBUaGUgc2VsZWN0b3Igd2l0aG91dCB0aGUgcmVsYXRpb25zaGlwIGZyYWdtZW50IGlmIGFueSwgdGhlIHJlbGF0aW9uc2hpcCBmcmFnbWVudC4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4dHJhY3RSZWxhdGlvbnNoaXBGcm9tRnJhZ21lbnQoYXJyYXkgJGZyYWdtZW50KQogICAgewogICAgICAgICRwYXJlbnRzID0gW107CiAgICAgICAgJGNoaWxkcmVuID0gW107CiAgICAgICAgJGogPSAkaSA9IGNvdW50KCRmcmFnbWVudCk7CgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgJGNoaWxkcmVuID0gJGogIT0gJGkgPyBhcnJheV9zbGljZSgkZnJhZ21lbnQsICRqLCAkaSAtICRqKSA6IFtdOwogICAgICAgICAgICAkcGFyZW50cyA9IGFycmF5X3NsaWNlKCRmcmFnbWVudCwgMCwgJGopOwogICAgICAgICAgICAkc2xpY2UgPSBlbmQoJHBhcmVudHMpOwoKICAgICAgICAgICAgaWYgKGVtcHR5KCRzbGljZSkgfHwgISAkdGhpcy0+aXNJbW1lZGlhdGVSZWxhdGlvbnNoaXBDb21iaW5hdG9yKCRzbGljZVswXSkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaiAtPSAyOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskcGFyZW50cywgJGNoaWxkcmVuXTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbWJpbmUgc2VsZWN0b3Igc2luZ2xlCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRiYXNlCiAgICAgKiBAcGFyYW0gYXJyYXkgJG90aGVyCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tYmluZVNlbGVjdG9yU2luZ2xlKCRiYXNlLCAkb3RoZXIpCiAgICB7CiAgICAgICAgJHRhZyA9IFtdOwogICAgICAgICRvdXQgPSBbXTsKICAgICAgICAkd2FzVGFnID0gdHJ1ZTsKCiAgICAgICAgZm9yZWFjaCAoWyRiYXNlLCAkb3RoZXJdIGFzICRzaW5nbGUpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHNpbmdsZSBhcyAkcGFydCkgewogICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eW1xbLjojXS8nLCAkcGFydCkpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAkcGFydDsKICAgICAgICAgICAgICAgICAgICAkd2FzVGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL15bXl8tXS8nLCAkcGFydCkpIHsKICAgICAgICAgICAgICAgICAgICAkdGFnW10gPSAkcGFydDsKICAgICAgICAgICAgICAgICAgICAkd2FzVGFnID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkd2FzVGFnKSB7CiAgICAgICAgICAgICAgICAgICAgJHRhZ1tjb3VudCgkdGFnKSAtIDFdIC49ICRwYXJ0OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W2NvdW50KCRvdXQpIC0gMV0gLj0gJHBhcnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChjb3VudCgkdGFnKSkgewogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRvdXQsICR0YWdbMF0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIG1lZGlhCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sgJG1lZGlhCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlTWVkaWEoQmxvY2sgJG1lZGlhKQogICAgewogICAgICAgICR0aGlzLT5wdXNoRW52KCRtZWRpYSk7CgogICAgICAgICRtZWRpYVF1ZXJpZXMgPSAkdGhpcy0+Y29tcGlsZU1lZGlhUXVlcnkoJHRoaXMtPm11bHRpcGx5TWVkaWEoJHRoaXMtPmVudikpOwoKICAgICAgICBpZiAoISBlbXB0eSgkbWVkaWFRdWVyaWVzKSAmJiAkbWVkaWFRdWVyaWVzKSB7CiAgICAgICAgICAgICRwcmV2aW91c1Njb3BlID0gJHRoaXMtPnNjb3BlOwogICAgICAgICAgICAkcGFyZW50U2NvcGUgPSAkdGhpcy0+bWVkaWFQYXJlbnQoJHRoaXMtPnNjb3BlKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRtZWRpYVF1ZXJpZXMgYXMgJG1lZGlhUXVlcnkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zY29wZSA9ICR0aGlzLT5tYWtlT3V0cHV0QmxvY2soVHlwZTo6VF9NRURJQSwgWyRtZWRpYVF1ZXJ5XSk7CgogICAgICAgICAgICAgICAgJHBhcmVudFNjb3BlLT5jaGlsZHJlbltdID0gJHRoaXMtPnNjb3BlOwogICAgICAgICAgICAgICAgJHBhcmVudFNjb3BlID0gJHRoaXMtPnNjb3BlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyB0b3AgbGV2ZWwgcHJvcGVydGllcyBpbiBhIG1lZGlhIGNhdXNlIGl0IHRvIGJlIHdyYXBwZWQKICAgICAgICAgICAgJG5lZWRzV3JhcCA9IGZhbHNlOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG1lZGlhLT5jaGlsZHJlbiBhcyAkY2hpbGQpIHsKICAgICAgICAgICAgICAgICR0eXBlID0gJGNoaWxkWzBdOwoKICAgICAgICAgICAgICAgIGlmICgkdHlwZSAhPT0gVHlwZTo6VF9CTE9DSyAmJgogICAgICAgICAgICAgICAgICAgICR0eXBlICE9PSBUeXBlOjpUX01FRElBICYmCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgIT09IFR5cGU6OlRfRElSRUNUSVZFICYmCiAgICAgICAgICAgICAgICAgICAgJHR5cGUgIT09IFR5cGU6OlRfSU1QT1JUCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkbmVlZHNXcmFwID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZWVkc1dyYXApIHsKICAgICAgICAgICAgICAgICR3cmFwcGVkID0gbmV3IEJsb2NrOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZU5hbWUgPSAkbWVkaWEtPnNvdXJjZU5hbWU7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlSW5kZXggPSAkbWVkaWEtPnNvdXJjZUluZGV4OwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUxpbmUgPSAkbWVkaWEtPnNvdXJjZUxpbmU7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlQ29sdW1uID0gJG1lZGlhLT5zb3VyY2VDb2x1bW47CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c2VsZWN0b3JzID0gW107CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+Y29tbWVudHMgPSBbXTsKICAgICAgICAgICAgICAgICR3cmFwcGVkLT5wYXJlbnQgPSAkbWVkaWE7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+Y2hpbGRyZW4gPSAkbWVkaWEtPmNoaWxkcmVuOwoKICAgICAgICAgICAgICAgICRtZWRpYS0+Y2hpbGRyZW4gPSBbW1R5cGU6OlRfQkxPQ0ssICR3cmFwcGVkXV07CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmxpbmVOdW1iZXJTdHlsZSkpIHsKICAgICAgICAgICAgICAgICAgICAkYW5ub3RhdGlvbiA9ICR0aGlzLT5tYWtlT3V0cHV0QmxvY2soVHlwZTo6VF9DT01NRU5UKTsKICAgICAgICAgICAgICAgICAgICAkYW5ub3RhdGlvbi0+ZGVwdGggPSAwOwoKICAgICAgICAgICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5zb3VyY2VOYW1lc1skbWVkaWEtPnNvdXJjZUluZGV4XTsKICAgICAgICAgICAgICAgICAgICAkbGluZSA9ICRtZWRpYS0+c291cmNlTGluZTsKCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgkdGhpcy0+bGluZU51bWJlclN0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3RhdGljOjpMSU5FX0NPTU1FTlRTOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFubm90YXRpb24tPmxpbmVzW10gPSAnLyogbGluZSAnIC4gJGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCRmaWxlID8gJywgJyAuICRmaWxlIDogJycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgKi8nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHN0YXRpYzo6REVCVUdfSU5GTzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbm5vdGF0aW9uLT5saW5lc1tdID0gJ0BtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZveycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCRmaWxlID8gJ2ZpbGVuYW1le2ZvbnQtZmFtaWx5OiInIC4gJGZpbGUgLiAnIn0nIDogJycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdsaW5le2ZvbnQtZmFtaWx5OicgLiAkbGluZSAuICd9fSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zY29wZS0+Y2hpbGRyZW5bXSA9ICRhbm5vdGF0aW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuTm9SZXR1cm4oJG1lZGlhLT5jaGlsZHJlbiwgJHRoaXMtPnNjb3BlKTsKCiAgICAgICAgICAgICR0aGlzLT5zY29wZSA9ICRwcmV2aW91c1Njb3BlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgfQoKICAgIC8qKgogICAgICogTWVkaWEgcGFyZW50CiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRzY29wZQogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1lZGlhUGFyZW50KE91dHB1dEJsb2NrICRzY29wZSkKICAgIHsKICAgICAgICB3aGlsZSAoISBlbXB0eSgkc2NvcGUtPnBhcmVudCkpIHsKICAgICAgICAgICAgaWYgKCEgZW1wdHkoJHNjb3BlLT50eXBlKSAmJiAkc2NvcGUtPnR5cGUgIT09IFR5cGU6OlRfTUVESUEpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2NvcGUgPSAkc2NvcGUtPnBhcmVudDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2NvcGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIGRpcmVjdGl2ZQogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrICRibG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZURpcmVjdGl2ZShCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJHMgPSAnQCcgLiAkYmxvY2stPm5hbWU7CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+dmFsdWUpKSB7CiAgICAgICAgICAgICRzIC49ICcgJyAuICR0aGlzLT5jb21waWxlVmFsdWUoJGJsb2NrLT52YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJsb2NrLT5uYW1lID09PSAna2V5ZnJhbWVzJyB8fCBzdWJzdHIoJGJsb2NrLT5uYW1lLCAtMTApID09PSAnLWtleWZyYW1lcycpIHsKICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVLZXlmcmFtZUJsb2NrKCRibG9jaywgWyRzXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVOZXN0ZWRCbG9jaygkYmxvY2ssIFskc10pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgYXQtcm9vdAogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrICRibG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29tcGlsZUF0Um9vdChCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGVudiAgICAgPSAkdGhpcy0+cHVzaEVudigkYmxvY2spOwogICAgICAgICRlbnZzICAgID0gJHRoaXMtPmNvbXBhY3RFbnYoJGVudik7CiAgICAgICAgbGlzdCgkd2l0aCwgJHdpdGhvdXQpID0gJHRoaXMtPmNvbXBpbGVXaXRoKGlzc2V0KCRibG9jay0+d2l0aCkgPyAkYmxvY2stPndpdGggOiBudWxsKTsKCiAgICAgICAgLy8gd3JhcCBpbmxpbmUgc2VsZWN0b3IKICAgICAgICBpZiAoJGJsb2NrLT5zZWxlY3RvcikgewogICAgICAgICAgICAkd3JhcHBlZCA9IG5ldyBCbG9jazsKICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZU5hbWUgICA9ICRibG9jay0+c291cmNlTmFtZTsKICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUluZGV4ICA9ICRibG9jay0+c291cmNlSW5kZXg7CiAgICAgICAgICAgICR3cmFwcGVkLT5zb3VyY2VMaW5lICAgPSAkYmxvY2stPnNvdXJjZUxpbmU7CiAgICAgICAgICAgICR3cmFwcGVkLT5zb3VyY2VDb2x1bW4gPSAkYmxvY2stPnNvdXJjZUNvbHVtbjsKICAgICAgICAgICAgJHdyYXBwZWQtPnNlbGVjdG9ycyAgICA9ICRibG9jay0+c2VsZWN0b3I7CiAgICAgICAgICAgICR3cmFwcGVkLT5jb21tZW50cyAgICAgPSBbXTsKICAgICAgICAgICAgJHdyYXBwZWQtPnBhcmVudCAgICAgICA9ICRibG9jazsKICAgICAgICAgICAgJHdyYXBwZWQtPmNoaWxkcmVuICAgICA9ICRibG9jay0+Y2hpbGRyZW47CiAgICAgICAgICAgICR3cmFwcGVkLT5zZWxmUGFyZW50ICAgPSAkYmxvY2stPnNlbGZQYXJlbnQ7CgogICAgICAgICAgICAkYmxvY2stPmNoaWxkcmVuID0gW1tUeXBlOjpUX0JMT0NLLCAkd3JhcHBlZF1dOwogICAgICAgICAgICAkYmxvY2stPnNlbGVjdG9yID0gbnVsbDsKICAgICAgICB9CgogICAgICAgICRzZWxmUGFyZW50ID0gJGJsb2NrLT5zZWxmUGFyZW50OwoKICAgICAgICBpZiAoISAkYmxvY2stPnNlbGZQYXJlbnQtPnNlbGVjdG9ycyAmJiBpc3NldCgkYmxvY2stPnBhcmVudCkgJiYgJGJsb2NrLT5wYXJlbnQgJiYKICAgICAgICAgICAgaXNzZXQoJGJsb2NrLT5wYXJlbnQtPnNlbGVjdG9ycykgJiYgJGJsb2NrLT5wYXJlbnQtPnNlbGVjdG9ycwogICAgICAgICkgewogICAgICAgICAgICAkc2VsZlBhcmVudCA9ICRibG9jay0+cGFyZW50OwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVudiA9ICR0aGlzLT5maWx0ZXJXaXRoV2l0aG91dCgkZW52cywgJHdpdGgsICR3aXRob3V0KTsKCiAgICAgICAgJHNhdmVTY29wZSAgID0gJHRoaXMtPnNjb3BlOwogICAgICAgICR0aGlzLT5zY29wZSA9ICR0aGlzLT5maWx0ZXJTY29wZVdpdGhXaXRob3V0KCRzYXZlU2NvcGUsICR3aXRoLCAkd2l0aG91dCk7CgogICAgICAgIC8vIHByb3BhZ2F0ZSBzZWxmUGFyZW50IHRvIHRoZSBjaGlsZHJlbiB3aGVyZSB0aGV5IHN0aWxsIGNhbiBiZSB1c2VmdWwKICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuTm9SZXR1cm4oJGJsb2NrLT5jaGlsZHJlbiwgJHRoaXMtPnNjb3BlLCAkc2VsZlBhcmVudCk7CgogICAgICAgICR0aGlzLT5zY29wZSA9ICR0aGlzLT5jb21wbGV0ZVNjb3BlKCR0aGlzLT5zY29wZSwgJHNhdmVTY29wZSk7CiAgICAgICAgJHRoaXMtPnNjb3BlID0gJHNhdmVTY29wZTsKICAgICAgICAkdGhpcy0+ZW52ICAgPSAkdGhpcy0+ZXh0cmFjdEVudigkZW52cyk7CgogICAgICAgICR0aGlzLT5wb3BFbnYoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlciBhdC1yb290IHNjb3BlIGRlcGVuZGluZyBvZiB3aXRoL3dpdGhvdXQgb3B0aW9uCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRzY29wZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aXRoCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdpdGhvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmaWx0ZXJTY29wZVdpdGhXaXRob3V0KCRzY29wZSwgJHdpdGgsICR3aXRob3V0KQogICAgewogICAgICAgICRmaWx0ZXJlZFNjb3BlcyA9IFtdOwoKICAgICAgICBpZiAoJHNjb3BlLT50eXBlID09PSBUWVBFOjpUX1JPT1QpIHsKICAgICAgICAgICAgcmV0dXJuICRzY29wZTsKICAgICAgICB9CgogICAgICAgIC8vIHN0YXJ0IGZyb20gdGhlIHJvb3QKICAgICAgICB3aGlsZSAoJHNjb3BlLT5wYXJlbnQgJiYgJHNjb3BlLT5wYXJlbnQtPnR5cGUgIT09IFRZUEU6OlRfUk9PVCkgewogICAgICAgICAgICAkc2NvcGUgPSAkc2NvcGUtPnBhcmVudDsKICAgICAgICB9CgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaWYgKCEgJHNjb3BlKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5pc1dpdGgoJHNjb3BlLCAkd2l0aCwgJHdpdGhvdXQpKSB7CiAgICAgICAgICAgICAgICAkcyA9IGNsb25lICRzY29wZTsKICAgICAgICAgICAgICAgICRzLT5jaGlsZHJlbiA9IFtdOwogICAgICAgICAgICAgICAgJHMtPmxpbmVzID0gW107CiAgICAgICAgICAgICAgICAkcy0+cGFyZW50ID0gbnVsbDsKCiAgICAgICAgICAgICAgICBpZiAoJHMtPnR5cGUgIT09IFR5cGU6OlRfTUVESUEgJiYgJHMtPnR5cGUgIT09IFR5cGU6OlRfRElSRUNUSVZFKSB7CiAgICAgICAgICAgICAgICAgICAgJHMtPnNlbGVjdG9ycyA9IFtdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRmaWx0ZXJlZFNjb3Blc1tdID0gJHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkc2NvcGUtPmNoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAkc2NvcGUgPSBlbmQoJHNjb3BlLT5jaGlsZHJlbik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc2NvcGUgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoISBjb3VudCgkZmlsdGVyZWRTY29wZXMpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cm9vdEJsb2NrOwogICAgICAgIH0KCiAgICAgICAgJG5ld1Njb3BlID0gYXJyYXlfc2hpZnQoJGZpbHRlcmVkU2NvcGVzKTsKICAgICAgICAkbmV3U2NvcGUtPnBhcmVudCA9ICR0aGlzLT5yb290QmxvY2s7CgogICAgICAgICR0aGlzLT5yb290QmxvY2stPmNoaWxkcmVuW10gPSAkbmV3U2NvcGU7CgogICAgICAgICRwID0gJiRuZXdTY29wZTsKCiAgICAgICAgd2hpbGUgKGNvdW50KCRmaWx0ZXJlZFNjb3BlcykpIHsKICAgICAgICAgICAgJHMgPSBhcnJheV9zaGlmdCgkZmlsdGVyZWRTY29wZXMpOwogICAgICAgICAgICAkcy0+cGFyZW50ID0gJHA7CiAgICAgICAgICAgICRwLT5jaGlsZHJlbltdID0gJiRzOwogICAgICAgICAgICAkcCA9ICRzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRuZXdTY29wZTsKICAgIH0KCiAgICAvKioKICAgICAqIGZvdW5kIG1pc3Npbmcgc2VsZWN0b3IgZnJvbSBhIGF0LXJvb3QgY29tcGlsYXRpb24gaW4gdGhlIHByZXZpb3VzIHNjb3BlCiAgICAgKiAoaWYgYXQtcm9vdCBpcyBqdXN0IGVuY2xvc2luZyBhIHByb3BlcnR5LCB0aGUgc2VsZWN0b3IgaXMgaW4gdGhlIHBhcmVudCB0cmVlKQogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkc2NvcGUKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkcHJldmlvdXNTY29wZQogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBsZXRlU2NvcGUoJHNjb3BlLCAkcHJldmlvdXNTY29wZSkKICAgIHsKICAgICAgICBpZiAoISAkc2NvcGUtPnR5cGUgJiYgKCEgJHNjb3BlLT5zZWxlY3RvcnMgfHwgISBjb3VudCgkc2NvcGUtPnNlbGVjdG9ycykpICYmIGNvdW50KCRzY29wZS0+bGluZXMpKSB7CiAgICAgICAgICAgICRzY29wZS0+c2VsZWN0b3JzID0gJHRoaXMtPmZpbmRTY29wZVNlbGVjdG9ycygkcHJldmlvdXNTY29wZSwgJHNjb3BlLT5kZXB0aCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNjb3BlLT5jaGlsZHJlbikgewogICAgICAgICAgICBmb3JlYWNoICgkc2NvcGUtPmNoaWxkcmVuIGFzICRrID0+ICRjKSB7CiAgICAgICAgICAgICAgICAkc2NvcGUtPmNoaWxkcmVuWyRrXSA9ICR0aGlzLT5jb21wbGV0ZVNjb3BlKCRjLCAkcHJldmlvdXNTY29wZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2NvcGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kIGEgc2VsZWN0b3IgYnkgdGhlIGRlcHRoIG5vZGUgaW4gdGhlIHNjb3BlCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRzY29wZQogICAgICogQHBhcmFtIGludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZXB0aAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZpbmRTY29wZVNlbGVjdG9ycygkc2NvcGUsICRkZXB0aCkKICAgIHsKICAgICAgICBpZiAoJHNjb3BlLT5kZXB0aCA9PT0gJGRlcHRoICYmICRzY29wZS0+c2VsZWN0b3JzKSB7CiAgICAgICAgICAgIHJldHVybiAkc2NvcGUtPnNlbGVjdG9yczsKICAgICAgICB9CgogICAgICAgIGlmICgkc2NvcGUtPmNoaWxkcmVuKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJHNjb3BlLT5jaGlsZHJlbikgYXMgJGMpIHsKICAgICAgICAgICAgICAgIGlmICgkcyA9ICR0aGlzLT5maW5kU2NvcGVTZWxlY3RvcnMoJGMsICRkZXB0aCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbXTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgQGF0LXJvb3QncyB3aXRoOiBpbmNsdXNpb24gLyB3aXRob3V0OiBleGNsdXNpb24gaW50byAyIGxpc3RzIHVzZXMgdG8gZmlsdGVyIHNjb3BlL2VudiBsYXRlcgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkd2l0aENvbmRpdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVXaXRoKCR3aXRoQ29uZGl0aW9uKQogICAgewogICAgICAgIC8vIGp1c3QgY29tcGlsZSB3aGF0IHdlIGhhdmUgaW4gMiBsaXN0cwogICAgICAgICR3aXRoID0gW107CiAgICAgICAgJHdpdGhvdXQgPSBbJ3J1bGUnID0+IHRydWVdOwoKICAgICAgICBpZiAoJHdpdGhDb25kaXRpb24pIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5saWJNYXBIYXNLZXkoWyR3aXRoQ29uZGl0aW9uLCBzdGF0aWM6OiR3aXRoXSkpIHsKICAgICAgICAgICAgICAgICR3aXRob3V0ID0gW107IC8vIGNhbmNlbCB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgJGxpc3QgPSAkdGhpcy0+Y29lcmNlTGlzdCgkdGhpcy0+bGliTWFwR2V0KFskd2l0aENvbmRpdGlvbiwgc3RhdGljOjokd2l0aF0pKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbGlzdFsyXSBhcyAkaXRlbSkgewogICAgICAgICAgICAgICAgICAgICRrZXl3b3JkID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR0aGlzLT5jb2VyY2VTdHJpbmcoJGl0ZW0pKTsKCiAgICAgICAgICAgICAgICAgICAgJHdpdGhbJGtleXdvcmRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saWJNYXBIYXNLZXkoWyR3aXRoQ29uZGl0aW9uLCBzdGF0aWM6OiR3aXRob3V0XSkpIHsKICAgICAgICAgICAgICAgICR3aXRob3V0ID0gW107IC8vIGNhbmNlbCB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgJGxpc3QgPSAkdGhpcy0+Y29lcmNlTGlzdCgkdGhpcy0+bGliTWFwR2V0KFskd2l0aENvbmRpdGlvbiwgc3RhdGljOjokd2l0aG91dF0pKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkbGlzdFsyXSBhcyAkaXRlbSkgewogICAgICAgICAgICAgICAgICAgICRrZXl3b3JkID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR0aGlzLT5jb2VyY2VTdHJpbmcoJGl0ZW0pKTsKCiAgICAgICAgICAgICAgICAgICAgJHdpdGhvdXRbJGtleXdvcmRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskd2l0aCwgJHdpdGhvdXRdOwogICAgfQoKICAgIC8qKgogICAgICogRmlsdGVyIGVudiBzdGFjawogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICRlbnZzCiAgICAgKiBAcGFyYW0gYXJyYXkgJHdpdGgKICAgICAqIEBwYXJhbSBhcnJheSAkd2l0aG91dAogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmlsdGVyV2l0aFdpdGhvdXQoJGVudnMsICR3aXRoLCAkd2l0aG91dCkKICAgIHsKICAgICAgICAkZmlsdGVyZWQgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGVudnMgYXMgJGUpIHsKICAgICAgICAgICAgaWYgKCRlLT5ibG9jayAmJiAhICR0aGlzLT5pc1dpdGgoJGUtPmJsb2NrLCAkd2l0aCwgJHdpdGhvdXQpKSB7CiAgICAgICAgICAgICAgICAkZWMgPSBjbG9uZSAkZTsKICAgICAgICAgICAgICAgICRlYy0+YmxvY2sgPSBudWxsOwogICAgICAgICAgICAgICAgJGVjLT5zZWxlY3RvcnMgPSBbXTsKICAgICAgICAgICAgICAgICRmaWx0ZXJlZFtdID0gJGVjOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGZpbHRlcmVkW10gPSAkZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5leHRyYWN0RW52KCRmaWx0ZXJlZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaWx0ZXIgV0lUSCBydWxlcwogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEJsb2NrfFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRibG9jawogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdpdGgKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR3aXRob3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc1dpdGgoJGJsb2NrLCAkd2l0aCwgJHdpdGhvdXQpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRibG9jay0+dHlwZSkpIHsKICAgICAgICAgICAgaWYgKCRibG9jay0+dHlwZSA9PT0gVHlwZTo6VF9NRURJQSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50ZXN0V2l0aFdpdGhvdXQoJ21lZGlhJywgJHdpdGgsICR3aXRob3V0KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRibG9jay0+dHlwZSA9PT0gVHlwZTo6VF9ESVJFQ1RJVkUpIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkYmxvY2stPm5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50ZXN0V2l0aFdpdGhvdXQoJGJsb2NrLT5uYW1lLCAkd2l0aCwgJHdpdGhvdXQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZWlmIChpc3NldCgkYmxvY2stPnNlbGVjdG9ycykgJiYgcHJlZ19tYXRjaCgnLEAoXHcrKSxpbXMnLCBqc29uX2VuY29kZSgkYmxvY2stPnNlbGVjdG9ycyksICRtKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dGVzdFdpdGhXaXRob3V0KCRtWzFdLCAkd2l0aCwgJHdpdGhvdXQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50ZXN0V2l0aFdpdGhvdXQoJz8/PycsICR3aXRoLCAkd2l0aG91dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZWlmIChpc3NldCgkYmxvY2stPnNlbGVjdG9ycykpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50ZXN0V2l0aFdpdGhvdXQoJ3J1bGUnLCAkd2l0aCwgJHdpdGhvdXQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0IGEgc2luZ2xlIHR5cGUgb2YgYmxvY2sgYWdhaW5zdCB3aXRoL3dpdGhvdXQgbGlzdHMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR3aGF0CiAgICAgKiBAcGFyYW0gYXJyYXkgICR3aXRoCiAgICAgKiBAcGFyYW0gYXJyYXkgICR3aXRob3V0CiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqICAgdHJ1ZSBpZiB0aGUgYmxvY2sgc2hvdWxkIGJlIGtlcHQsIGZhbHNlIHRvIHJlamVjdAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdGVzdFdpdGhXaXRob3V0KCR3aGF0LCAkd2l0aCwgJHdpdGhvdXQpIHsKCiAgICAgICAgLy8gaWYgd2l0aG91dCwgcmVqZWN0IG9ubHkgaWYgaW4gdGhlIGxpc3QgKG9yICdhbGwnIGlzIGluIHRoZSBsaXN0KQogICAgICAgIGlmIChjb3VudCgkd2l0aG91dCkpIHsKICAgICAgICAgICAgcmV0dXJuIChpc3NldCgkd2l0aG91dFskd2hhdF0pIHx8IGlzc2V0KCR3aXRob3V0WydhbGwnXSkpID8gZmFsc2UgOiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gb3RoZXJ3aXNlIHJlamVjdCBhbGwgd2hhdCBpcyBub3QgaW4gdGhlIHdpdGggbGlzdAogICAgICAgIHJldHVybiAoaXNzZXQoJHdpdGhbJHdoYXRdKSB8fCBpc3NldCgkd2l0aFsnYWxsJ10pKSA/IHRydWUgOiBmYWxzZTsKICAgIH0KCgogICAgLyoqCiAgICAgKiBDb21waWxlIGtleWZyYW1lIGJsb2NrCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sgJGJsb2NrCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAkc2VsZWN0b3JzCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlS2V5ZnJhbWVCbG9jayhCbG9jayAkYmxvY2ssICRzZWxlY3RvcnMpCiAgICB7CiAgICAgICAgJGVudiA9ICR0aGlzLT5wdXNoRW52KCRibG9jayk7CgogICAgICAgICRlbnZzID0gJHRoaXMtPmNvbXBhY3RFbnYoJGVudik7CgogICAgICAgICR0aGlzLT5lbnYgPSAkdGhpcy0+ZXh0cmFjdEVudihhcnJheV9maWx0ZXIoJGVudnMsIGZ1bmN0aW9uIChFbnZpcm9ubWVudCAkZSkgewogICAgICAgICAgICByZXR1cm4gISBpc3NldCgkZS0+YmxvY2stPnNlbGVjdG9ycyk7CiAgICAgICAgfSkpOwoKICAgICAgICAkdGhpcy0+c2NvcGUgPSAkdGhpcy0+bWFrZU91dHB1dEJsb2NrKCRibG9jay0+dHlwZSwgJHNlbGVjdG9ycyk7CiAgICAgICAgJHRoaXMtPnNjb3BlLT5kZXB0aCA9IDE7CiAgICAgICAgJHRoaXMtPnNjb3BlLT5wYXJlbnQtPmNoaWxkcmVuW10gPSAkdGhpcy0+c2NvcGU7CgogICAgICAgICR0aGlzLT5jb21waWxlQ2hpbGRyZW5Ob1JldHVybigkYmxvY2stPmNoaWxkcmVuLCAkdGhpcy0+c2NvcGUpOwoKICAgICAgICAkdGhpcy0+c2NvcGUgPSAkdGhpcy0+c2NvcGUtPnBhcmVudDsKICAgICAgICAkdGhpcy0+ZW52ICAgPSAkdGhpcy0+ZXh0cmFjdEVudigkZW52cyk7CgogICAgICAgICR0aGlzLT5wb3BFbnYoKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgbmVzdGVkIHByb3BlcnRpZXMgbGluZXMKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCbG9jayAkYmxvY2sKICAgICAqIEBwYXJhbSBPdXRwdXRCbG9jayAgICAgICAgICAgICRvdXQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVOZXN0ZWRQcm9wZXJ0aWVzQmxvY2soQmxvY2sgJGJsb2NrLCBPdXRwdXRCbG9jayAkb3V0KQogICAgewogICAgICAgICRwcmVmaXggPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRibG9jay0+cHJlZml4KSAuICctJzsKCiAgICAgICAgJG5lc3RlZCA9ICR0aGlzLT5tYWtlT3V0cHV0QmxvY2soJGJsb2NrLT50eXBlKTsKICAgICAgICAkbmVzdGVkLT5wYXJlbnQgPSAkb3V0OwoKICAgICAgICBpZiAoJGJsb2NrLT5oYXNWYWx1ZSkgewogICAgICAgICAgICAkbmVzdGVkLT5kZXB0aCA9ICRvdXQtPmRlcHRoICsgMTsKICAgICAgICB9CgogICAgICAgICRvdXQtPmNoaWxkcmVuW10gPSAkbmVzdGVkOwoKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmNoaWxkcmVuIGFzICRjaGlsZCkgewogICAgICAgICAgICBzd2l0Y2ggKCRjaGlsZFswXSkgewogICAgICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0FTU0lHTjoKICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRjaGlsZFsxXVsyXSwgJHByZWZpeCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSBUeXBlOjpUX05FU1RFRF9QUk9QRVJUWToKICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRjaGlsZFsxXS0+cHJlZml4WzJdLCAkcHJlZml4KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkKCRjaGlsZCwgJG5lc3RlZCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSBuZXN0ZWQgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCbG9jayAkYmxvY2sKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICRzZWxlY3RvcnMKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVOZXN0ZWRCbG9jayhCbG9jayAkYmxvY2ssICRzZWxlY3RvcnMpCiAgICB7CiAgICAgICAgJHRoaXMtPnB1c2hFbnYoJGJsb2NrKTsKCiAgICAgICAgJHRoaXMtPnNjb3BlID0gJHRoaXMtPm1ha2VPdXRwdXRCbG9jaygkYmxvY2stPnR5cGUsICRzZWxlY3RvcnMpOwogICAgICAgICR0aGlzLT5zY29wZS0+cGFyZW50LT5jaGlsZHJlbltdID0gJHRoaXMtPnNjb3BlOwoKICAgICAgICAvLyB3cmFwIGFzc2lnbiBjaGlsZHJlbiBpbiBhIGJsb2NrCiAgICAgICAgLy8gZXhjZXB0IGZvciBAZm9udC1mYWNlCiAgICAgICAgaWYgKCRibG9jay0+dHlwZSAhPT0gVHlwZTo6VF9ESVJFQ1RJVkUgfHwgJGJsb2NrLT5uYW1lICE9PSAiZm9udC1mYWNlIikgewogICAgICAgICAgICAvLyBuZWVkIHdyYXBwaW5nPwogICAgICAgICAgICAkbmVlZFdyYXBwaW5nID0gZmFsc2U7CgogICAgICAgICAgICBmb3JlYWNoICgkYmxvY2stPmNoaWxkcmVuIGFzICRjaGlsZCkgewogICAgICAgICAgICAgICAgaWYgKCRjaGlsZFswXSA9PT0gVHlwZTo6VF9BU1NJR04pIHsKICAgICAgICAgICAgICAgICAgICAkbmVlZFdyYXBwaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRuZWVkV3JhcHBpbmcpIHsKICAgICAgICAgICAgICAgICR3cmFwcGVkID0gbmV3IEJsb2NrOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZU5hbWUgPSAkYmxvY2stPnNvdXJjZU5hbWU7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlSW5kZXggPSAkYmxvY2stPnNvdXJjZUluZGV4OwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNvdXJjZUxpbmUgPSAkYmxvY2stPnNvdXJjZUxpbmU7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c291cmNlQ29sdW1uID0gJGJsb2NrLT5zb3VyY2VDb2x1bW47CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+c2VsZWN0b3JzID0gW107CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+Y29tbWVudHMgPSBbXTsKICAgICAgICAgICAgICAgICR3cmFwcGVkLT5wYXJlbnQgPSAkYmxvY2s7CiAgICAgICAgICAgICAgICAkd3JhcHBlZC0+Y2hpbGRyZW4gPSAkYmxvY2stPmNoaWxkcmVuOwogICAgICAgICAgICAgICAgJHdyYXBwZWQtPnNlbGZQYXJlbnQgPSAkYmxvY2stPnNlbGZQYXJlbnQ7CgogICAgICAgICAgICAgICAgJGJsb2NrLT5jaGlsZHJlbiA9IFtbVHlwZTo6VF9CTE9DSywgJHdyYXBwZWRdXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvbXBpbGVDaGlsZHJlbk5vUmV0dXJuKCRibG9jay0+Y2hpbGRyZW4sICR0aGlzLT5zY29wZSk7CgogICAgICAgICR0aGlzLT5zY29wZSA9ICR0aGlzLT5zY29wZS0+cGFyZW50OwoKICAgICAgICAkdGhpcy0+cG9wRW52KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWN1cnNpdmVseSBjb21waWxlcyBhIGJsb2NrLgogICAgICoKICAgICAqIEEgYmxvY2sgaXMgYW5hbG9nb3VzIHRvIGEgQ1NTIGJsb2NrIGluIG1vc3QgY2FzZXMuIEEgc2luZ2xlIFNDU1MgZG9jdW1lbnQKICAgICAqIGlzIGVuY2Fwc3VsYXRlZCBpbiBhIGJsb2NrIHdoZW4gcGFyc2VkLCBidXQgaXQgZG9lcyBub3QgaGF2ZSBwYXJlbnQgdGFncwogICAgICogc28gYWxsIG9mIGl0cyBjaGlsZHJlbiBhcHBlYXIgb24gdGhlIHJvb3QgbGV2ZWwgd2hlbiBjb21waWxlZC4KICAgICAqCiAgICAgKiBCbG9ja3MgYXJlIG1hZGUgdXAgb2Ygc2VsZWN0b3JzIGFuZCBjaGlsZHJlbi4KICAgICAqCiAgICAgKiBUaGUgY2hpbGRyZW4gb2YgYSBibG9jayBhcmUganVzdCBhbGwgdGhlIGJsb2NrcyB0aGF0IGFyZSBkZWZpbmVkIHdpdGhpbi4KICAgICAqCiAgICAgKiBDb21waWxpbmcgdGhlIGJsb2NrIGludm9sdmVzIHB1c2hpbmcgYSBmcmVzaCBlbnZpcm9ubWVudCBvbiB0aGUgc3RhY2ssCiAgICAgKiBhbmQgaXRlcmF0aW5nIHRocm91Z2ggdGhlIHByb3BzLCBjb21waWxpbmcgZWFjaCBvbmUuCiAgICAgKgogICAgICogQHNlZSBDb21waWxlcjo6Y29tcGlsZUNoaWxkKCkKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCbG9jayAkYmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVCbG9jayhCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGVudiA9ICR0aGlzLT5wdXNoRW52KCRibG9jayk7CiAgICAgICAgJGVudi0+c2VsZWN0b3JzID0gJHRoaXMtPmV2YWxTZWxlY3RvcnMoJGJsb2NrLT5zZWxlY3RvcnMpOwoKICAgICAgICAkb3V0ID0gJHRoaXMtPm1ha2VPdXRwdXRCbG9jayhudWxsKTsKCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5saW5lTnVtYmVyU3R5bGUpICYmIGNvdW50KCRlbnYtPnNlbGVjdG9ycykgJiYgY291bnQoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJGFubm90YXRpb24gPSAkdGhpcy0+bWFrZU91dHB1dEJsb2NrKFR5cGU6OlRfQ09NTUVOVCk7CiAgICAgICAgICAgICRhbm5vdGF0aW9uLT5kZXB0aCA9IDA7CgogICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5zb3VyY2VOYW1lc1skYmxvY2stPnNvdXJjZUluZGV4XTsKICAgICAgICAgICAgJGxpbmUgPSAkYmxvY2stPnNvdXJjZUxpbmU7CgogICAgICAgICAgICBzd2l0Y2ggKCR0aGlzLT5saW5lTnVtYmVyU3R5bGUpIHsKICAgICAgICAgICAgICAgIGNhc2Ugc3RhdGljOjpMSU5FX0NPTU1FTlRTOgogICAgICAgICAgICAgICAgICAgICRhbm5vdGF0aW9uLT5saW5lc1tdID0gJy8qIGxpbmUgJyAuICRsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoJGZpbGUgPyAnLCAnIC4gJGZpbGUgOiAnJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcgKi8nOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2Ugc3RhdGljOjpERUJVR19JTkZPOgogICAgICAgICAgICAgICAgICAgICRhbm5vdGF0aW9uLT5saW5lc1tdID0gJ0BtZWRpYSAtc2Fzcy1kZWJ1Zy1pbmZveycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICgkZmlsZSA/ICdmaWxlbmFtZXtmb250LWZhbWlseToiJyAuICRmaWxlIC4gJyJ9JyA6ICcnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ2xpbmV7Zm9udC1mYW1pbHk6JyAuICRsaW5lIC4gJ319JzsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNjb3BlLT5jaGlsZHJlbltdID0gJGFubm90YXRpb247CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2NvcGUtPmNoaWxkcmVuW10gPSAkb3V0OwoKICAgICAgICBpZiAoY291bnQoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJG91dC0+c2VsZWN0b3JzID0gJHRoaXMtPm11bHRpcGx5U2VsZWN0b3JzKCRlbnYsICRibG9jay0+c2VsZlBhcmVudCk7CgogICAgICAgICAgICAvLyBwcm9wYWdhdGUgc2VsZlBhcmVudCB0byB0aGUgY2hpbGRyZW4gd2hlcmUgdGhleSBzdGlsbCBjYW4gYmUgdXNlZnVsCiAgICAgICAgICAgICRzZWxmUGFyZW50U2VsZWN0b3JzID0gbnVsbDsKCiAgICAgICAgICAgIGlmIChpc3NldCgkYmxvY2stPnNlbGZQYXJlbnQtPnNlbGVjdG9ycykpIHsKICAgICAgICAgICAgICAgICRzZWxmUGFyZW50U2VsZWN0b3JzID0gJGJsb2NrLT5zZWxmUGFyZW50LT5zZWxlY3RvcnM7CiAgICAgICAgICAgICAgICAkYmxvY2stPnNlbGZQYXJlbnQtPnNlbGVjdG9ycyA9ICRvdXQtPnNlbGVjdG9yczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVDaGlsZHJlbk5vUmV0dXJuKCRibG9jay0+Y2hpbGRyZW4sICRvdXQsICRibG9jay0+c2VsZlBhcmVudCk7CgogICAgICAgICAgICAvLyBhbmQgcmV2ZXJ0IGZvciB0aGUgZm9sbG93aW5nIGNoaWxkcyBvZiB0aGUgc2FtZSBibG9jawogICAgICAgICAgICBpZiAoJHNlbGZQYXJlbnRTZWxlY3RvcnMpIHsKICAgICAgICAgICAgICAgICRibG9jay0+c2VsZlBhcmVudC0+c2VsZWN0b3JzID0gJHNlbGZQYXJlbnRTZWxlY3RvcnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5mb3JtYXR0ZXItPnN0cmlwU2VtaWNvbG9uKCRvdXQtPmxpbmVzKTsKCiAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSByb290IGxldmVsIGNvbW1lbnQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGJsb2NrCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlQ29tbWVudCgkYmxvY2spCiAgICB7CiAgICAgICAgJG91dCA9ICR0aGlzLT5tYWtlT3V0cHV0QmxvY2soVHlwZTo6VF9DT01NRU5UKTsKICAgICAgICAkb3V0LT5saW5lc1tdID0gaXNfc3RyaW5nKCRibG9ja1sxXSkgPyAkYmxvY2tbMV0gOiAkdGhpcy0+Y29tcGlsZVZhbHVlKCRibG9ja1sxXSk7CgogICAgICAgICR0aGlzLT5zY29wZS0+Y2hpbGRyZW5bXSA9ICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBFdmFsdWF0ZSBzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9ycwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV2YWxTZWxlY3RvcnMoJHNlbGVjdG9ycykKICAgIHsKICAgICAgICAkdGhpcy0+c2hvdWxkRXZhbHVhdGUgPSBmYWxzZTsKCiAgICAgICAgJHNlbGVjdG9ycyA9IGFycmF5X21hcChbJHRoaXMsICdldmFsU2VsZWN0b3InXSwgJHNlbGVjdG9ycyk7CgogICAgICAgIC8vIGFmdGVyIGV2YWx1YXRpbmcgaW50ZXJwb2xhdGVzLCB3ZSBtaWdodCBuZWVkIGEgc2Vjb25kIHBhc3MKICAgICAgICBpZiAoJHRoaXMtPnNob3VsZEV2YWx1YXRlKSB7CiAgICAgICAgICAgICRzZWxlY3RvcnMgPSAkdGhpcy0+cmV2ZXJ0U2VsZlNlbGVjdG9yKCRzZWxlY3RvcnMpOwogICAgICAgICAgICAkYnVmZmVyID0gJHRoaXMtPmNvbGxhcHNlU2VsZWN0b3JzKCRzZWxlY3RvcnMpOwogICAgICAgICAgICAkcGFyc2VyID0gJHRoaXMtPnBhcnNlckZhY3RvcnkoX19NRVRIT0RfXyk7CgogICAgICAgICAgICBpZiAoJHBhcnNlci0+cGFyc2VTZWxlY3RvcigkYnVmZmVyLCAkbmV3U2VsZWN0b3JzKSkgewogICAgICAgICAgICAgICAgJHNlbGVjdG9ycyA9IGFycmF5X21hcChbJHRoaXMsICdldmFsU2VsZWN0b3InXSwgJG5ld1NlbGVjdG9ycyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2VsZWN0b3JzOwogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGUgc2VsZWN0b3IKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9yCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXZhbFNlbGVjdG9yKCRzZWxlY3RvcikKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfbWFwKFskdGhpcywgJ2V2YWxTZWxlY3RvclBhcnQnXSwgJHNlbGVjdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIEV2YWx1YXRlIHNlbGVjdG9yIHBhcnQ7IHJlcGxhY2VzIGFsbCB0aGUgaW50ZXJwb2xhdGVzLCBzdHJpcHBpbmcgcXVvdGVzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXZhbFNlbGVjdG9yUGFydCgkcGFydCkKICAgIHsKICAgICAgICBmb3JlYWNoICgkcGFydCBhcyAmJHApIHsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRwKSAmJiAoJHBbMF0gPT09IFR5cGU6OlRfSU5URVJQT0xBVEUgfHwgJHBbMF0gPT09IFR5cGU6OlRfU1RSSU5HKSkgewogICAgICAgICAgICAgICAgJHAgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRwKTsKCiAgICAgICAgICAgICAgICAvLyBmb3JjZSByZS1ldmFsdWF0aW9uCiAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRwLCAnJicpICE9PSBmYWxzZSB8fCBzdHJwb3MoJHAsICcsJykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNob3VsZEV2YWx1YXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKGlzX3N0cmluZygkcCkgJiYgc3RybGVuKCRwKSA+PSAyICYmCiAgICAgICAgICAgICAgICAoJGZpcnN0ID0gJHBbMF0pICYmICgkZmlyc3QgPT09ICciJyB8fCAkZmlyc3QgPT09ICInIikgJiYKICAgICAgICAgICAgICAgIHN1YnN0cigkcCwgLTEpID09PSAkZmlyc3QKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcCA9IHN1YnN0cigkcCwgMSwgLTEpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmZsYXR0ZW5TZWxlY3RvclNpbmdsZSgkcGFydCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2xsYXBzZSBzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkc2VsZWN0b3JzCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkc2VsZWN0b3JGb3JtYXQKICAgICAqICAgaWYgZmFsc2UgcmV0dXJuIGEgY29sbGFwc2VkIHN0cmluZwogICAgICogICBpZiB0cnVlIHJldHVybiBhbiBhcnJheSBkZXNjcmlwdGlvbiBvZiBhIHN0cnVjdHVyZWQgc2VsZWN0b3IKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29sbGFwc2VTZWxlY3RvcnMoJHNlbGVjdG9ycywgJHNlbGVjdG9yRm9ybWF0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHBhcnRzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yKSB7CiAgICAgICAgICAgICRvdXRwdXQgPSBbXTsKICAgICAgICAgICAgJGdsdWVOZXh0ID0gZmFsc2U7CgogICAgICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3IgYXMgJG5vZGUpIHsKICAgICAgICAgICAgICAgICRjb21wb3VuZCA9ICcnOwoKICAgICAgICAgICAgICAgIGFycmF5X3dhbGtfcmVjdXJzaXZlKAogICAgICAgICAgICAgICAgICAgICRub2RlLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUsICRrZXkpIHVzZSAoJiRjb21wb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29tcG91bmQgLj0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCRzZWxlY3RvckZvcm1hdCAmJiAkdGhpcy0+aXNJbW1lZGlhdGVSZWxhdGlvbnNoaXBDb21iaW5hdG9yKCRjb21wb3VuZCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQoJG91dHB1dCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG91dHB1dFtjb3VudCgkb3V0cHV0KSAtIDFdIC49ICcgJyAuICRjb21wb3VuZDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkb3V0cHV0W10gPSAkY29tcG91bmQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRnbHVlTmV4dCA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGdsdWVOZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dFtjb3VudCgkb3V0cHV0KSAtIDFdIC49ICcgJyAuICRjb21wb3VuZDsKICAgICAgICAgICAgICAgICAgICAkZ2x1ZU5leHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dFtdID0gJGNvbXBvdW5kOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHNlbGVjdG9yRm9ybWF0KSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkb3V0cHV0IGFzICYkbykgewogICAgICAgICAgICAgICAgICAgICRvID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgWyRvXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gW1R5cGU6OlRfTElTVCwgJyAnLCAkb3V0cHV0XTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRvdXRwdXQgPSBpbXBsb2RlKCcgJywgJG91dHB1dCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXJ0c1tdID0gJG91dHB1dDsKICAgICAgICB9CgogICAgICAgIGlmICgkc2VsZWN0b3JGb3JtYXQpIHsKICAgICAgICAgICAgJHBhcnRzID0gW1R5cGU6OlRfTElTVCwgJywnLCAkcGFydHNdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwYXJ0cyA9IGltcGxvZGUoJywgJywgJHBhcnRzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGFydHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBkb3duIHRoZSBzZWxlY3RvciBhbmQgcmV2ZXJ0IFtzZWxmXSB0byAiJiIgYmVmb3JlIGEgcmVwYXJzaW5nCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiByZXZlcnRTZWxmU2VsZWN0b3IoJHNlbGVjdG9ycykKICAgIHsKICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3JzIGFzICYkcGFydCkgewogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHBhcnQpKSB7CiAgICAgICAgICAgICAgICBpZiAoJHBhcnQgPT09IFtUeXBlOjpUX1NFTEZdKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcnQgPSAnJic7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRwYXJ0ID0gJHRoaXMtPnJldmVydFNlbGZTZWxlY3RvcigkcGFydCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2VsZWN0b3JzOwogICAgfQoKICAgIC8qKgogICAgICogRmxhdHRlbiBzZWxlY3RvciBzaW5nbGU7IGpvaW5zIHRvZ2V0aGVyIC5jbGFzc2VzIGFuZCAjaWRzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzaW5nbGUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmbGF0dGVuU2VsZWN0b3JTaW5nbGUoJHNpbmdsZSkKICAgIHsKICAgICAgICAkam9pbmVkID0gW107CgogICAgICAgIGZvcmVhY2ggKCRzaW5nbGUgYXMgJHBhcnQpIHsKICAgICAgICAgICAgaWYgKGVtcHR5KCRqb2luZWQpIHx8CiAgICAgICAgICAgICAgICAhIGlzX3N0cmluZygkcGFydCkgfHwKICAgICAgICAgICAgICAgIHByZWdfbWF0Y2goJy9bXFsuOiMlXS8nLCAkcGFydCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkam9pbmVkW10gPSAkcGFydDsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNfYXJyYXkoZW5kKCRqb2luZWQpKSkgewogICAgICAgICAgICAgICAgJGpvaW5lZFtdID0gJHBhcnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkam9pbmVkW2NvdW50KCRqb2luZWQpIC0gMV0gLj0gJHBhcnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkam9pbmVkOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSBzZWxlY3RvciB0byBzdHJpbmc7IHNlbGYoJikgc2hvdWxkIGhhdmUgYmVlbiByZXBsYWNlZCBieSBub3cKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRzZWxlY3RvcgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlU2VsZWN0b3IoJHNlbGVjdG9yKQogICAgewogICAgICAgIGlmICghIGlzX2FycmF5KCRzZWxlY3RvcikpIHsKICAgICAgICAgICAgcmV0dXJuICRzZWxlY3RvcjsgLy8gbWVkaWEgYW5kIHRoZSBsaWtlCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgKICAgICAgICAgICAgJyAnLAogICAgICAgICAgICBhcnJheV9tYXAoCiAgICAgICAgICAgICAgICBbJHRoaXMsICdjb21waWxlU2VsZWN0b3JQYXJ0J10sCiAgICAgICAgICAgICAgICAkc2VsZWN0b3IKICAgICAgICAgICAgKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIHNlbGVjdG9yIHBhcnQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBpZWNlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVTZWxlY3RvclBhcnQoJHBpZWNlKQogICAgewogICAgICAgIGZvcmVhY2ggKCRwaWVjZSBhcyAmJHApIHsKICAgICAgICAgICAgaWYgKCEgaXNfYXJyYXkoJHApKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3dpdGNoICgkcFswXSkgewogICAgICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NFTEY6CiAgICAgICAgICAgICAgICAgICAgJHAgPSAnJic7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkcCA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgkcGllY2UpOwogICAgfQoKICAgIC8qKgogICAgICogSGFzIHNlbGVjdG9yIHBsYWNlaG9sZGVyPwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkc2VsZWN0b3IKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGhhc1NlbGVjdG9yUGxhY2Vob2xkZXIoJHNlbGVjdG9yKQogICAgewogICAgICAgIGlmICghIGlzX2FycmF5KCRzZWxlY3RvcikpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHNlbGVjdG9yIGFzICRwYXJ0cykgewogICAgICAgICAgICBmb3JlYWNoICgkcGFydHMgYXMgJHBhcnQpIHsKICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oJHBhcnQpICYmICclJyA9PT0gJHBhcnRbMF0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwdXNoQ2FsbFN0YWNrKCRuYW1lID0gJycpCiAgICB7CiAgICAgICAgJHRoaXMtPmNhbGxTdGFja1tdID0gWwogICAgICAgICAgJ24nID0+ICRuYW1lLAogICAgICAgICAgUGFyc2VyOjpTT1VSQ0VfSU5ERVggPT4gJHRoaXMtPnNvdXJjZUluZGV4LAogICAgICAgICAgUGFyc2VyOjpTT1VSQ0VfTElORSA9PiAkdGhpcy0+c291cmNlTGluZSwKICAgICAgICAgIFBhcnNlcjo6U09VUkNFX0NPTFVNTiA9PiAkdGhpcy0+c291cmNlQ29sdW1uCiAgICAgICAgXTsKCiAgICAgICAgLy8gaW5maW5pdGUgY2FsbGluZyBsb29wCiAgICAgICAgaWYgKGNvdW50KCR0aGlzLT5jYWxsU3RhY2spID4gMjUwMDApIHsKICAgICAgICAgICAgLy8gbm90IGRpc3BsYXllZCBidXQgeW91IGNhbiB2YXJfZHVtcCBpdCB0byBkZWVwIGRlYnVnCiAgICAgICAgICAgICRtc2cgPSAkdGhpcy0+Y2FsbFN0YWNrTWVzc2FnZSh0cnVlLCAxMDApOwogICAgICAgICAgICAkbXNnID0gIkluZmluaXRlIGNhbGxpbmcgbG9vcCI7CiAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCRtc2cpOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcG9wQ2FsbFN0YWNrKCkKICAgIHsKICAgICAgICBhcnJheV9wb3AoJHRoaXMtPmNhbGxTdGFjayk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIGNoaWxkcmVuIGFuZCByZXR1cm4gcmVzdWx0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdG1zCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJG91dAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0cmFjZU5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVDaGlsZHJlbigkc3RtcywgT3V0cHV0QmxvY2sgJG91dCwgJHRyYWNlTmFtZSA9ICcnKQogICAgewogICAgICAgICR0aGlzLT5wdXNoQ2FsbFN0YWNrKCR0cmFjZU5hbWUpOwoKICAgICAgICBmb3JlYWNoICgkc3RtcyBhcyAkc3RtKSB7CiAgICAgICAgICAgICRyZXQgPSAkdGhpcy0+Y29tcGlsZUNoaWxkKCRzdG0sICRvdXQpOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRyZXQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHJldDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnBvcENhbGxTdGFjaygpOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgY2hpbGRyZW4gYW5kIHRocm93IGV4Y2VwdGlvbiBpZiB1bmV4cGVjdGVkIEByZXR1cm4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0bXMKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkb3V0CiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCbG9jayAgICAgICAgICAgICAgICAgJHNlbGZQYXJlbnQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJhY2VOYW1lCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlQ2hpbGRyZW5Ob1JldHVybigkc3RtcywgT3V0cHV0QmxvY2sgJG91dCwgJHNlbGZQYXJlbnQgPSBudWxsLCAkdHJhY2VOYW1lID0gJycpCiAgICB7CiAgICAgICAgJHRoaXMtPnB1c2hDYWxsU3RhY2soJHRyYWNlTmFtZSk7CgogICAgICAgIGZvcmVhY2ggKCRzdG1zIGFzICRzdG0pIHsKICAgICAgICAgICAgaWYgKCRzZWxmUGFyZW50ICYmIGlzc2V0KCRzdG1bMV0pICYmIGlzX29iamVjdCgkc3RtWzFdKSAmJiAkc3RtWzFdIGluc3RhbmNlb2YgQmxvY2spIHsKICAgICAgICAgICAgICAgICRzdG1bMV0tPnNlbGZQYXJlbnQgPSAkc2VsZlBhcmVudDsKICAgICAgICAgICAgICAgICRyZXQgPSAkdGhpcy0+Y29tcGlsZUNoaWxkKCRzdG0sICRvdXQpOwogICAgICAgICAgICAgICAgJHN0bVsxXS0+c2VsZlBhcmVudCA9IG51bGw7CiAgICAgICAgICAgIH0gZWxzZWlmICgkc2VsZlBhcmVudCAmJiAkc3RtWzBdID09PSBUWVBFOjpUX0lOQ0xVREUpIHsKICAgICAgICAgICAgICAgICRzdG1bJ3NlbGZQYXJlbnQnXSA9ICRzZWxmUGFyZW50OwogICAgICAgICAgICAgICAgJHJldCA9ICR0aGlzLT5jb21waWxlQ2hpbGQoJHN0bSwgJG91dCk7CiAgICAgICAgICAgICAgICB1bnNldCgkc3RtWydzZWxmUGFyZW50J10pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHJldCA9ICR0aGlzLT5jb21waWxlQ2hpbGQoJHN0bSwgJG91dCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkcmV0KSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoJ0ByZXR1cm4gbWF5IG9ubHkgYmUgdXNlZCB3aXRoaW4gYSBmdW5jdGlvbicpOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnBvcENhbGxTdGFjaygpOwogICAgfQoKCiAgICAvKioKICAgICAqIGV2YWx1YXRlIG1lZGlhIHF1ZXJ5IDogY29tcGlsZSBpbnRlcm5hbCB2YWx1ZSBrZWVwaW5nIHRoZSBzdHJ1Y3R1cmUgaW5jaGFuZ2VkCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRxdWVyeUxpc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBldmFsdWF0ZU1lZGlhUXVlcnkoJHF1ZXJ5TGlzdCkKICAgIHsKICAgICAgICBzdGF0aWMgJHBhcnNlciA9IG51bGw7CiAgICAgICAgJG91dFF1ZXJ5TGlzdCA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRxdWVyeUxpc3QgYXMgJGtxbCA9PiAkcXVlcnkpIHsKICAgICAgICAgICAgJHNob3VsZFJlcGFyc2UgPSBmYWxzZTsKICAgICAgICAgICAgZm9yZWFjaCAoJHF1ZXJ5IGFzICRrcSA9PiAkcSkgewogICAgICAgICAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgY291bnQoJHEpOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcVskaV0pOwoKICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcGFyc2VyIGhhZCBubyBtZWFuIHRvIGtub3cgaWYgbWVkaWEgdHlwZSBvciBleHByZXNzaW9uIGlmIGl0IHdhcyBhbiBpbnRlcnBvbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgLy8gc28geW91IG5lZWQgdG8gcmVwYXJzZSBpZiB0aGUgVF9NRURJQV9UWVBFIGxvb2tzIGxpa2UgYW55dGhpbmcgZWxzZSBhIG1lZGlhIHR5cGUKICAgICAgICAgICAgICAgICAgICBpZiAoJHFbMF0gPT0gVHlwZTo6VF9NRURJQV9UWVBFICYmCiAgICAgICAgICAgICAgICAgICAgICAgIChzdHJwb3MoJHZhbHVlLCAnKCcpICE9PSBmYWxzZSB8fAogICAgICAgICAgICAgICAgICAgICAgICBzdHJwb3MoJHZhbHVlLCAnKScpICE9PSBmYWxzZSB8fAogICAgICAgICAgICAgICAgICAgICAgICBzdHJwb3MoJHZhbHVlLCAnOicpICE9PSBmYWxzZSB8fAogICAgICAgICAgICAgICAgICAgICAgICBzdHJwb3MoJHZhbHVlLCAnLCcpICE9PSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNob3VsZFJlcGFyc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5TGlzdFska3FsXVska3FdWyRpXSA9IFtUeXBlOjpUX0tFWVdPUkQsICR2YWx1ZV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRzaG91bGRSZXBhcnNlKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNfbnVsbCgkcGFyc2VyKSkgewogICAgICAgICAgICAgICAgICAgICRwYXJzZXIgPSAkdGhpcy0+cGFyc2VyRmFjdG9yeShfX01FVEhPRF9fKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRxdWVyeVN0cmluZyA9ICR0aGlzLT5jb21waWxlTWVkaWFRdWVyeShbJHF1ZXJ5TGlzdFska3FsXV0pOwogICAgICAgICAgICAgICAgJHF1ZXJ5U3RyaW5nID0gcmVzZXQoJHF1ZXJ5U3RyaW5nKTsKICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJHF1ZXJ5U3RyaW5nLCAnQG1lZGlhICcpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5U3RyaW5nID0gc3Vic3RyKCRxdWVyeVN0cmluZywgNyk7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJpZXMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBpZiAoJHBhcnNlci0+cGFyc2VNZWRpYVF1ZXJ5TGlzdCgkcXVlcnlTdHJpbmcsICRxdWVyaWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcmllcyA9ICR0aGlzLT5ldmFsdWF0ZU1lZGlhUXVlcnkoJHF1ZXJpZXNbMl0pOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoY291bnQoJHF1ZXJpZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb3V0UXVlcnlMaXN0W10gPSBhcnJheV9zaGlmdCgkcXVlcmllcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRvdXRRdWVyeUxpc3RbXSA9ICRxdWVyeUxpc3RbJGtxbF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dFF1ZXJ5TGlzdDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgbWVkaWEgcXVlcnkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHF1ZXJ5TGlzdAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVNZWRpYVF1ZXJ5KCRxdWVyeUxpc3QpCiAgICB7CiAgICAgICAgJHN0YXJ0ID0gJ0BtZWRpYSAnOwogICAgICAgICRkZWZhdWx0ID0gdHJpbSgkc3RhcnQpOwogICAgICAgICRvdXQgPSBbXTsKICAgICAgICAkY3VycmVudCA9ICIiOwoKICAgICAgICBmb3JlYWNoICgkcXVlcnlMaXN0IGFzICRxdWVyeSkgewogICAgICAgICAgICAkdHlwZSA9IG51bGw7CiAgICAgICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICAgICAgJG1lZGlhVHlwZU9ubHkgPSB0cnVlOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHF1ZXJ5IGFzICRxKSB7CiAgICAgICAgICAgICAgICBpZiAoJHFbMF0gIT09IFR5cGU6OlRfTUVESUFfVFlQRSkgewogICAgICAgICAgICAgICAgICAgICRtZWRpYVR5cGVPbmx5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRxdWVyeSBhcyAkcSkgewogICAgICAgICAgICAgICAgc3dpdGNoICgkcVswXSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9NRURJQV9UWVBFOgogICAgICAgICAgICAgICAgICAgICAgICAkbmV3VHlwZSA9IGFycmF5X21hcChbJHRoaXMsICdjb21waWxlVmFsdWUnXSwgYXJyYXlfc2xpY2UoJHEsIDEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tYmluaW5nIG5vdCBhbmQgYW55dGhpbmcgZWxzZSB0aGFuIG1lZGlhIHR5cGUgaXMgdG9vIHJpc2t5IGFuZCBzaG91bGQgYmUgYXZvaWRlZAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISAkbWVkaWFUeXBlT25seSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluX2FycmF5KFR5cGU6OlRfTk9ULCAkbmV3VHlwZSkgfHwgKCR0eXBlICYmIGluX2FycmF5KFR5cGU6OlRfTk9ULCAkdHlwZSkgKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRwYXJ0cywgaW1wbG9kZSgnICcsIGFycmF5X2ZpbHRlcigkdHlwZSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGVtcHR5KCRwYXJ0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmxlbigkY3VycmVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50IC49ICR0aGlzLT5mb3JtYXR0ZXItPnRhZ1NlcGFyYXRvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnQgLj0gaW1wbG9kZSgnIGFuZCAnLCAkcGFydHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjdXJyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXRbXSA9ICRzdGFydCAuICRjdXJyZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnQgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbmV3VHlwZSA9PT0gWydhbGwnXSAmJiAkZGVmYXVsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHQgPSAkc3RhcnQgLiAnYWxsJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsIGNhbiBiZSBzYWZlbHkgaWdub3JlZCBhbmQgbWl4ZWQgd2l0aCB3aGF0ZXZlciBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbmV3VHlwZSAhPT0gWydhbGwnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkdGhpcy0+bWVyZ2VNZWRpYVR5cGVzKCR0eXBlLCAkbmV3VHlwZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVyZ2UgZmFpbGVkIDogaWdub3JlIHRoaXMgcXVlcnkgdGhhdCBpcyBub3QgdmFsaWQsIHNraXAgdG8gdGhlIG5leHQgb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0cyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdCA9ICcnOyAvLyBpZiBldmVyeXRoaW5nIGZhaWwsIG5vIEBtZWRpYSBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0eXBlID0gJG5ld1R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9NRURJQV9FWFBSRVNTSU9OOgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHFbMl0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICcoJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5mb3JtYXR0ZXItPmFzc2lnblNlcGFyYXRvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcVsyXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICcpJzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJygnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+Y29tcGlsZVZhbHVlKCRxWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyknOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICBjYXNlIFR5cGU6OlRfTUVESUFfVkFMVUU6CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHR5cGUpIHsKICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHBhcnRzLCBpbXBsb2RlKCcgJywgYXJyYXlfZmlsdGVyKCR0eXBlKSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISBlbXB0eSgkcGFydHMpKSB7CiAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRjdXJyZW50KSkgewogICAgICAgICAgICAgICAgICAgICRjdXJyZW50IC49ICR0aGlzLT5mb3JtYXR0ZXItPnRhZ1NlcGFyYXRvcjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkY3VycmVudCAuPSBpbXBsb2RlKCcgYW5kICcsICRwYXJ0cyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkY3VycmVudCkgewogICAgICAgICAgICAkb3V0W10gPSAkc3RhcnQgLiAkY3VycmVudDsKICAgICAgICB9CgogICAgICAgIC8vIG5vIEBtZWRpYSB0eXBlIGV4Y2VwdCBhbGwsIGFuZCBubyBjb25mbGljdD8KICAgICAgICBpZiAoISAkb3V0ICYmICRkZWZhdWx0KSB7CiAgICAgICAgICAgICRvdXRbXSA9ICRkZWZhdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBNZXJnZSBkaXJlY3QgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHNlbGVjdG9ycwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkc2VsZWN0b3JzMQogICAgICogQHBhcmFtIGFycmF5ICRzZWxlY3RvcnMyCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWVyZ2VEaXJlY3RSZWxhdGlvbnNoaXBzKCRzZWxlY3RvcnMxLCAkc2VsZWN0b3JzMikKICAgIHsKICAgICAgICBpZiAoZW1wdHkoJHNlbGVjdG9yczEpIHx8IGVtcHR5KCRzZWxlY3RvcnMyKSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXlfbWVyZ2UoJHNlbGVjdG9yczEsICRzZWxlY3RvcnMyKTsKICAgICAgICB9CgogICAgICAgICRwYXJ0MSA9IGVuZCgkc2VsZWN0b3JzMSk7CiAgICAgICAgJHBhcnQyID0gZW5kKCRzZWxlY3RvcnMyKTsKCiAgICAgICAgaWYgKCEgJHRoaXMtPmlzSW1tZWRpYXRlUmVsYXRpb25zaGlwQ29tYmluYXRvcigkcGFydDFbMF0pICYmICRwYXJ0MSAhPT0gJHBhcnQyKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheV9tZXJnZSgkc2VsZWN0b3JzMSwgJHNlbGVjdG9yczIpOwogICAgICAgIH0KCiAgICAgICAgJG1lcmdlZCA9IFtdOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICRwYXJ0MSA9IGFycmF5X3BvcCgkc2VsZWN0b3JzMSk7CiAgICAgICAgICAgICRwYXJ0MiA9IGFycmF5X3BvcCgkc2VsZWN0b3JzMik7CgogICAgICAgICAgICBpZiAoISAkdGhpcy0+aXNJbW1lZGlhdGVSZWxhdGlvbnNoaXBDb21iaW5hdG9yKCRwYXJ0MVswXSkgJiYgJHBhcnQxICE9PSAkcGFydDIpIHsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+aXNJbW1lZGlhdGVSZWxhdGlvbnNoaXBDb21iaW5hdG9yKHJlc2V0KCRtZXJnZWQpWzBdKSkgewogICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJG1lcmdlZCwgWyRwYXJ0MVswXSAuICRwYXJ0MlswXV0pOwogICAgICAgICAgICAgICAgICAgICRtZXJnZWQgPSBhcnJheV9tZXJnZSgkc2VsZWN0b3JzMSwgJHNlbGVjdG9yczIsICRtZXJnZWQpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbWVyZ2VkID0gYXJyYXlfbWVyZ2UoJHNlbGVjdG9yczEsIFskcGFydDFdLCAkc2VsZWN0b3JzMiwgWyRwYXJ0Ml0sICRtZXJnZWQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRtZXJnZWQsICRwYXJ0MSk7CiAgICAgICAgfSB3aGlsZSAoISBlbXB0eSgkc2VsZWN0b3JzMSkgJiYgISBlbXB0eSgkc2VsZWN0b3JzMikpOwoKICAgICAgICByZXR1cm4gJG1lcmdlZDsKICAgIH0KCiAgICAvKioKICAgICAqIE1lcmdlIG1lZGlhIHR5cGVzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR0eXBlMQogICAgICogQHBhcmFtIGFycmF5ICR0eXBlMgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWVyZ2VNZWRpYVR5cGVzKCR0eXBlMSwgJHR5cGUyKQogICAgewogICAgICAgIGlmIChlbXB0eSgkdHlwZTEpKSB7CiAgICAgICAgICAgIHJldHVybiAkdHlwZTI7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJHR5cGUyKSkgewogICAgICAgICAgICByZXR1cm4gJHR5cGUxOwogICAgICAgIH0KCiAgICAgICAgJG0xID0gJyc7CiAgICAgICAgJHQxID0gJyc7CgogICAgICAgIGlmIChjb3VudCgkdHlwZTEpID4gMSkgewogICAgICAgICAgICAkbTE9IHN0cnRvbG93ZXIoJHR5cGUxWzBdKTsKICAgICAgICAgICAgJHQxPSBzdHJ0b2xvd2VyKCR0eXBlMVsxXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHQxID0gc3RydG9sb3dlcigkdHlwZTFbMF0pOwogICAgICAgIH0KCiAgICAgICAgJG0yID0gJyc7CiAgICAgICAgJHQyID0gJyc7CgogICAgICAgIGlmIChjb3VudCgkdHlwZTIpID4gMSkgewogICAgICAgICAgICAkbTIgPSBzdHJ0b2xvd2VyKCR0eXBlMlswXSk7CiAgICAgICAgICAgICR0MiA9IHN0cnRvbG93ZXIoJHR5cGUyWzFdKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdDIgPSBzdHJ0b2xvd2VyKCR0eXBlMlswXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoKCRtMSA9PT0gVHlwZTo6VF9OT1QpIF4gKCRtMiA9PT0gVHlwZTo6VF9OT1QpKSB7CiAgICAgICAgICAgIGlmICgkdDEgPT09ICR0MikgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICAkbTEgPT09IFR5cGU6OlRfTk9UID8gJG0yIDogJG0xLAogICAgICAgICAgICAgICAgJG0xID09PSBUeXBlOjpUX05PVCA/ICR0MiA6ICR0MSwKICAgICAgICAgICAgXTsKICAgICAgICB9CgogICAgICAgIGlmICgkbTEgPT09IFR5cGU6OlRfTk9UICYmICRtMiA9PT0gVHlwZTo6VF9OT1QpIHsKICAgICAgICAgICAgLy8gQ1NTIGhhcyBubyB3YXkgb2YgcmVwcmVzZW50aW5nICJuZWl0aGVyIHNjcmVlbiBub3IgcHJpbnQiCiAgICAgICAgICAgIGlmICgkdDEgIT09ICR0MikgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9OT1QsICR0MV07CiAgICAgICAgfQoKICAgICAgICBpZiAoJHQxICE9PSAkdDIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyB0MSA9PSB0MiwgbmVpdGhlciBtMSBub3IgbTIgYXJlICJub3QiCiAgICAgICAgcmV0dXJuIFtlbXB0eSgkbTEpPyAkbTIgOiAkbTEsICR0MV07CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlIGltcG9ydDsgcmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSB3YXMgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgaW1wb3J0ZWQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJhd1BhdGgKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkb3V0CiAgICAgKiBAcGFyYW0gYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9uY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVJbXBvcnQoJHJhd1BhdGgsIE91dHB1dEJsb2NrICRvdXQsICRvbmNlID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCRyYXdQYXRoWzBdID09PSBUeXBlOjpUX1NUUklORykgewogICAgICAgICAgICAkcGF0aCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkcmF3UGF0aCk7CgogICAgICAgICAgICBpZiAoJHBhdGggPSAkdGhpcy0+ZmluZEltcG9ydCgkcGF0aCkpIHsKICAgICAgICAgICAgICAgIGlmICghICRvbmNlIHx8ICEgaW5fYXJyYXkoJHBhdGgsICR0aGlzLT5pbXBvcnRlZEZpbGVzKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5pbXBvcnRGaWxlKCRwYXRoLCAkb3V0KTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW1wb3J0ZWRGaWxlc1tdID0gJHBhdGg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkcmF3UGF0aFswXSA9PT0gVHlwZTo6VF9MSVNUKSB7CiAgICAgICAgICAgIC8vIGhhbmRsZSBhIGxpc3Qgb2Ygc3RyaW5ncwogICAgICAgICAgICBpZiAoY291bnQoJHJhd1BhdGhbMl0pID09PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRyYXdQYXRoWzJdIGFzICRwYXRoKSB7CiAgICAgICAgICAgICAgICBpZiAoJHBhdGhbMF0gIT09IFR5cGU6OlRfU1RSSU5HKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkcmF3UGF0aFsyXSBhcyAkcGF0aCkgewogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVJbXBvcnQoJHBhdGgsICRvdXQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCgogICAgLyoqCiAgICAgKiBBcHBlbmQgYSByb290IGRpcmVjdGl2ZSBsaWtlIEBpbXBvcnQgb3IgQGNoYXJzZXQgYXMgbmVhciBhcyB0aGUgcG9zc2libGUgZnJvbSB0aGUgc291cmNlIGNvZGUKICAgICAqIChrZWVwaW5nIGJlZm9yZSBjb21tZW50cywgQGltcG9ydCBhbmQgQGNoYXJzZXQgY29taW5nIGJlZm9yZSBpbiB0aGUgc291cmNlIGNvZGUpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGluZQogICAgICogQHBhcmFtIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkb3V0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbGxvd2VkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcHBlbmRSb290RGlyZWN0aXZlKCRsaW5lLCAkb3V0LCAkYWxsb3dlZCA9IFtUeXBlOjpUX0NPTU1FTlRdKQogICAgewogICAgICAgICRyb290ID0gJG91dDsKCiAgICAgICAgd2hpbGUgKCRyb290LT5wYXJlbnQpIHsKICAgICAgICAgICAgJHJvb3QgPSAkcm9vdC0+cGFyZW50OwogICAgICAgIH0KCiAgICAgICAgJGkgPSAwOwoKICAgICAgICB3aGlsZSAoJGkgPCBjb3VudCgkcm9vdC0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgIGlmICghIGlzc2V0KCRyb290LT5jaGlsZHJlblskaV0tPnR5cGUpIHx8ICEgaW5fYXJyYXkoJHJvb3QtPmNoaWxkcmVuWyRpXS0+dHlwZSwgJGFsbG93ZWQpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGkrKzsKICAgICAgICB9CgogICAgICAgIC8vIHJlbW92ZSBpbmNvbXBhdGlibGUgY2hpbGRyZW4gZnJvbSB0aGUgYm90dG9tIG9mIHRoZSBsaXN0CiAgICAgICAgJHNhdmVDaGlsZHJlbiA9IFtdOwoKICAgICAgICB3aGlsZSAoJGkgPCBjb3VudCgkcm9vdC0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgICRzYXZlQ2hpbGRyZW5bXSA9IGFycmF5X3BvcCgkcm9vdC0+Y2hpbGRyZW4pOwogICAgICAgIH0KCiAgICAgICAgLy8gaW5zZXJ0IHRoZSBkaXJlY3RpdmUgYXMgYSBjb21tZW50CiAgICAgICAgJGNoaWxkID0gJHRoaXMtPm1ha2VPdXRwdXRCbG9jayhUeXBlOjpUX0NPTU1FTlQpOwogICAgICAgICRjaGlsZC0+bGluZXNbXSA9ICRsaW5lOwogICAgICAgICRjaGlsZC0+c291cmNlTmFtZSA9ICR0aGlzLT5zb3VyY2VOYW1lc1skdGhpcy0+c291cmNlSW5kZXhdOwogICAgICAgICRjaGlsZC0+c291cmNlTGluZSA9ICR0aGlzLT5zb3VyY2VMaW5lOwogICAgICAgICRjaGlsZC0+c291cmNlQ29sdW1uID0gJHRoaXMtPnNvdXJjZUNvbHVtbjsKCiAgICAgICAgJHJvb3QtPmNoaWxkcmVuW10gPSAkY2hpbGQ7CgogICAgICAgIC8vIHJlcHVzaCBjaGlsZHJlbgogICAgICAgIHdoaWxlIChjb3VudCgkc2F2ZUNoaWxkcmVuKSkgewogICAgICAgICAgICAkcm9vdC0+Y2hpbGRyZW5bXSA9IGFycmF5X3BvcCgkc2F2ZUNoaWxkcmVuKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBlbmQgbGluZXMgdG8gdGhlIGNvdXJyZW50IG91dHB1dCBibG9jazoKICAgICAqIGRpcmVjdGx5IHRvIHRoZSBibG9jayBvciB0aHJvdWdoIGEgY2hpbGQgaWYgbmVjZXNzYXJ5CiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRvdXQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsaW5lCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcHBlbmRPdXRwdXRMaW5lKE91dHB1dEJsb2NrICRvdXQsICR0eXBlLCAkbGluZSkKICAgIHsKICAgICAgICAkb3V0V3JpdGUgPSAmJG91dDsKCiAgICAgICAgaWYgKCR0eXBlID09PSBUeXBlOjpUX0NPTU1FTlQpIHsKICAgICAgICAgICAgJHBhcmVudCA9ICRvdXQtPnBhcmVudDsKCiAgICAgICAgICAgIGlmIChlbmQoJHBhcmVudC0+Y2hpbGRyZW4pICE9PSAkb3V0KSB7CiAgICAgICAgICAgICAgICAkb3V0V3JpdGUgPSAmJHBhcmVudC0+Y2hpbGRyZW5bY291bnQoJHBhcmVudC0+Y2hpbGRyZW4pLTFdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBjaGVjayBpZiBpdCdzIGEgZmxhdCBvdXRwdXQgb3Igbm90CiAgICAgICAgaWYgKGNvdW50KCRvdXQtPmNoaWxkcmVuKSkgewogICAgICAgICAgICAkbGFzdENoaWxkID0gJiRvdXQtPmNoaWxkcmVuW2NvdW50KCRvdXQtPmNoaWxkcmVuKSAtMV07CgogICAgICAgICAgICBpZiAoJGxhc3RDaGlsZC0+ZGVwdGggPT09ICRvdXQtPmRlcHRoICYmIGlzX251bGwoJGxhc3RDaGlsZC0+c2VsZWN0b3JzKSAmJiAhIGNvdW50KCRsYXN0Q2hpbGQtPmNoaWxkcmVuKSkgewogICAgICAgICAgICAgICAgJG91dFdyaXRlID0gJGxhc3RDaGlsZDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuZXh0TGluZXMgPSAkdGhpcy0+bWFrZU91dHB1dEJsb2NrKCR0eXBlKTsKICAgICAgICAgICAgICAgICRuZXh0TGluZXMtPnBhcmVudCA9ICRvdXQ7CiAgICAgICAgICAgICAgICAkbmV4dExpbmVzLT5kZXB0aCA9ICRvdXQtPmRlcHRoOwoKICAgICAgICAgICAgICAgICRvdXQtPmNoaWxkcmVuW10gPSAkbmV4dExpbmVzOwogICAgICAgICAgICAgICAgJG91dFdyaXRlID0gJiRuZXh0TGluZXM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRvdXRXcml0ZS0+bGluZXNbXSA9ICRsaW5lOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSBjaGlsZDsgcmV0dXJucyBhIHZhbHVlIHRvIGhhbHQgZXhlY3V0aW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGlsZAogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlQ2hpbGQoJGNoaWxkLCBPdXRwdXRCbG9jayAkb3V0KQogICAgewogICAgICAgIGlmIChpc3NldCgkY2hpbGRbUGFyc2VyOjpTT1VSQ0VfTElORV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VJbmRleCA9IGlzc2V0KCRjaGlsZFtQYXJzZXI6OlNPVVJDRV9JTkRFWF0pID8gJGNoaWxkW1BhcnNlcjo6U09VUkNFX0lOREVYXSA6IG51bGw7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VMaW5lID0gaXNzZXQoJGNoaWxkW1BhcnNlcjo6U09VUkNFX0xJTkVdKSA/ICRjaGlsZFtQYXJzZXI6OlNPVVJDRV9MSU5FXSA6IC0xOwogICAgICAgICAgICAkdGhpcy0+c291cmNlQ29sdW1uID0gaXNzZXQoJGNoaWxkW1BhcnNlcjo6U09VUkNFX0NPTFVNTl0pID8gJGNoaWxkW1BhcnNlcjo6U09VUkNFX0NPTFVNTl0gOiAtMTsKICAgICAgICB9IGVsc2VpZiAoaXNfYXJyYXkoJGNoaWxkKSAmJiBpc3NldCgkY2hpbGRbMV0tPnNvdXJjZUxpbmUpKSB7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VJbmRleCA9ICRjaGlsZFsxXS0+c291cmNlSW5kZXg7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VMaW5lID0gJGNoaWxkWzFdLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAkdGhpcy0+c291cmNlQ29sdW1uID0gJGNoaWxkWzFdLT5zb3VyY2VDb2x1bW47CiAgICAgICAgfSBlbHNlaWYgKCEgZW1wdHkoJG91dC0+c291cmNlTGluZSkgJiYgISBlbXB0eSgkb3V0LT5zb3VyY2VOYW1lKSkgewogICAgICAgICAgICAkdGhpcy0+c291cmNlTGluZSA9ICRvdXQtPnNvdXJjZUxpbmU7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VJbmRleCA9IGFycmF5X3NlYXJjaCgkb3V0LT5zb3VyY2VOYW1lLCAkdGhpcy0+c291cmNlTmFtZXMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zb3VyY2VJbmRleCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zb3VyY2VJbmRleCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoJGNoaWxkWzBdKSB7CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9TQ1NTUEhQX0lNUE9SVF9PTkNFOgogICAgICAgICAgICAgICAgJHJhd1BhdGggPSAkdGhpcy0+cmVkdWNlKCRjaGlsZFsxXSk7CgogICAgICAgICAgICAgICAgaWYgKCEgJHRoaXMtPmNvbXBpbGVJbXBvcnQoJHJhd1BhdGgsICRvdXQsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZFJvb3REaXJlY3RpdmUoJ0BpbXBvcnQgJyAuICR0aGlzLT5jb21waWxlVmFsdWUoJHJhd1BhdGgpIC4gJzsnLCAkb3V0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0lNUE9SVDoKICAgICAgICAgICAgICAgICRyYXdQYXRoID0gJHRoaXMtPnJlZHVjZSgkY2hpbGRbMV0pOwoKICAgICAgICAgICAgICAgIGlmICghICR0aGlzLT5jb21waWxlSW1wb3J0KCRyYXdQYXRoLCAkb3V0KSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmRSb290RGlyZWN0aXZlKCdAaW1wb3J0ICcgLiAkdGhpcy0+Y29tcGlsZVZhbHVlKCRyYXdQYXRoKSAuICc7JywgJG91dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9ESVJFQ1RJVkU6CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZURpcmVjdGl2ZSgkY2hpbGRbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQVRfUk9PVDoKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlQXRSb290KCRjaGlsZFsxXSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9NRURJQToKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlTWVkaWEoJGNoaWxkWzFdKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0JMT0NLOgogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVCbG9jaygkY2hpbGRbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQ0hBUlNFVDoKICAgICAgICAgICAgICAgIGlmICghICR0aGlzLT5jaGFyc2V0U2VlbikgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jaGFyc2V0U2VlbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZFJvb3REaXJlY3RpdmUoJ0BjaGFyc2V0ICcgLiAkdGhpcy0+Y29tcGlsZVZhbHVlKCRjaGlsZFsxXSkgLiAnOycsICRvdXQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQVNTSUdOOgogICAgICAgICAgICAgICAgbGlzdCgsICRuYW1lLCAkdmFsdWUpID0gJGNoaWxkOwoKICAgICAgICAgICAgICAgIGlmICgkbmFtZVswXSA9PT0gVHlwZTo6VF9WQVJJQUJMRSkgewogICAgICAgICAgICAgICAgICAgICRmbGFncyA9IGlzc2V0KCRjaGlsZFszXSkgPyAkY2hpbGRbM10gOiBbXTsKICAgICAgICAgICAgICAgICAgICAkaXNEZWZhdWx0ID0gaW5fYXJyYXkoJyFkZWZhdWx0JywgJGZsYWdzKTsKICAgICAgICAgICAgICAgICAgICAkaXNHbG9iYWwgPSBpbl9hcnJheSgnIWdsb2JhbCcsICRmbGFncyk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkaXNHbG9iYWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldCgkbmFtZVsxXSwgJHRoaXMtPnJlZHVjZSgkdmFsdWUpLCBmYWxzZSwgJHRoaXMtPnJvb3RFbnYsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHNob3VsZFNldCA9ICRpc0RlZmF1bHQgJiYKICAgICAgICAgICAgICAgICAgICAgICAgKCgkcmVzdWx0ID0gJHRoaXMtPmdldCgkbmFtZVsxXSwgZmFsc2UpKSA9PT0gbnVsbCB8fAogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID09PSBzdGF0aWM6OiRudWxsKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCEgJGlzRGVmYXVsdCB8fCAkc2hvdWxkU2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXQoJG5hbWVbMV0sICR0aGlzLT5yZWR1Y2UoJHZhbHVlKSwgdHJ1ZSwgbnVsbCwgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGNvbXBpbGVkTmFtZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJG5hbWUpOwoKICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzaG9ydGhhbmQgc3ludGF4OiBzaXplIC8gbGluZS1oZWlnaHQKICAgICAgICAgICAgICAgIGlmICgkY29tcGlsZWROYW1lID09PSAnZm9udCcgfHwgJGNvbXBpbGVkTmFtZSA9PT0gJ2dyaWQtcm93JyB8fCAkY29tcGlsZWROYW1lID09PSAnZ3JpZC1jb2x1bW4nKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9WQVJJQUJMRSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZm9udCB2YWx1ZSBjb21lcyBmcm9tIHZhcmlhYmxlLCB0aGUgY29udGVudCBpcyBhbHJlYWR5IHJlZHVjZWQKICAgICAgICAgICAgICAgICAgICAgICAgLy8gKGkuZS4sIGZvcm11bGFzIHdlcmUgYWxyZWFkeSBjYWxjdWxhdGVkKSwgc28gd2UgbmVlZCB0aGUgb3JpZ2luYWwgdW5yZWR1Y2VkIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5nZXQoJHZhbHVlWzFdLCB0cnVlLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRmb250VmFsdWU9JiR2YWx1ZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9MSVNUICYmICR2YWx1ZVsxXT09JywnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIGNhc2UgaWYgbW9yZSB0aGFuIG9uZSBmb250IGlzIGdpdmVuOiBleGFtcGxlOiAiZm9udDogNDAwIDFlbS8xLjMgYXJpYWwsaGVsdmV0aWNhIgogICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGhhbmRsZSB0aGUgZmlyc3QgbGlzdCBlbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICRmb250VmFsdWU9JiR2YWx1ZVsyXVswXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkZm9udFZhbHVlWzBdID09PSBUeXBlOjpUX0VYUFJFU1NJT04gJiYgJGZvbnRWYWx1ZVsxXSA9PT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb250VmFsdWUgPSAkdGhpcy0+ZXhwVG9TdHJpbmcoJGZvbnRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRmb250VmFsdWVbMF0gPT09IFR5cGU6OlRfTElTVCkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZm9udFZhbHVlWzJdIGFzICYkaXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpdGVtWzBdID09PSBUeXBlOjpUX0VYUFJFU1NJT04gJiYgJGl0ZW1bMV0gPT09ICcvJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtID0gJHRoaXMtPmV4cFRvU3RyaW5nKCRpdGVtKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgdmFsdWUgcmVkdWNlcyB0byBudWxsIGZyb20gc29tZXRoaW5nIGVsc2UgdGhlbgogICAgICAgICAgICAgICAgLy8gdGhlIHByb3BlcnR5IHNob3VsZCBiZSBkaXNjYXJkZWQKICAgICAgICAgICAgICAgIGlmICgkdmFsdWVbMF0gIT09IFR5cGU6OlRfTlVMTCkgewogICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5yZWR1Y2UoJHZhbHVlKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9OVUxMIHx8ICR2YWx1ZSA9PT0gc3RhdGljOjokbnVsbFN0cmluZykgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGNvbXBpbGVkVmFsdWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSk7CgogICAgICAgICAgICAgICAgJGxpbmUgPSAkdGhpcy0+Zm9ybWF0dGVyLT5wcm9wZXJ0eSgKICAgICAgICAgICAgICAgICAgICAkY29tcGlsZWROYW1lLAogICAgICAgICAgICAgICAgICAgICRjb21waWxlZFZhbHVlCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZE91dHB1dExpbmUoJG91dCwgVHlwZTo6VF9BU1NJR04sICRsaW5lKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0NPTU1FTlQ6CiAgICAgICAgICAgICAgICBpZiAoJG91dC0+dHlwZSA9PT0gVHlwZTo6VF9ST09UKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBpbGVDb21tZW50KCRjaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZE91dHB1dExpbmUoJG91dCwgVHlwZTo6VF9DT01NRU5ULCAkY2hpbGRbMV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTUlYSU46CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9GVU5DVElPTjoKICAgICAgICAgICAgICAgIGxpc3QoLCAkYmxvY2spID0gJGNoaWxkOwoKICAgICAgICAgICAgICAgICR0aGlzLT5zZXQoc3RhdGljOjokbmFtZXNwYWNlc1skYmxvY2stPnR5cGVdIC4gJGJsb2NrLT5uYW1lLCAkYmxvY2ssIHRydWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRVhURU5EOgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNoaWxkWzFdIGFzICRzZWwpIHsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0cyA9ICR0aGlzLT5ldmFsU2VsZWN0b3JzKFskc2VsXSk7CgogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRyZXN1bHRzIGFzICRyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB1c2UgdGhlIGZpcnN0IG9uZQogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gY3VycmVudCgkcmVzdWx0KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5wdXNoRXh0ZW5kcygkcmVzdWx0LCAkb3V0LT5zZWxlY3RvcnMsICRjaGlsZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfSUY6CiAgICAgICAgICAgICAgICBsaXN0KCwgJGlmKSA9ICRjaGlsZDsKCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmlzVHJ1dGh5KCR0aGlzLT5yZWR1Y2UoJGlmLT5jb25kLCB0cnVlKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBpbGVDaGlsZHJlbigkaWYtPmNoaWxkcmVuLCAkb3V0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkaWYtPmNhc2VzIGFzICRjYXNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRjYXNlLT50eXBlID09PSBUeXBlOjpUX0VMU0UgfHwKICAgICAgICAgICAgICAgICAgICAgICAgJGNhc2UtPnR5cGUgPT09IFR5cGU6OlRfRUxTRUlGICYmICR0aGlzLT5pc1RydXRoeSgkdGhpcy0+cmVkdWNlKCRjYXNlLT5jb25kKSkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jb21waWxlQ2hpbGRyZW4oJGNhc2UtPmNoaWxkcmVuLCAkb3V0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9FQUNIOgogICAgICAgICAgICAgICAgbGlzdCgsICRlYWNoKSA9ICRjaGlsZDsKCiAgICAgICAgICAgICAgICAkbGlzdCA9ICR0aGlzLT5jb2VyY2VMaXN0KCR0aGlzLT5yZWR1Y2UoJGVhY2gtPmxpc3QpKTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+cHVzaEVudigpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0WzJdIGFzICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRlYWNoLT52YXJzKSA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0KCRlYWNoLT52YXJzWzBdLCAkaXRlbSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCgsLCAkdmFsdWVzKSA9ICR0aGlzLT5jb2VyY2VMaXN0KCRpdGVtKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlYWNoLT52YXJzIGFzICRpID0+ICR2YXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXQoJHZhciwgaXNzZXQoJHZhbHVlc1skaV0pID8gJHZhbHVlc1skaV0gOiBzdGF0aWM6OiRudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHJldCA9ICR0aGlzLT5jb21waWxlQ2hpbGRyZW4oJGVhY2gtPmNoaWxkcmVuLCAkb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXRbMF0gIT09IFR5cGU6OlRfQ09OVFJPTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnBvcEVudigpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmV0OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJldFsxXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfV0hJTEU6CiAgICAgICAgICAgICAgICBsaXN0KCwgJHdoaWxlKSA9ICRjaGlsZDsKCiAgICAgICAgICAgICAgICB3aGlsZSAoJHRoaXMtPmlzVHJ1dGh5KCR0aGlzLT5yZWR1Y2UoJHdoaWxlLT5jb25kLCB0cnVlKSkpIHsKICAgICAgICAgICAgICAgICAgICAkcmV0ID0gJHRoaXMtPmNvbXBpbGVDaGlsZHJlbigkd2hpbGUtPmNoaWxkcmVuLCAkb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXRbMF0gIT09IFR5cGU6OlRfQ09OVFJPTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcmV0WzFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0ZPUjoKICAgICAgICAgICAgICAgIGxpc3QoLCAkZm9yKSA9ICRjaGlsZDsKCiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkdGhpcy0+cmVkdWNlKCRmb3ItPnN0YXJ0LCB0cnVlKTsKICAgICAgICAgICAgICAgICRlbmQgICA9ICR0aGlzLT5yZWR1Y2UoJGZvci0+ZW5kLCB0cnVlKTsKCiAgICAgICAgICAgICAgICBpZiAoISAoJHN0YXJ0WzJdID09ICRlbmRbMl0gfHwgJGVuZC0+dW5pdGxlc3MoKSkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcignSW5jb21wYXRpYmxlIHVuaXRzOiAiJXMiIGFuZCAiJXMiLicsICRzdGFydC0+dW5pdFN0cigpLCAkZW5kLT51bml0U3RyKCkpOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdW5pdCAgPSAkc3RhcnRbMl07CiAgICAgICAgICAgICAgICAkc3RhcnQgPSAkc3RhcnRbMV07CiAgICAgICAgICAgICAgICAkZW5kICAgPSAkZW5kWzFdOwoKICAgICAgICAgICAgICAgICRkID0gJHN0YXJ0IDwgJGVuZCA/IDEgOiAtMTsKCiAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCghICRmb3ItPnVudGlsICYmICRzdGFydCAtICRkID09ICRlbmQpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICgkZm9yLT51bnRpbCAmJiAkc3RhcnQgPT0gJGVuZCkKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0KCRmb3ItPnZhciwgbmV3IE5vZGVcTnVtYmVyKCRzdGFydCwgJHVuaXQpKTsKICAgICAgICAgICAgICAgICAgICAkc3RhcnQgKz0gJGQ7CgogICAgICAgICAgICAgICAgICAgICRyZXQgPSAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuKCRmb3ItPmNoaWxkcmVuLCAkb3V0KTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXRbMF0gIT09IFR5cGU6OlRfQ09OVFJPTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcmV0WzFdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0JSRUFLOgogICAgICAgICAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0NPTlRST0wsIHRydWVdOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0NPTlRJTlVFOgogICAgICAgICAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0NPTlRST0wsIGZhbHNlXTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9SRVRVUk46CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJlZHVjZSgkY2hpbGRbMV0sIHRydWUpOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX05FU1RFRF9QUk9QRVJUWToKICAgICAgICAgICAgICAgICR0aGlzLT5jb21waWxlTmVzdGVkUHJvcGVydGllc0Jsb2NrKCRjaGlsZFsxXSwgJG91dCk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9JTkNMVURFOgogICAgICAgICAgICAgICAgLy8gaW5jbHVkaW5nIGEgbWl4aW4KICAgICAgICAgICAgICAgIGxpc3QoLCAkbmFtZSwgJGFyZ1ZhbHVlcywgJGNvbnRlbnQpID0gJGNoaWxkOwoKICAgICAgICAgICAgICAgICRtaXhpbiA9ICR0aGlzLT5nZXQoc3RhdGljOjokbmFtZXNwYWNlc1snbWl4aW4nXSAuICRuYW1lLCBmYWxzZSk7CgogICAgICAgICAgICAgICAgaWYgKCEgJG1peGluKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoIlVuZGVmaW5lZCBtaXhpbiAkbmFtZSIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjYWxsaW5nU2NvcGUgPSAkdGhpcy0+Z2V0U3RvcmVFbnYoKTsKCiAgICAgICAgICAgICAgICAvLyBwdXNoIHNjb3BlLCBhcHBseSBhcmdzCiAgICAgICAgICAgICAgICAkdGhpcy0+cHVzaEVudigpOwogICAgICAgICAgICAgICAgJHRoaXMtPmVudi0+ZGVwdGgtLTsKCiAgICAgICAgICAgICAgICAkc3RvcmVFbnYgPSAkdGhpcy0+c3RvcmVFbnY7CiAgICAgICAgICAgICAgICAkdGhpcy0+c3RvcmVFbnYgPSAkdGhpcy0+ZW52OwoKICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIHBhcmVudCBzZWxlY3RvcnMgaW4gdGhlIGVudiB0byBiZSBhYmxlIHRvIGtub3cgd2hhdCAnJicgcmVmZXJzIHRvIGluIHRoZSBtaXhpbgogICAgICAgICAgICAgICAgLy8gYW5kIGFzc2lnbiB0aGlzIGZha2UgcGFyZW50IHRvIGNoaWxkcwogICAgICAgICAgICAgICAgJHNlbGZQYXJlbnQgPSBudWxsOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2hpbGRbJ3NlbGZQYXJlbnQnXSkgJiYgaXNzZXQoJGNoaWxkWydzZWxmUGFyZW50J10tPnNlbGVjdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAkc2VsZlBhcmVudCA9ICRjaGlsZFsnc2VsZlBhcmVudCddOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcGFyZW50U2VsZWN0b3JzID0gJHRoaXMtPm11bHRpcGx5U2VsZWN0b3JzKCR0aGlzLT5lbnYpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHBhcmVudFNlbGVjdG9ycykgewogICAgICAgICAgICAgICAgICAgICAgICAkcGFyZW50ID0gbmV3IEJsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJlbnQtPnNlbGVjdG9ycyA9ICRwYXJlbnRTZWxlY3RvcnM7CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkbWl4aW4tPmNoaWxkcmVuIGFzICRrID0+ICRjaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRjaGlsZFsxXSkgJiYgaXNfb2JqZWN0KCRjaGlsZFsxXSkgJiYgJGNoaWxkWzFdIGluc3RhbmNlb2YgQmxvY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWl4aW4tPmNoaWxkcmVuWyRrXVsxXS0+cGFyZW50ID0gJHBhcmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBjbG9uZSB0aGUgc3RvcmVkIGNvbnRlbnQgdG8gbm90IGhhdmUgaXRzIHNjb3BlIHNwb2lsZWQgYnkgYSBmdXJ0aGVyIGNhbGwgdG8gdGhlIHNhbWUgbWl4aW4KICAgICAgICAgICAgICAgIC8vIGkuZS4sIHJlY3Vyc2l2ZSBAaW5jbHVkZSBvZiB0aGUgc2FtZSBtaXhpbgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRjb250ZW50KSkgewogICAgICAgICAgICAgICAgICAgICRjb3B5Q29udGVudCA9IGNsb25lICRjb250ZW50OwogICAgICAgICAgICAgICAgICAgICRjb3B5Q29udGVudC0+c2NvcGUgPSAkY2FsbGluZ1Njb3BlOwoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0UmF3KHN0YXRpYzo6JG5hbWVzcGFjZXNbJ3NwZWNpYWwnXSAuICdjb250ZW50JywgJGNvcHlDb250ZW50LCAkdGhpcy0+ZW52KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldFJhdyhzdGF0aWM6OiRuYW1lc3BhY2VzWydzcGVjaWFsJ10gLiAnY29udGVudCcsIG51bGwsICR0aGlzLT5lbnYpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbWl4aW4tPmFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGx5QXJndW1lbnRzKCRtaXhpbi0+YXJncywgJGFyZ1ZhbHVlcyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPmVudi0+bWFya2VyID0gJ21peGluJzsKCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuTm9SZXR1cm4oJG1peGluLT5jaGlsZHJlbiwgJG91dCwgJHNlbGZQYXJlbnQsICR0aGlzLT5lbnYtPm1hcmtlciAuICIgIiAuICRuYW1lKTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+c3RvcmVFbnYgPSAkc3RvcmVFbnY7CgogICAgICAgICAgICAgICAgJHRoaXMtPnBvcEVudigpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTUlYSU5fQ09OVEVOVDoKICAgICAgICAgICAgICAgICRlbnYgPSBpc3NldCgkdGhpcy0+c3RvcmVFbnYpID8gJHRoaXMtPnN0b3JlRW52IDogJHRoaXMtPmVudjsKICAgICAgICAgICAgICAgICRjb250ZW50ID0gJHRoaXMtPmdldChzdGF0aWM6OiRuYW1lc3BhY2VzWydzcGVjaWFsJ10gLiAnY29udGVudCcsIGZhbHNlLCAkZW52KTsKCiAgICAgICAgICAgICAgICBpZiAoISAkY29udGVudCkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50ID0gbmV3IFxzdGRDbGFzcygpOwogICAgICAgICAgICAgICAgICAgICRjb250ZW50LT5zY29wZSA9IG5ldyBcc3RkQ2xhc3MoKTsKICAgICAgICAgICAgICAgICAgICAkY29udGVudC0+Y2hpbGRyZW4gPSAkZW52LT5wYXJlbnQtPmJsb2NrLT5jaGlsZHJlbjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkc3RvcmVFbnYgPSAkdGhpcy0+c3RvcmVFbnY7CiAgICAgICAgICAgICAgICAkdGhpcy0+c3RvcmVFbnYgPSAkY29udGVudC0+c2NvcGU7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuTm9SZXR1cm4oJGNvbnRlbnQtPmNoaWxkcmVuLCAkb3V0KTsKCiAgICAgICAgICAgICAgICAkdGhpcy0+c3RvcmVFbnYgPSAkc3RvcmVFbnY7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9ERUJVRzoKICAgICAgICAgICAgICAgIGxpc3QoLCAkdmFsdWUpID0gJGNoaWxkOwoKICAgICAgICAgICAgICAgICRmbmFtZSA9ICR0aGlzLT5zb3VyY2VOYW1lc1skdGhpcy0+c291cmNlSW5kZXhdOwogICAgICAgICAgICAgICAgJGxpbmUgPSAkdGhpcy0+c291cmNlTGluZTsKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHRoaXMtPnJlZHVjZSgkdmFsdWUsIHRydWUpKTsKICAgICAgICAgICAgICAgIGZ3cml0ZSgkdGhpcy0+c3RkZXJyLCAiRmlsZSAkZm5hbWUgb24gbGluZSAkbGluZSBERUJVRzogJHZhbHVlXG4iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1dBUk46CiAgICAgICAgICAgICAgICBsaXN0KCwgJHZhbHVlKSA9ICRjaGlsZDsKCiAgICAgICAgICAgICAgICAkZm5hbWUgPSAkdGhpcy0+c291cmNlTmFtZXNbJHRoaXMtPnNvdXJjZUluZGV4XTsKICAgICAgICAgICAgICAgICRsaW5lID0gJHRoaXMtPnNvdXJjZUxpbmU7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCR0aGlzLT5yZWR1Y2UoJHZhbHVlLCB0cnVlKSk7CiAgICAgICAgICAgICAgICBmd3JpdGUoJHRoaXMtPnN0ZGVyciwgIkZpbGUgJGZuYW1lIG9uIGxpbmUgJGxpbmUgV0FSTjogJHZhbHVlXG4iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0VSUk9SOgogICAgICAgICAgICAgICAgbGlzdCgsICR2YWx1ZSkgPSAkY2hpbGQ7CgogICAgICAgICAgICAgICAgJGZuYW1lID0gJHRoaXMtPnNvdXJjZU5hbWVzWyR0aGlzLT5zb3VyY2VJbmRleF07CiAgICAgICAgICAgICAgICAkbGluZSA9ICR0aGlzLT5zb3VyY2VMaW5lOwogICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkdGhpcy0+cmVkdWNlKCR2YWx1ZSwgdHJ1ZSkpOwogICAgICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoIkZpbGUgJGZuYW1lIG9uIGxpbmUgJGxpbmUgRVJST1I6ICR2YWx1ZVxuIik7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9DT05UUk9MOgogICAgICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoJ0BicmVhay9AY29udGludWUgbm90IHBlcm1pdHRlZCBpbiB0aGlzIHNjb3BlJyk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcigidW5rbm93biBjaGlsZCB0eXBlOiAkY2hpbGRbMF0iKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWR1Y2UgZXhwcmVzc2lvbiB0byBzdHJpbmcKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGV4cAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4cFRvU3RyaW5nKCRleHApCiAgICB7CiAgICAgICAgbGlzdCgsICRvcCwgJGxlZnQsICRyaWdodCwgLyogJGluUGFyZW5zICovLCAkd2hpdGVMZWZ0LCAkd2hpdGVSaWdodCkgPSAkZXhwOwoKICAgICAgICAkY29udGVudCA9IFskdGhpcy0+cmVkdWNlKCRsZWZ0KV07CgogICAgICAgIGlmICgkd2hpdGVMZWZ0KSB7CiAgICAgICAgICAgICRjb250ZW50W10gPSAnICc7CiAgICAgICAgfQoKICAgICAgICAkY29udGVudFtdID0gJG9wOwoKICAgICAgICBpZiAoJHdoaXRlUmlnaHQpIHsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICcgJzsKICAgICAgICB9CgogICAgICAgICRjb250ZW50W10gPSAkdGhpcy0+cmVkdWNlKCRyaWdodCk7CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9TVFJJTkcsICcnLCAkY29udGVudF07CiAgICB9CgogICAgLyoqCiAgICAgKiBJcyB0cnV0aHk/CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNUcnV0aHkoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiAkdmFsdWUgIT09IHN0YXRpYzo6JGZhbHNlICYmICR2YWx1ZSAhPT0gc3RhdGljOjokbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIElzIHRoZSB2YWx1ZSBhIGRpcmVjdCByZWxhdGlvbnNoaXAgY29tYmluYXRvcj8KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNJbW1lZGlhdGVSZWxhdGlvbnNoaXBDb21iaW5hdG9yKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJHZhbHVlID09PSAnPicgfHwgJHZhbHVlID09PSAnKycgfHwgJHZhbHVlID09PSAnfic7CiAgICB9CgogICAgLyoqCiAgICAgKiBTaG91bGQgJHZhbHVlIGNhdXNlIGl0cyBvcGVyYW5kIHRvIGV2YWwKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzaG91bGRFdmFsKCR2YWx1ZSkKICAgIHsKICAgICAgICBzd2l0Y2ggKCR2YWx1ZVswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRVhQUkVTU0lPTjoKICAgICAgICAgICAgICAgIGlmICgkdmFsdWVbMV0gPT09ICcvJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2hvdWxkRXZhbCgkdmFsdWVbMl0pIHx8ICR0aGlzLT5zaG91bGRFdmFsKCR2YWx1ZVszXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gZmFsbC10aHJ1CiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9WQVJJQUJMRToKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0ZVTkNUSU9OX0NBTEw6CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZHVjZSB2YWx1ZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICR2YWx1ZQogICAgICogQHBhcmFtIGJvb2xlYW4gJGluRXhwCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxcU2Nzc1BocFxTY3NzUGhwXE5vZGVcTnVtYmVyCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiByZWR1Y2UoJHZhbHVlLCAkaW5FeHAgPSBmYWxzZSkKICAgIHsKCiAgICAgICAgc3dpdGNoICgkdmFsdWVbMF0pIHsKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0VYUFJFU1NJT046CiAgICAgICAgICAgICAgICBsaXN0KCwgJG9wLCAkbGVmdCwgJHJpZ2h0LCAkaW5QYXJlbnMpID0gJHZhbHVlOwoKICAgICAgICAgICAgICAgICRvcE5hbWUgPSBpc3NldChzdGF0aWM6OiRvcGVyYXRvck5hbWVzWyRvcF0pID8gc3RhdGljOjokb3BlcmF0b3JOYW1lc1skb3BdIDogJG9wOwogICAgICAgICAgICAgICAgJGluRXhwID0gJGluRXhwIHx8ICR0aGlzLT5zaG91bGRFdmFsKCRsZWZ0KSB8fCAkdGhpcy0+c2hvdWxkRXZhbCgkcmlnaHQpOwoKICAgICAgICAgICAgICAgICRsZWZ0ID0gJHRoaXMtPnJlZHVjZSgkbGVmdCwgdHJ1ZSk7CgogICAgICAgICAgICAgICAgaWYgKCRvcCAhPT0gJ2FuZCcgJiYgJG9wICE9PSAnb3InKSB7CiAgICAgICAgICAgICAgICAgICAgJHJpZ2h0ID0gJHRoaXMtPnJlZHVjZSgkcmlnaHQsIHRydWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogbG9va3MgbGlrZSBjc3Mgc2hvcnRoYW5kCiAgICAgICAgICAgICAgICBpZiAoJG9wTmFtZSA9PSAnZGl2JyAmJiAhICRpblBhcmVucyAmJiAhICRpbkV4cCAmJiBpc3NldCgkcmlnaHRbMl0pICYmCiAgICAgICAgICAgICAgICAgICAgKCgkcmlnaHRbMF0gIT09IFR5cGU6OlRfTlVNQkVSICYmICRyaWdodFsyXSAhPSAnJykgfHwKICAgICAgICAgICAgICAgICAgICAoJHJpZ2h0WzBdID09PSBUeXBlOjpUX05VTUJFUiAmJiAhICRyaWdodC0+dW5pdGxlc3MoKSkpCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmV4cFRvU3RyaW5nKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxlZnQgPSAkdGhpcy0+Y29lcmNlRm9yRXhwcmVzc2lvbigkbGVmdCk7CiAgICAgICAgICAgICAgICAkcmlnaHQgPSAkdGhpcy0+Y29lcmNlRm9yRXhwcmVzc2lvbigkcmlnaHQpOwoKICAgICAgICAgICAgICAgICRsdHlwZSA9ICRsZWZ0WzBdOwogICAgICAgICAgICAgICAgJHJ0eXBlID0gJHJpZ2h0WzBdOwoKICAgICAgICAgICAgICAgICR1Y09wTmFtZSA9IHVjZmlyc3QoJG9wTmFtZSk7CiAgICAgICAgICAgICAgICAkdWNMVHlwZSAgPSB1Y2ZpcnN0KCRsdHlwZSk7CiAgICAgICAgICAgICAgICAkdWNSVHlwZSAgPSB1Y2ZpcnN0KCRydHlwZSk7CgogICAgICAgICAgICAgICAgLy8gdGhpcyB0cmllczoKICAgICAgICAgICAgICAgIC8vIDEuIG9wW29wIG5hbWVdW2xlZnQgdHlwZV1bcmlnaHQgdHlwZV0KICAgICAgICAgICAgICAgIC8vIDIuIG9wW2xlZnQgdHlwZV1bcmlnaHQgdHlwZV0gKHBhc3NpbmcgdGhlIG9wIGFzIGZpcnN0IGFyZwogICAgICAgICAgICAgICAgLy8gMy4gb3Bbb3AgbmFtZV0KICAgICAgICAgICAgICAgICRmbiA9ICJvcCR7dWNPcE5hbWV9JHt1Y0xUeXBlfSR7dWNSVHlwZX0iOwoKICAgICAgICAgICAgICAgIGlmIChpc19jYWxsYWJsZShbJHRoaXMsICRmbl0pIHx8CiAgICAgICAgICAgICAgICAgICAgKCgkZm4gPSAib3Ake3VjTFR5cGV9JHt1Y1JUeXBlfSIpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NhbGxhYmxlKFskdGhpcywgJGZuXSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgJHBhc3NPcCA9IHRydWUpIHx8CiAgICAgICAgICAgICAgICAgICAgKCgkZm4gPSAib3Ake3VjT3BOYW1lfSIpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NhbGxhYmxlKFskdGhpcywgJGZuXSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgJGdlbk9wID0gdHJ1ZSkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICRjb2VyY2VVbml0ID0gZmFsc2U7CgogICAgICAgICAgICAgICAgICAgIGlmICghIGlzc2V0KCRnZW5PcCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgJGxlZnRbMF0gPT09IFR5cGU6OlRfTlVNQkVSICYmICRyaWdodFswXSA9PT0gVHlwZTo6VF9OVU1CRVIKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvZXJjZVVuaXQgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICgkb3BOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtdWwnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRVbml0ID0gJGxlZnRbMl07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRyaWdodFsyXSBhcyAkdW5pdCA9PiAkZXhwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRVbml0WyR1bml0XSA9IChpc3NldCgkdGFyZ2V0VW5pdFskdW5pdF0pID8gJHRhcmdldFVuaXRbJHVuaXRdIDogMCkgKyAkZXhwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkaXYnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRVbml0ID0gJGxlZnRbMl07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRyaWdodFsyXSBhcyAkdW5pdCA9PiAkZXhwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRVbml0WyR1bml0XSA9IChpc3NldCgkdGFyZ2V0VW5pdFskdW5pdF0pID8gJHRhcmdldFVuaXRbJHVuaXRdIDogMCkgLSAkZXhwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2QnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRVbml0ID0gJGxlZnRbMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0VW5pdCA9ICRsZWZ0LT51bml0bGVzcygpID8gJHJpZ2h0WzJdIDogJGxlZnRbMl07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghICRsZWZ0LT51bml0bGVzcygpICYmICEgJHJpZ2h0LT51bml0bGVzcygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGVmdCA9ICRsZWZ0LT5ub3JtYWxpemUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyaWdodCA9ICRyaWdodC0+bm9ybWFsaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRzaG91bGRFdmFsID0gJGluUGFyZW5zIHx8ICRpbkV4cDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRwYXNzT3ApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSAkdGhpcy0+JGZuKCRvcCwgJGxlZnQsICRyaWdodCwgJHNob3VsZEV2YWwpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSAkdGhpcy0+JGZuKCRsZWZ0LCAkcmlnaHQsICRzaG91bGRFdmFsKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3V0KSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZXJjZVVuaXQgJiYgJG91dFswXSA9PT0gVHlwZTo6VF9OVU1CRVIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvdXQgPSAkb3V0LT5jb2VyY2UoJHRhcmdldFVuaXQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG91dDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5leHBUb1N0cmluZygkdmFsdWUpOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1VOQVJZOgogICAgICAgICAgICAgICAgbGlzdCgsICRvcCwgJGV4cCwgJGluUGFyZW5zKSA9ICR2YWx1ZTsKCiAgICAgICAgICAgICAgICAkaW5FeHAgPSAkaW5FeHAgfHwgJHRoaXMtPnNob3VsZEV2YWwoJGV4cCk7CiAgICAgICAgICAgICAgICAkZXhwID0gJHRoaXMtPnJlZHVjZSgkZXhwKTsKCiAgICAgICAgICAgICAgICBpZiAoJGV4cFswXSA9PT0gVHlwZTo6VF9OVU1CRVIpIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCRvcCkgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcrJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTm9kZVxOdW1iZXIoJGV4cFsxXSwgJGV4cFsyXSk7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICctJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTm9kZVxOdW1iZXIoLSRleHBbMV0sICRleHBbMl0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJG9wID09PSAnbm90JykgewogICAgICAgICAgICAgICAgICAgIGlmICgkaW5FeHAgfHwgJGluUGFyZW5zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZXhwID09PSBzdGF0aWM6OiRmYWxzZSB8fCAkZXhwID09PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljOjokdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJG9wID0gJG9wIC4gJyAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJG9wLCAkZXhwXV07CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfVkFSSUFCTEU6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJlZHVjZSgkdGhpcy0+Z2V0KCR2YWx1ZVsxXSkpOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0xJU1Q6CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVbMl0gYXMgJiRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgJGl0ZW0gPSAkdGhpcy0+cmVkdWNlKCRpdGVtKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX01BUDoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZVsxXSBhcyAmJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbSA9ICR0aGlzLT5yZWR1Y2UoJGl0ZW0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZVsyXSBhcyAmJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbSA9ICR0aGlzLT5yZWR1Y2UoJGl0ZW0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfU1RSSU5HOgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlWzJdIGFzICYkaXRlbSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkaXRlbSkgfHwgJGl0ZW0gaW5zdGFuY2VvZiBcQXJyYXlBY2Nlc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW0gPSAkdGhpcy0+cmVkdWNlKCRpdGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9JTlRFUlBPTEFURToKICAgICAgICAgICAgICAgICR2YWx1ZVsxXSA9ICR0aGlzLT5yZWR1Y2UoJHZhbHVlWzFdKTsKICAgICAgICAgICAgICAgIGlmICgkaW5FeHApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlWzFdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRlVOQ1RJT05fQ0FMTDoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Zm5jYWxsKCR2YWx1ZVsxXSwgJHZhbHVlWzJdKTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9TRUxGOgogICAgICAgICAgICAgICAgJHNlbGZTZWxlY3RvciA9ICR0aGlzLT5tdWx0aXBseVNlbGVjdG9ycygkdGhpcy0+ZW52KTsKICAgICAgICAgICAgICAgICRzZWxmU2VsZWN0b3IgPSAkdGhpcy0+Y29sbGFwc2VTZWxlY3RvcnMoJHNlbGZTZWxlY3RvciwgdHJ1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlbGZTZWxlY3RvcjsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEZ1bmN0aW9uIGNhbGxlcgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqIEBwYXJhbSBhcnJheSAgJGFyZ1ZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZm5jYWxsKCRuYW1lLCAkYXJnVmFsdWVzKQogICAgewogICAgICAgIC8vIFNDU1MgQGZ1bmN0aW9uCiAgICAgICAgaWYgKCR0aGlzLT5jYWxsU2Nzc0Z1bmN0aW9uKCRuYW1lLCAkYXJnVmFsdWVzLCAkcmV0dXJuVmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkcmV0dXJuVmFsdWU7CiAgICAgICAgfQoKICAgICAgICAvLyBuYXRpdmUgUEhQIGZ1bmN0aW9ucwogICAgICAgIGlmICgkdGhpcy0+Y2FsbE5hdGl2ZUZ1bmN0aW9uKCRuYW1lLCAkYXJnVmFsdWVzLCAkcmV0dXJuVmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkcmV0dXJuVmFsdWU7CiAgICAgICAgfQoKICAgICAgICAvLyBmb3IgQ1NTIGZ1bmN0aW9ucywgc2ltcGx5IGZsYXR0ZW4gdGhlIGFyZ3VtZW50cyBpbnRvIGEgbGlzdAogICAgICAgICRsaXN0QXJncyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgoYXJyYXkpICRhcmdWYWx1ZXMgYXMgJGFyZykgewogICAgICAgICAgICBpZiAoZW1wdHkoJGFyZ1swXSkpIHsKICAgICAgICAgICAgICAgICRsaXN0QXJnc1tdID0gJHRoaXMtPnJlZHVjZSgkYXJnWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0ZVTkNUSU9OLCAkbmFtZSwgW1R5cGU6OlRfTElTVCwgJywnLCAkbGlzdEFyZ3NdXTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZSBuYW1lCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBub3JtYWxpemVOYW1lKCRuYW1lKQogICAgewogICAgICAgIHJldHVybiBzdHJfcmVwbGFjZSgnLScsICdfJywgJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIHZhbHVlCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29lcmNlRm9yRXhwcmVzc2lvbigkdGhpcy0+cmVkdWNlKCR2YWx1ZSkpOwoKICAgICAgICBzd2l0Y2ggKCR2YWx1ZVswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTElTVDoKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5leHRyYWN0SW50ZXJwb2xhdGlvbigkdmFsdWUpOwoKICAgICAgICAgICAgICAgIGlmICgkdmFsdWVbMF0gIT09IFR5cGU6OlRfTElTVCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9LRVlXT1JELCAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSldOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZVsyXSBhcyAka2V5ID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlWzJdWyRrZXldID0gJHRoaXMtPm5vcm1hbGl6ZVZhbHVlKCRpdGVtKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiBbJHZhbHVlWzBdLCAnIicsIFskdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHZhbHVlKV1dOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX05VTUJFUjoKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWUtPm5vcm1hbGl6ZSgpOwoKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0lOVEVSUE9MQVRFOgogICAgICAgICAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0tFWVdPUkQsICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlKV07CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgbnVtYmVycwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkbGVmdAogICAgICogQHBhcmFtIGFycmF5ICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxOb2RlXE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BBZGROdW1iZXJOdW1iZXIoJGxlZnQsICRyaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IE5vZGVcTnVtYmVyKCRsZWZ0WzFdICsgJHJpZ2h0WzFdLCAkbGVmdFsyXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNdWx0aXBseSBudW1iZXJzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRsZWZ0CiAgICAgKiBAcGFyYW0gYXJyYXkgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBcU2Nzc1BocFxTY3NzUGhwXE5vZGVcTnVtYmVyCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBvcE11bE51bWJlck51bWJlcigkbGVmdCwgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiBuZXcgTm9kZVxOdW1iZXIoJGxlZnRbMV0gKiAkcmlnaHRbMV0sICRsZWZ0WzJdKTsKICAgIH0KCiAgICAvKioKICAgICAqIFN1YnRyYWN0IG51bWJlcnMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcTm9kZVxOdW1iZXIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wU3ViTnVtYmVyTnVtYmVyKCRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBOb2RlXE51bWJlcigkbGVmdFsxXSAtICRyaWdodFsxXSwgJGxlZnRbMl0pOwogICAgfQoKICAgIC8qKgogICAgICogRGl2aWRlIG51bWJlcnMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fFxTY3NzUGhwXFNjc3NQaHBcTm9kZVxOdW1iZXIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wRGl2TnVtYmVyTnVtYmVyKCRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgaWYgKCRyaWdodFsxXSA9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJGxlZnRbMV0gLiAkbGVmdFsyXSAuICcvJyAuICRyaWdodFsxXSAuICRyaWdodFsyXV1dOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBOb2RlXE51bWJlcigkbGVmdFsxXSAvICRyaWdodFsxXSwgJGxlZnRbMl0pOwogICAgfQoKICAgIC8qKgogICAgICogTW9kIG51bWJlcnMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcTm9kZVxOdW1iZXIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTW9kTnVtYmVyTnVtYmVyKCRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBOb2RlXE51bWJlcigkbGVmdFsxXSAlICRyaWdodFsxXSwgJGxlZnRbMl0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIHN0cmluZ3MKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wQWRkKCRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgaWYgKCRzdHJMZWZ0ID0gJHRoaXMtPmNvZXJjZVN0cmluZygkbGVmdCkpIHsKICAgICAgICAgICAgaWYgKCRyaWdodFswXSA9PT0gVHlwZTo6VF9TVFJJTkcpIHsKICAgICAgICAgICAgICAgICRyaWdodFsxXSA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc3RyTGVmdFsyXVtdID0gJHJpZ2h0OwoKICAgICAgICAgICAgcmV0dXJuICRzdHJMZWZ0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzdHJSaWdodCA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJHJpZ2h0KSkgewogICAgICAgICAgICBpZiAoJGxlZnRbMF0gPT09IFR5cGU6OlRfU1RSSU5HKSB7CiAgICAgICAgICAgICAgICAkbGVmdFsxXSA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRzdHJSaWdodFsyXSwgJGxlZnQpOwoKICAgICAgICAgICAgcmV0dXJuICRzdHJSaWdodDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQm9vbGVhbiBhbmQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkbGVmdAogICAgICogQHBhcmFtIGFycmF5ICAgJHJpZ2h0CiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkc2hvdWxkRXZhbAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BBbmQoJGxlZnQsICRyaWdodCwgJHNob3VsZEV2YWwpCiAgICB7CiAgICAgICAgJHRydXRoeSA9ICgkbGVmdCA9PT0gc3RhdGljOjokbnVsbCB8fCAkcmlnaHQgPT09IHN0YXRpYzo6JG51bGwpIHx8CiAgICAgICAgICAgICAgICAgICgkbGVmdCA9PT0gc3RhdGljOjokZmFsc2UgfHwgJGxlZnQgPT09IHN0YXRpYzo6JHRydWUpICYmCiAgICAgICAgICAgICAgICAgICgkcmlnaHQgPT09IHN0YXRpYzo6JGZhbHNlIHx8ICRyaWdodCA9PT0gc3RhdGljOjokdHJ1ZSk7CgogICAgICAgIGlmICghICRzaG91bGRFdmFsKSB7CiAgICAgICAgICAgIGlmICghICR0cnV0aHkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGxlZnQgIT09IHN0YXRpYzo6JGZhbHNlICYmICRsZWZ0ICE9PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVkdWNlKCRyaWdodCwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxlZnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBCb29sZWFuIG9yCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAgICRyaWdodAogICAgICogQHBhcmFtIGJvb2xlYW4gJHNob3VsZEV2YWwKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wT3IoJGxlZnQsICRyaWdodCwgJHNob3VsZEV2YWwpCiAgICB7CiAgICAgICAgJHRydXRoeSA9ICgkbGVmdCA9PT0gc3RhdGljOjokbnVsbCB8fCAkcmlnaHQgPT09IHN0YXRpYzo6JG51bGwpIHx8CiAgICAgICAgICAgICAgICAgICgkbGVmdCA9PT0gc3RhdGljOjokZmFsc2UgfHwgJGxlZnQgPT09IHN0YXRpYzo6JHRydWUpICYmCiAgICAgICAgICAgICAgICAgICgkcmlnaHQgPT09IHN0YXRpYzo6JGZhbHNlIHx8ICRyaWdodCA9PT0gc3RhdGljOjokdHJ1ZSk7CgogICAgICAgIGlmICghICRzaG91bGRFdmFsKSB7CiAgICAgICAgICAgIGlmICghICR0cnV0aHkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGxlZnQgIT09IHN0YXRpYzo6JGZhbHNlICYmICRsZWZ0ICE9PSBzdGF0aWM6OiRudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkbGVmdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+cmVkdWNlKCRyaWdodCwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wYXJlIGNvbG9ycwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9wCiAgICAgKiBAcGFyYW0gYXJyYXkgICRsZWZ0CiAgICAgKiBAcGFyYW0gYXJyYXkgICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wQ29sb3JDb2xvcigkb3AsICRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgJG91dCA9IFtUeXBlOjpUX0NPTE9SXTsKCiAgICAgICAgZm9yZWFjaCAoWzEsIDIsIDNdIGFzICRpKSB7CiAgICAgICAgICAgICRsdmFsID0gaXNzZXQoJGxlZnRbJGldKSA/ICRsZWZ0WyRpXSA6IDA7CiAgICAgICAgICAgICRydmFsID0gaXNzZXQoJHJpZ2h0WyRpXSkgPyAkcmlnaHRbJGldIDogMDsKCiAgICAgICAgICAgIHN3aXRjaCAoJG9wKSB7CiAgICAgICAgICAgICAgICBjYXNlICcrJzoKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAkbHZhbCArICRydmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJy0nOgogICAgICAgICAgICAgICAgICAgICRvdXRbXSA9ICRsdmFsIC0gJHJ2YWw7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnKic6CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJGx2YWwgKiAkcnZhbDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICclJzoKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAkbHZhbCAlICRydmFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJy8nOgogICAgICAgICAgICAgICAgICAgIGlmICgkcnZhbCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCJjb2xvcjogQ2FuJ3QgZGl2aWRlIGJ5IHplcm8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRvdXRbXSA9IChpbnQpICgkbHZhbCAvICRydmFsKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlICc9PSc6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5vcEVxKCRsZWZ0LCAkcmlnaHQpOwoKICAgICAgICAgICAgICAgIGNhc2UgJyE9JzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPm9wTmVxKCRsZWZ0LCAkcmlnaHQpOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoImNvbG9yOiB1bmtub3duIG9wICRvcCIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrIDI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkbGVmdFs0XSkpIHsKICAgICAgICAgICAgJG91dFs0XSA9ICRsZWZ0WzRdOwogICAgICAgIH0gZWxzZWlmIChpc3NldCgkcmlnaHRbNF0pKSB7CiAgICAgICAgICAgICRvdXRbNF0gPSAkcmlnaHRbNF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmZpeENvbG9yKCRvdXQpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBjb2xvciBhbmQgbnVtYmVyCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkb3AKICAgICAqIEBwYXJhbSBhcnJheSAgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BDb2xvck51bWJlcigkb3AsICRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHJpZ2h0WzFdOwoKICAgICAgICByZXR1cm4gJHRoaXMtPm9wQ29sb3JDb2xvcigKICAgICAgICAgICAgJG9wLAogICAgICAgICAgICAkbGVmdCwKICAgICAgICAgICAgW1R5cGU6OlRfQ09MT1IsICR2YWx1ZSwgJHZhbHVlLCAkdmFsdWVdCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmUgbnVtYmVyIGFuZCBjb2xvcgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9wCiAgICAgKiBAcGFyYW0gYXJyYXkgICRsZWZ0CiAgICAgKiBAcGFyYW0gYXJyYXkgICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTnVtYmVyQ29sb3IoJG9wLCAkbGVmdCwgJHJpZ2h0KQogICAgewogICAgICAgICR2YWx1ZSA9ICRsZWZ0WzFdOwoKICAgICAgICByZXR1cm4gJHRoaXMtPm9wQ29sb3JDb2xvcigKICAgICAgICAgICAgJG9wLAogICAgICAgICAgICBbVHlwZTo6VF9DT0xPUiwgJHZhbHVlLCAkdmFsdWUsICR2YWx1ZV0sCiAgICAgICAgICAgICRyaWdodAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wYXJlIG51bWJlcjEgPT0gbnVtYmVyMgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkbGVmdAogICAgICogQHBhcmFtIGFycmF5ICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wRXEoJGxlZnQsICRyaWdodCkKICAgIHsKICAgICAgICBpZiAoKCRsU3RyID0gJHRoaXMtPmNvZXJjZVN0cmluZygkbGVmdCkpICYmICgkclN0ciA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJHJpZ2h0KSkpIHsKICAgICAgICAgICAgJGxTdHJbMV0gPSAnJzsKICAgICAgICAgICAgJHJTdHJbMV0gPSAnJzsKCiAgICAgICAgICAgICRsZWZ0ID0gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkbFN0cik7CiAgICAgICAgICAgICRyaWdodCA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHJTdHIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT50b0Jvb2woJGxlZnQgPT09ICRyaWdodCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wYXJlIG51bWJlcjEgIT0gbnVtYmVyMgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkbGVmdAogICAgICogQHBhcmFtIGFycmF5ICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTmVxKCRsZWZ0LCAkcmlnaHQpCiAgICB7CiAgICAgICAgaWYgKCgkbFN0ciA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJGxlZnQpKSAmJiAoJHJTdHIgPSAkdGhpcy0+Y29lcmNlU3RyaW5nKCRyaWdodCkpKSB7CiAgICAgICAgICAgICRsU3RyWzFdID0gJyc7CiAgICAgICAgICAgICRyU3RyWzFdID0gJyc7CgogICAgICAgICAgICAkbGVmdCA9ICR0aGlzLT5jb21waWxlVmFsdWUoJGxTdHIpOwogICAgICAgICAgICAkcmlnaHQgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRyU3RyKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCRsZWZ0ICE9PSAkcmlnaHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIxID49IG51bWJlcjIKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxlZnQKICAgICAqIEBwYXJhbSBhcnJheSAkcmlnaHQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBvcEd0ZU51bWJlck51bWJlcigkbGVmdCwgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCRsZWZ0WzFdID49ICRyaWdodFsxXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wYXJlIG51bWJlcjEgPiBudW1iZXIyCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRsZWZ0CiAgICAgKiBAcGFyYW0gYXJyYXkgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BHdE51bWJlck51bWJlcigkbGVmdCwgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKCRsZWZ0WzFdID4gJHJpZ2h0WzFdKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmUgbnVtYmVyMSA8PSBudW1iZXIyCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRsZWZ0CiAgICAgKiBAcGFyYW0gYXJyYXkgJHJpZ2h0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BMdGVOdW1iZXJOdW1iZXIoJGxlZnQsICRyaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQm9vbCgkbGVmdFsxXSA8PSAkcmlnaHRbMV0pOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGFyZSBudW1iZXIxIDwgbnVtYmVyMgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkbGVmdAogICAgICogQHBhcmFtIGFycmF5ICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG9wTHROdW1iZXJOdW1iZXIoJGxlZnQsICRyaWdodCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQm9vbCgkbGVmdFsxXSA8ICRyaWdodFsxXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaHJlZS13YXkgY29tcGFyaXNvbiwgYWthIHNwYWNlc2hpcCBvcGVyYXRvcgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkbGVmdAogICAgICogQHBhcmFtIGFycmF5ICRyaWdodAogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxOb2RlXE51bWJlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BDbXBOdW1iZXJOdW1iZXIoJGxlZnQsICRyaWdodCkKICAgIHsKICAgICAgICAkbiA9ICRsZWZ0WzFdIC0gJHJpZ2h0WzFdOwoKICAgICAgICByZXR1cm4gbmV3IE5vZGVcTnVtYmVyKCRuID8gJG4gLyBhYnMoJG4pIDogMCwgJycpOwogICAgfQoKICAgIC8qKgogICAgICogQ2FzdCB0byBib29sZWFuCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdGhpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0Jvb2woJHRoaW5nKQogICAgewogICAgICAgIHJldHVybiAkdGhpbmcgPyBzdGF0aWM6OiR0cnVlIDogc3RhdGljOjokZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21waWxlcyBhIHByaW1pdGl2ZSB2YWx1ZSBpbnRvIGEgQ1NTIHByb3BlcnR5IHZhbHVlLgogICAgICoKICAgICAqIFZhbHVlcyBpbiBzY3NzcGhwIGFyZSB0eXBlZCBieSBiZWluZyB3cmFwcGVkIGluIGFycmF5cywgdGhlaXIgZm9ybWF0IGlzCiAgICAgKiB0eXBpY2FsbHk6CiAgICAgKgogICAgICogICAgIGFycmF5KHR5cGUsIGNvbnRlbnRzIFssIGFkZGl0aW9uYWxfY29udGVudHNdKikKICAgICAqCiAgICAgKiBUaGUgaW5wdXQgaXMgZXhwZWN0ZWQgdG8gYmUgcmVkdWNlZC4gVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCB3b3JrIG9uCiAgICAgKiB0aGluZ3MgbGlrZSBleHByZXNzaW9ucyBhbmQgdmFyaWFibGVzLgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBpbGVWYWx1ZSgkdmFsdWUpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnJlZHVjZSgkdmFsdWUpOwoKICAgICAgICBzd2l0Y2ggKCR2YWx1ZVswXSkgewogICAgICAgICAgICBjYXNlIFR5cGU6OlRfS0VZV09SRDoKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWVbMV07CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfQ09MT1I6CiAgICAgICAgICAgICAgICAvLyBbMV0gLSByZWQgY29tcG9uZW50IChlaXRoZXIgbnVtYmVyIGZvciBhICUpCiAgICAgICAgICAgICAgICAvLyBbMl0gLSBncmVlbiBjb21wb25lbnQKICAgICAgICAgICAgICAgIC8vIFszXSAtIGJsdWUgY29tcG9uZW50CiAgICAgICAgICAgICAgICAvLyBbNF0gLSBvcHRpb25hbCBhbHBoYSBjb21wb25lbnQKICAgICAgICAgICAgICAgIGxpc3QoLCAkciwgJGcsICRiKSA9ICR2YWx1ZTsKCiAgICAgICAgICAgICAgICAkciA9IHJvdW5kKCRyKTsKICAgICAgICAgICAgICAgICRnID0gcm91bmQoJGcpOwogICAgICAgICAgICAgICAgJGIgPSByb3VuZCgkYik7CgogICAgICAgICAgICAgICAgaWYgKGNvdW50KCR2YWx1ZSkgPT09IDUgJiYgJHZhbHVlWzRdICE9PSAxKSB7IC8vIHJnYmEKICAgICAgICAgICAgICAgICAgICAkYSA9IG5ldyBOb2RlXE51bWJlcigkdmFsdWVbNF0sICcnKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZ2JhKCcgLiAkciAuICcsICcgLiAkZyAuICcsICcgLiAkYiAuICcsICcgLiAkYSAuICcpJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaCA9IHNwcmludGYoJyMlMDJ4JTAyeCUwMngnLCAkciwgJGcsICRiKTsKCiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0aW5nIGhleCBjb2xvciB0byBzaG9ydCBub3RhdGlvbiAoZS5nLiAjMDAzMzk5IHRvICMwMzkpCiAgICAgICAgICAgICAgICBpZiAoJGhbMV0gPT09ICRoWzJdICYmICRoWzNdID09PSAkaFs0XSAmJiAkaFs1XSA9PT0gJGhbNl0pIHsKICAgICAgICAgICAgICAgICAgICAkaCA9ICcjJyAuICRoWzFdIC4gJGhbM10gLiAkaFs1XTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJGg7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTlVNQkVSOgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZS0+b3V0cHV0KCR0aGlzKTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlWzFdIC4gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR2YWx1ZSkgLiAkdmFsdWVbMV07CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRlVOQ1RJT046CiAgICAgICAgICAgICAgICAkYXJncyA9ICEgZW1wdHkoJHZhbHVlWzJdKSA/ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlWzJdKSA6ICcnOwoKICAgICAgICAgICAgICAgIHJldHVybiAiJHZhbHVlWzFdKCRhcmdzKSI7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTElTVDoKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT5leHRyYWN0SW50ZXJwb2xhdGlvbigkdmFsdWUpOwoKICAgICAgICAgICAgICAgIGlmICgkdmFsdWVbMF0gIT09IFR5cGU6OlRfTElTVCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGlzdCgsICRkZWxpbSwgJGl0ZW1zKSA9ICR2YWx1ZTsKCiAgICAgICAgICAgICAgICBpZiAoJGRlbGltICE9PSAnICcpIHsKICAgICAgICAgICAgICAgICAgICAkZGVsaW0gLj0gJyAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRmaWx0ZXJlZCA9IFtdOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaXRlbVswXSA9PT0gVHlwZTo6VF9OVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJGZpbHRlcmVkW10gPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRpdGVtKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gaW1wbG9kZSgiJGRlbGltIiwgJGZpbHRlcmVkKTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9NQVA6CiAgICAgICAgICAgICAgICAka2V5cyA9ICR2YWx1ZVsxXTsKICAgICAgICAgICAgICAgICR2YWx1ZXMgPSAkdmFsdWVbMl07CiAgICAgICAgICAgICAgICAkZmlsdGVyZWQgPSBbXTsKCiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMCwgJHMgPSBjb3VudCgka2V5cyk7ICRpIDwgJHM7ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAkZmlsdGVyZWRbJHRoaXMtPmNvbXBpbGVWYWx1ZSgka2V5c1skaV0pXSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHZhbHVlc1skaV0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGFycmF5X3dhbGsoJGZpbHRlcmVkLCBmdW5jdGlvbiAoJiR2YWx1ZSwgJGtleSkgewogICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRrZXkgLiAnOiAnIC4gJHZhbHVlOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgcmV0dXJuICcoJyAuIGltcGxvZGUoJywgJywgJGZpbHRlcmVkKSAuICcpJzsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9JTlRFUlBPTEFURUQ6CiAgICAgICAgICAgICAgICAvLyBub2RlIGNyZWF0ZWQgYnkgZXh0cmFjdEludGVycG9sYXRpb24KICAgICAgICAgICAgICAgIGxpc3QoLCAkaW50ZXJwb2xhdGUsICRsZWZ0LCAkcmlnaHQpID0gJHZhbHVlOwogICAgICAgICAgICAgICAgbGlzdCgsLCAkd2hpdGVMZWZ0LCAkd2hpdGVSaWdodCkgPSAkaW50ZXJwb2xhdGU7CgogICAgICAgICAgICAgICAgJGxlZnQgPSBjb3VudCgkbGVmdFsyXSkgPiAwID8KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29tcGlsZVZhbHVlKCRsZWZ0KSAuICR3aGl0ZUxlZnQgOiAnJzsKCiAgICAgICAgICAgICAgICAkcmlnaHQgPSBjb3VudCgkcmlnaHRbMl0pID4gMCA/CiAgICAgICAgICAgICAgICAgICAgJHdoaXRlUmlnaHQgLiAkdGhpcy0+Y29tcGlsZVZhbHVlKCRyaWdodCkgOiAnJzsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGxlZnQgLiAkdGhpcy0+Y29tcGlsZVZhbHVlKCRpbnRlcnBvbGF0ZSkgLiAkcmlnaHQ7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfSU5URVJQT0xBVEU6CiAgICAgICAgICAgICAgICAvLyBzdHJpcCBxdW90ZXMgaWYgaXQncyBhIHN0cmluZwogICAgICAgICAgICAgICAgJHJlZHVjZWQgPSAkdGhpcy0+cmVkdWNlKCR2YWx1ZVsxXSk7CgogICAgICAgICAgICAgICAgc3dpdGNoICgkcmVkdWNlZFswXSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9MSVNUOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVkdWNlZCA9ICR0aGlzLT5leHRyYWN0SW50ZXJwb2xhdGlvbigkcmVkdWNlZCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJlZHVjZWRbMF0gIT09IFR5cGU6OlRfTElTVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoLCAkZGVsaW0sICRpdGVtcykgPSAkcmVkdWNlZDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVsaW0gIT09ICcgJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGltIC49ICcgJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbHRlcmVkID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaXRlbVswXSA9PT0gVHlwZTo6VF9OVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRlbXAgPSAkdGhpcy0+Y29tcGlsZVZhbHVlKFtUeXBlOjpUX0tFWVdPUkQsICRpdGVtXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRlbXBbMF0gPT09IFR5cGU6OlRfU1RSSU5HKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbHRlcmVkW10gPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRlbXApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR0ZW1wWzBdID09PSBUeXBlOjpUX0tFWVdPUkQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsdGVyZWRbXSA9ICR0ZW1wWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsdGVyZWRbXSA9ICR0aGlzLT5jb21waWxlVmFsdWUoJHRlbXApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkcmVkdWNlZCA9IFtUeXBlOjpUX0tFWVdPUkQsIGltcGxvZGUoIiRkZWxpbSIsICRmaWx0ZXJlZCldOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSBUeXBlOjpUX1NUUklORzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlZHVjZWQgPSBbVHlwZTo6VF9LRVlXT1JELCAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHJlZHVjZWQpXTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9OVUxMOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVkdWNlZCA9IFtUeXBlOjpUX0tFWVdPUkQsICcnXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBpbGVWYWx1ZSgkcmVkdWNlZCk7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTlVMTDoKICAgICAgICAgICAgICAgIHJldHVybiAnbnVsbCc7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoInVua25vd24gdmFsdWUgdHlwZTogIi5qc29uX2VuY29kZSgkdmFsdWUpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBGbGF0dGVuIGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxpc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmxhdHRlbkxpc3QoJGxpc3QpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21waWxlVmFsdWUoJGxpc3QpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSBzdHJpbmcgY29udGVudAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkc3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBpbGVTdHJpbmdDb250ZW50KCRzdHJpbmcpCiAgICB7CiAgICAgICAgJHBhcnRzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRzdHJpbmdbMl0gYXMgJHBhcnQpIHsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRwYXJ0KSB8fCAkcGFydCBpbnN0YW5jZW9mIFxBcnJheUFjY2VzcykgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkdGhpcy0+Y29tcGlsZVZhbHVlKCRwYXJ0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHBhcnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBpbXBsb2RlKCRwYXJ0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHRyYWN0IGludGVycG9sYXRpb247IGl0IGRvZXNuJ3QgbmVlZCB0byBiZSByZWN1cnNpdmUsIGNvbXBpbGVWYWx1ZSB3aWxsIGhhbmRsZSB0aGF0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRsaXN0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZXh0cmFjdEludGVycG9sYXRpb24oJGxpc3QpCiAgICB7CiAgICAgICAgJGl0ZW1zID0gJGxpc3RbMl07CgogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAkaSA9PiAkaXRlbSkgewogICAgICAgICAgICBpZiAoJGl0ZW1bMF0gPT09IFR5cGU6OlRfSU5URVJQT0xBVEUpIHsKICAgICAgICAgICAgICAgICRiZWZvcmUgPSBbVHlwZTo6VF9MSVNULCAkbGlzdFsxXSwgYXJyYXlfc2xpY2UoJGl0ZW1zLCAwLCAkaSldOwogICAgICAgICAgICAgICAgJGFmdGVyICA9IFtUeXBlOjpUX0xJU1QsICRsaXN0WzFdLCBhcnJheV9zbGljZSgkaXRlbXMsICRpICsgMSldOwoKICAgICAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9JTlRFUlBPTEFURUQsICRpdGVtLCAkYmVmb3JlLCAkYWZ0ZXJdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxpc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kIHRoZSBmaW5hbCBzZXQgb2Ygc2VsZWN0b3JzCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQgJGVudgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sgICAgICAgICAgICAgICAgJHNlbGZQYXJlbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtdWx0aXBseVNlbGVjdG9ycyhFbnZpcm9ubWVudCAkZW52LCAkc2VsZlBhcmVudCA9IG51bGwpCiAgICB7CiAgICAgICAgJGVudnMgICAgICAgICAgICA9ICR0aGlzLT5jb21wYWN0RW52KCRlbnYpOwogICAgICAgICRzZWxlY3RvcnMgICAgICAgPSBbXTsKICAgICAgICAkcGFyZW50U2VsZWN0b3JzID0gW1tdXTsKCiAgICAgICAgJHNlbGZQYXJlbnRTZWxlY3RvcnMgPSBudWxsOwoKICAgICAgICBpZiAoISBpc19udWxsKCRzZWxmUGFyZW50KSAmJiAkc2VsZlBhcmVudC0+c2VsZWN0b3JzKSB7CiAgICAgICAgICAgICRzZWxmUGFyZW50U2VsZWN0b3JzID0gJHRoaXMtPmV2YWxTZWxlY3RvcnMoJHNlbGZQYXJlbnQtPnNlbGVjdG9ycyk7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoJGVudiA9IGFycmF5X3BvcCgkZW52cykpIHsKICAgICAgICAgICAgaWYgKGVtcHR5KCRlbnYtPnNlbGVjdG9ycykpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2VsZWN0b3JzID0gJGVudi0+c2VsZWN0b3JzOwoKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgJHN0aWxsSGFzU2VsZiA9IGZhbHNlOwogICAgICAgICAgICAgICAgJHByZXZTZWxlY3RvcnMgPSAkc2VsZWN0b3JzOwogICAgICAgICAgICAgICAgJHNlbGVjdG9ycyA9IFtdOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwcmV2U2VsZWN0b3JzIGFzICRzZWxlY3RvcikgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJlbnRTZWxlY3RvcnMgYXMgJHBhcmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHNlbGZQYXJlbnRTZWxlY3RvcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRzZWxmUGFyZW50U2VsZWN0b3JzIGFzICRzZWxmUGFyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbm8gJyYnIGluIHRoZSBzZWxlY3RvciwgZWFjaCBjYWxsIHdpbGwgZ2l2ZSBzYW1lIHJlc3VsdCwgb25seSBhZGQgb25jZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzID0gJHRoaXMtPmpvaW5TZWxlY3RvcnMoJHBhcmVudCwgJHNlbGVjdG9yLCAkc3RpbGxIYXNTZWxmLCAkc2VsZlBhcmVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGVjdG9yc1tzZXJpYWxpemUoJHMpXSA9ICRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHMgPSAkdGhpcy0+am9pblNlbGVjdG9ycygkcGFyZW50LCAkc2VsZWN0b3IsICRzdGlsbEhhc1NlbGYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGVjdG9yc1tzZXJpYWxpemUoJHMpXSA9ICRzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IHdoaWxlICgkc3RpbGxIYXNTZWxmKTsKCiAgICAgICAgICAgICRwYXJlbnRTZWxlY3RvcnMgPSAkc2VsZWN0b3JzOwogICAgICAgIH0KCiAgICAgICAgJHNlbGVjdG9ycyA9IGFycmF5X3ZhbHVlcygkc2VsZWN0b3JzKTsKCiAgICAgICAgcmV0dXJuICRzZWxlY3RvcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBKb2luIHNlbGVjdG9yczsgbG9va3MgZm9yICYgdG8gcmVwbGFjZSwgb3IgYXBwZW5kIHBhcmVudCBiZWZvcmUgY2hpbGQKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkcGFyZW50CiAgICAgKiBAcGFyYW0gYXJyYXkgICAkY2hpbGQKICAgICAqIEBwYXJhbSBib29sZWFuICYkc3RpbGxIYXNTZWxmCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkc2VsZlBhcmVudFNlbGVjdG9ycwoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGpvaW5TZWxlY3RvcnMoJHBhcmVudCwgJGNoaWxkLCAmJHN0aWxsSGFzU2VsZiwgJHNlbGZQYXJlbnRTZWxlY3RvcnMgPSBudWxsKQogICAgewogICAgICAgICRzZXRTZWxmID0gZmFsc2U7CiAgICAgICAgJG91dCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkY2hpbGQgYXMgJHBhcnQpIHsKICAgICAgICAgICAgJG5ld1BhcnQgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJ0IGFzICRwKSB7CiAgICAgICAgICAgICAgICAvLyBvbmx5IHJlcGxhY2UgJiBvbmNlIGFuZCBzaG91bGQgYmUgcmVjYWxsZWQgdG8gYmUgYWJsZSB0byBtYWtlIGNvbWJpbmF0aW9ucwogICAgICAgICAgICAgICAgaWYgKCRwID09PSBzdGF0aWM6OiRzZWxmU2VsZWN0b3IgJiYgJHNldFNlbGYpIHsKICAgICAgICAgICAgICAgICAgICAkc3RpbGxIYXNTZWxmID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJHAgPT09IHN0YXRpYzo6JHNlbGZTZWxlY3RvciAmJiAhICRzZXRTZWxmKSB7CiAgICAgICAgICAgICAgICAgICAgJHNldFNlbGYgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfbnVsbCgkc2VsZlBhcmVudFNlbGVjdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNlbGZQYXJlbnRTZWxlY3RvcnMgPSAkcGFyZW50OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHNlbGZQYXJlbnRTZWxlY3RvcnMgYXMgJGkgPT4gJHBhcmVudFBhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJG5ld1BhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmV3UGFydCA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGFyZW50UGFydCBhcyAkcHApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkcHApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZsYXR0ZW4gPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV93YWxrX3JlY3Vyc2l2ZSgkcHAsIGZ1bmN0aW9uICgkYSkgdXNlICgmJGZsYXR0ZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZsYXR0ZW5bXSA9ICRhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcCA9IGltcGxvZGUoJGZsYXR0ZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuZXdQYXJ0W10gPSAkcHA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRuZXdQYXJ0W10gPSAkcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG91dFtdID0gJG5ld1BhcnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNldFNlbGYgPyAkb3V0IDogYXJyYXlfbWVyZ2UoJHBhcmVudCwgJGNoaWxkKTsKICAgIH0KCiAgICAvKioKICAgICAqIE11bHRpcGx5IG1lZGlhCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQgJGVudgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkUXVlcmllcwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG11bHRpcGx5TWVkaWEoRW52aXJvbm1lbnQgJGVudiA9IG51bGwsICRjaGlsZFF1ZXJpZXMgPSBudWxsKQogICAgewogICAgICAgIGlmICghIGlzc2V0KCRlbnYpIHx8CiAgICAgICAgICAgICEgZW1wdHkoJGVudi0+YmxvY2stPnR5cGUpICYmICRlbnYtPmJsb2NrLT50eXBlICE9PSBUeXBlOjpUX01FRElBCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiAkY2hpbGRRdWVyaWVzOwogICAgICAgIH0KCiAgICAgICAgLy8gcGxhaW4gb2xkIGJsb2NrLCBza2lwCiAgICAgICAgaWYgKGVtcHR5KCRlbnYtPmJsb2NrLT50eXBlKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPm11bHRpcGx5TWVkaWEoJGVudi0+cGFyZW50LCAkY2hpbGRRdWVyaWVzKTsKICAgICAgICB9CgogICAgICAgICRwYXJlbnRRdWVyaWVzID0gaXNzZXQoJGVudi0+YmxvY2stPnF1ZXJ5TGlzdCkKICAgICAgICAgICAgPyAkZW52LT5ibG9jay0+cXVlcnlMaXN0CiAgICAgICAgICAgIDogW1tbVHlwZTo6VF9NRURJQV9WQUxVRSwgJGVudi0+YmxvY2stPnZhbHVlXV1dOwoKICAgICAgICAkc3RvcmUgPSBbJHRoaXMtPmVudiwgJHRoaXMtPnN0b3JlRW52XTsKICAgICAgICAkdGhpcy0+ZW52ID0gJGVudjsKICAgICAgICAkdGhpcy0+c3RvcmVFbnYgPSBudWxsOwogICAgICAgICRwYXJlbnRRdWVyaWVzID0gJHRoaXMtPmV2YWx1YXRlTWVkaWFRdWVyeSgkcGFyZW50UXVlcmllcyk7CiAgICAgICAgbGlzdCgkdGhpcy0+ZW52LCAkdGhpcy0+c3RvcmVFbnYpID0gJHN0b3JlOwoKICAgICAgICBpZiAoJGNoaWxkUXVlcmllcyA9PT0gbnVsbCkgewogICAgICAgICAgICAkY2hpbGRRdWVyaWVzID0gJHBhcmVudFF1ZXJpZXM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG9yaWdpbmFsUXVlcmllcyA9ICRjaGlsZFF1ZXJpZXM7CiAgICAgICAgICAgICRjaGlsZFF1ZXJpZXMgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXJlbnRRdWVyaWVzIGFzICRwYXJlbnRRdWVyeSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJG9yaWdpbmFsUXVlcmllcyBhcyAkY2hpbGRRdWVyeSkgewogICAgICAgICAgICAgICAgICAgICRjaGlsZFF1ZXJpZXNbXSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICAgICAkcGFyZW50UXVlcnksCiAgICAgICAgICAgICAgICAgICAgICAgIFtbVHlwZTo6VF9NRURJQV9UWVBFLCBbVHlwZTo6VF9LRVlXT1JELCAnYWxsJ11dXSwKICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkUXVlcnkKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm11bHRpcGx5TWVkaWEoJGVudi0+cGFyZW50LCAkY2hpbGRRdWVyaWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgZW52IGxpbmtlZCBsaXN0IHRvIHN0YWNrCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQgJGVudgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvbXBhY3RFbnYoRW52aXJvbm1lbnQgJGVudikKICAgIHsKICAgICAgICBmb3IgKCRlbnZzID0gW107ICRlbnY7ICRlbnYgPSAkZW52LT5wYXJlbnQpIHsKICAgICAgICAgICAgJGVudnNbXSA9ICRlbnY7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGVudnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0IGVudiBzdGFjayB0byBzaW5nbHkgbGlua2VkIGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGVudnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4dHJhY3RFbnYoJGVudnMpCiAgICB7CiAgICAgICAgZm9yICgkZW52ID0gbnVsbDsgJGUgPSBhcnJheV9wb3AoJGVudnMpOykgewogICAgICAgICAgICAkZS0+cGFyZW50ID0gJGVudjsKICAgICAgICAgICAgJGVudiA9ICRlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbnY7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIGVudmlyb25tZW50CiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sgJGJsb2NrCiAgICAgKgogICAgICogQHJldHVybiBcU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyXEVudmlyb25tZW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwdXNoRW52KEJsb2NrICRibG9jayA9IG51bGwpCiAgICB7CiAgICAgICAgJGVudiA9IG5ldyBFbnZpcm9ubWVudDsKICAgICAgICAkZW52LT5wYXJlbnQgPSAkdGhpcy0+ZW52OwogICAgICAgICRlbnYtPnN0b3JlICA9IFtdOwogICAgICAgICRlbnYtPmJsb2NrICA9ICRibG9jazsKICAgICAgICAkZW52LT5kZXB0aCAgPSBpc3NldCgkdGhpcy0+ZW52LT5kZXB0aCkgPyAkdGhpcy0+ZW52LT5kZXB0aCArIDEgOiAwOwoKICAgICAgICAkdGhpcy0+ZW52ID0gJGVudjsKCiAgICAgICAgcmV0dXJuICRlbnY7CiAgICB9CgogICAgLyoqCiAgICAgKiBQb3AgZW52aXJvbm1lbnQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBvcEVudigpCiAgICB7CiAgICAgICAgJHRoaXMtPmVudiA9ICR0aGlzLT5lbnYtPnBhcmVudDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBzdG9yZSBlbnZpcm9ubWVudAogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U3RvcmVFbnYoKQogICAgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+c3RvcmVFbnYpID8gJHRoaXMtPnN0b3JlRW52IDogJHRoaXMtPmVudjsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB2YXJpYWJsZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaGFkb3cKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyXEVudmlyb25tZW50ICRlbnYKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZVVucmVkdWNlZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0KCRuYW1lLCAkdmFsdWUsICRzaGFkb3cgPSBmYWxzZSwgRW52aXJvbm1lbnQgJGVudiA9IG51bGwsICR2YWx1ZVVucmVkdWNlZCA9IG51bGwpCiAgICB7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+bm9ybWFsaXplTmFtZSgkbmFtZSk7CgogICAgICAgIGlmICghIGlzc2V0KCRlbnYpKSB7CiAgICAgICAgICAgICRlbnYgPSAkdGhpcy0+Z2V0U3RvcmVFbnYoKTsKICAgICAgICB9CgogICAgICAgIGlmICgkc2hhZG93KSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRSYXcoJG5hbWUsICR2YWx1ZSwgJGVudiwgJHZhbHVlVW5yZWR1Y2VkKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+c2V0RXhpc3RpbmcoJG5hbWUsICR2YWx1ZSwgJGVudiwgJHZhbHVlVW5yZWR1Y2VkKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgZXhpc3RpbmcgdmFyaWFibGUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudCAkZW52CiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVVbnJlZHVjZWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldEV4aXN0aW5nKCRuYW1lLCAkdmFsdWUsIEVudmlyb25tZW50ICRlbnYsICR2YWx1ZVVucmVkdWNlZCA9IG51bGwpCiAgICB7CiAgICAgICAgJHN0b3JlRW52ID0gJGVudjsKCiAgICAgICAgJGhhc05hbWVzcGFjZSA9ICRuYW1lWzBdID09PSAnXicgfHwgJG5hbWVbMF0gPT09ICdAJyB8fCAkbmFtZVswXSA9PT0gJyUnOwoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRuYW1lLCAkZW52LT5zdG9yZSkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISAkaGFzTmFtZXNwYWNlICYmIGlzc2V0KCRlbnYtPm1hcmtlcikpIHsKICAgICAgICAgICAgICAgICRlbnYgPSAkc3RvcmVFbnY7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEgaXNzZXQoJGVudi0+cGFyZW50KSkgewogICAgICAgICAgICAgICAgJGVudiA9ICRzdG9yZUVudjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZW52ID0gJGVudi0+cGFyZW50OwogICAgICAgIH0KCiAgICAgICAgJGVudi0+c3RvcmVbJG5hbWVdID0gJHZhbHVlOwoKICAgICAgICBpZiAoJHZhbHVlVW5yZWR1Y2VkKSB7CiAgICAgICAgICAgICRlbnYtPnN0b3JlVW5yZWR1Y2VkWyRuYW1lXSA9ICR2YWx1ZVVucmVkdWNlZDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgcmF3IHZhcmlhYmxlCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXJcRW52aXJvbm1lbnQgJGVudgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhbHVlVW5yZWR1Y2VkCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZXRSYXcoJG5hbWUsICR2YWx1ZSwgRW52aXJvbm1lbnQgJGVudiwgJHZhbHVlVW5yZWR1Y2VkID0gbnVsbCkKICAgIHsKICAgICAgICAkZW52LT5zdG9yZVskbmFtZV0gPSAkdmFsdWU7CgogICAgICAgIGlmICgkdmFsdWVVbnJlZHVjZWQpIHsKICAgICAgICAgICAgJGVudi0+c3RvcmVVbnJlZHVjZWRbJG5hbWVdID0gJHZhbHVlVW5yZWR1Y2VkOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB2YXJpYWJsZQogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZQogICAgICogQHBhcmFtIGJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNob3VsZFRocm93CiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudCAkZW52CiAgICAgKiBAcGFyYW0gYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdW5yZWR1Y2VkCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoJG5hbWUsICRzaG91bGRUaHJvdyA9IHRydWUsIEVudmlyb25tZW50ICRlbnYgPSBudWxsLCAkdW5yZWR1Y2VkID0gZmFsc2UpCiAgICB7CiAgICAgICAgJG5vcm1hbGl6ZWROYW1lID0gJHRoaXMtPm5vcm1hbGl6ZU5hbWUoJG5hbWUpOwogICAgICAgICRzcGVjaWFsQ29udGVudEtleSA9IHN0YXRpYzo6JG5hbWVzcGFjZXNbJ3NwZWNpYWwnXSAuICdjb250ZW50JzsKCiAgICAgICAgaWYgKCEgaXNzZXQoJGVudikpIHsKICAgICAgICAgICAgJGVudiA9ICR0aGlzLT5nZXRTdG9yZUVudigpOwogICAgICAgIH0KCiAgICAgICAgJG5leHRJc1Jvb3QgPSBmYWxzZTsKICAgICAgICAkaGFzTmFtZXNwYWNlID0gJG5vcm1hbGl6ZWROYW1lWzBdID09PSAnXicgfHwgJG5vcm1hbGl6ZWROYW1lWzBdID09PSAnQCcgfHwgJG5vcm1hbGl6ZWROYW1lWzBdID09PSAnJSc7CgogICAgICAgICRtYXhEZXB0aCA9IDEwMDAwOwoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgIGlmICgkbWF4RGVwdGgtLSA8PSAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJG5vcm1hbGl6ZWROYW1lLCAkZW52LT5zdG9yZSkpIHsKICAgICAgICAgICAgICAgIGlmICgkdW5yZWR1Y2VkICYmIGlzc2V0KCRlbnYtPnN0b3JlVW5yZWR1Y2VkWyRub3JtYWxpemVkTmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbnYtPnN0b3JlVW5yZWR1Y2VkWyRub3JtYWxpemVkTmFtZV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRlbnYtPnN0b3JlWyRub3JtYWxpemVkTmFtZV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghICRoYXNOYW1lc3BhY2UgJiYgaXNzZXQoJGVudi0+bWFya2VyKSkgewogICAgICAgICAgICAgICAgaWYgKCEgJG5leHRJc1Jvb3QgJiYgISBlbXB0eSgkZW52LT5zdG9yZVskc3BlY2lhbENvbnRlbnRLZXldKSkgewogICAgICAgICAgICAgICAgICAgICRlbnYgPSAkZW52LT5zdG9yZVskc3BlY2lhbENvbnRlbnRLZXldLT5zY29wZTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZW52ID0gJHRoaXMtPnJvb3RFbnY7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEgaXNzZXQoJGVudi0+cGFyZW50KSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRlbnYgPSAkZW52LT5wYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNob3VsZFRocm93KSB7CiAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCJVbmRlZmluZWQgdmFyaWFibGUgXCQkbmFtZSIgLiAoJG1heERlcHRoPD0wID8gIiAoaW5maW5pdGUgcmVjdXJzaW9uKSIgOiAiIikpOwogICAgICAgIH0KCiAgICAgICAgLy8gZm91bmQgbm90aGluZwogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogSGFzIHZhcmlhYmxlPwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudCAkZW52CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBoYXMoJG5hbWUsIEVudmlyb25tZW50ICRlbnYgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0KCRuYW1lLCBmYWxzZSwgJGVudikgIT09IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBJbmplY3QgdmFyaWFibGVzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRhcmdzCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbmplY3RWYXJpYWJsZXMoYXJyYXkgJGFyZ3MpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCRhcmdzKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VyID0gJHRoaXMtPnBhcnNlckZhY3RvcnkoX19NRVRIT0RfXyk7CgogICAgICAgIGZvcmVhY2ggKCRhcmdzIGFzICRuYW1lID0+ICRzdHJWYWx1ZSkgewogICAgICAgICAgICBpZiAoJG5hbWVbMF0gPT09ICckJykgewogICAgICAgICAgICAgICAgJG5hbWUgPSBzdWJzdHIoJG5hbWUsIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISAkcGFyc2VyLT5wYXJzZVZhbHVlKCRzdHJWYWx1ZSwgJHZhbHVlKSkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gJHRoaXMtPmNvZXJjZVZhbHVlKCRzdHJWYWx1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZXQoJG5hbWUsICR2YWx1ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2V0IHZhcmlhYmxlcwogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhcmlhYmxlcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFyaWFibGVzKGFycmF5ICR2YXJpYWJsZXMpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlZ2lzdGVyZWRWYXJzID0gYXJyYXlfbWVyZ2UoJHRoaXMtPnJlZ2lzdGVyZWRWYXJzLCAkdmFyaWFibGVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFVuc2V0IHZhcmlhYmxlCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuc2V0VmFyaWFibGUoJG5hbWUpCiAgICB7CiAgICAgICAgdW5zZXQoJHRoaXMtPnJlZ2lzdGVyZWRWYXJzWyRuYW1lXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGxpc3Qgb2YgdmFyaWFibGVzCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhcmlhYmxlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWdpc3RlcmVkVmFyczsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgdG8gbGlzdCBvZiBwYXJzZWQgZmlsZXMKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcGF0aAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkUGFyc2VkRmlsZSgkcGF0aCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHBhdGgpICYmIGZpbGVfZXhpc3RzKCRwYXRoKSkgewogICAgICAgICAgICAkdGhpcy0+cGFyc2VkRmlsZXNbcmVhbHBhdGgoJHBhdGgpXSA9IGZpbGVtdGltZSgkcGF0aCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBsaXN0IG9mIHBhcnNlZCBmaWxlcwogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXJzZWRGaWxlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZWRGaWxlczsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBpbXBvcnQgcGF0aAogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlICRwYXRoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRJbXBvcnRQYXRoKCRwYXRoKQogICAgewogICAgICAgIGlmICghIGluX2FycmF5KCRwYXRoLCAkdGhpcy0+aW1wb3J0UGF0aHMpKSB7CiAgICAgICAgICAgICR0aGlzLT5pbXBvcnRQYXRoc1tdID0gJHBhdGg7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2V0IGltcG9ydCBwYXRocwogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRwYXRoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRJbXBvcnRQYXRocygkcGF0aCkKICAgIHsKICAgICAgICAkdGhpcy0+aW1wb3J0UGF0aHMgPSAoYXJyYXkpICRwYXRoOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IG51bWJlciBwcmVjaXNpb24KICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIGludGVnZXIgJG51bWJlclByZWNpc2lvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TnVtYmVyUHJlY2lzaW9uKCRudW1iZXJQcmVjaXNpb24pCiAgICB7CiAgICAgICAgTm9kZVxOdW1iZXI6OiRwcmVjaXNpb24gPSAkbnVtYmVyUHJlY2lzaW9uOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IGZvcm1hdHRlcgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmb3JtYXR0ZXJOYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRGb3JtYXR0ZXIoJGZvcm1hdHRlck5hbWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmZvcm1hdHRlciA9ICRmb3JtYXR0ZXJOYW1lOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IGxpbmUgbnVtYmVyIHN0eWxlCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxpbmVOdW1iZXJTdHlsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TGluZU51bWJlclN0eWxlKCRsaW5lTnVtYmVyU3R5bGUpCiAgICB7CiAgICAgICAgJHRoaXMtPmxpbmVOdW1iZXJTdHlsZSA9ICRsaW5lTnVtYmVyU3R5bGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmFibGUvZGlzYWJsZSBzb3VyY2UgbWFwcwogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkc291cmNlTWFwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRTb3VyY2VNYXAoJHNvdXJjZU1hcCkKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlTWFwID0gJHNvdXJjZU1hcDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBzb3VyY2UgbWFwIG9wdGlvbnMKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzb3VyY2VNYXBPcHRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRTb3VyY2VNYXBPcHRpb25zKCRzb3VyY2VNYXBPcHRpb25zKQogICAgewogICAgICAgICR0aGlzLT5zb3VyY2VNYXBPcHRpb25zID0gJHNvdXJjZU1hcE9wdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdpc3RlciBmdW5jdGlvbgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJG5hbWUKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkZnVuYwogICAgICogQHBhcmFtIGFycmF5ICAgICRwcm90b3R5cGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2lzdGVyRnVuY3Rpb24oJG5hbWUsICRmdW5jLCAkcHJvdG90eXBlID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+dXNlckZ1bmN0aW9uc1skdGhpcy0+bm9ybWFsaXplTmFtZSgkbmFtZSldID0gWyRmdW5jLCAkcHJvdG90eXBlXTsKICAgIH0KCiAgICAvKioKICAgICAqIFVucmVnaXN0ZXIgZnVuY3Rpb24KICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5yZWdpc3RlckZ1bmN0aW9uKCRuYW1lKQogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT51c2VyRnVuY3Rpb25zWyR0aGlzLT5ub3JtYWxpemVOYW1lKCRuYW1lKV0pOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGZlYXR1cmUKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkRmVhdHVyZSgkbmFtZSkKICAgIHsKICAgICAgICAkdGhpcy0+cmVnaXN0ZXJlZEZlYXR1cmVzWyRuYW1lXSA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBJbXBvcnQgZmlsZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGF0aAogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRvdXQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGltcG9ydEZpbGUoJHBhdGgsIE91dHB1dEJsb2NrICRvdXQpCiAgICB7CiAgICAgICAgLy8gc2VlIGlmIHRyZWUgaXMgY2FjaGVkCiAgICAgICAgJHJlYWxQYXRoID0gcmVhbHBhdGgoJHBhdGgpOwoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmltcG9ydENhY2hlWyRyZWFsUGF0aF0pKSB7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVJbXBvcnRMb29wKCRyZWFsUGF0aCk7CgogICAgICAgICAgICAkdHJlZSA9ICR0aGlzLT5pbXBvcnRDYWNoZVskcmVhbFBhdGhdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjb2RlICAgPSBmaWxlX2dldF9jb250ZW50cygkcGF0aCk7CiAgICAgICAgICAgICRwYXJzZXIgPSAkdGhpcy0+cGFyc2VyRmFjdG9yeSgkcGF0aCk7CiAgICAgICAgICAgICR0cmVlICAgPSAkcGFyc2VyLT5wYXJzZSgkY29kZSk7CgogICAgICAgICAgICAkdGhpcy0+aW1wb3J0Q2FjaGVbJHJlYWxQYXRoXSA9ICR0cmVlOwogICAgICAgIH0KCiAgICAgICAgJHBpID0gcGF0aGluZm8oJHBhdGgpOwogICAgICAgIGFycmF5X3Vuc2hpZnQoJHRoaXMtPmltcG9ydFBhdGhzLCAkcGlbJ2Rpcm5hbWUnXSk7CiAgICAgICAgJHRoaXMtPmNvbXBpbGVDaGlsZHJlbk5vUmV0dXJuKCR0cmVlLT5jaGlsZHJlbiwgJG91dCk7CiAgICAgICAgYXJyYXlfc2hpZnQoJHRoaXMtPmltcG9ydFBhdGhzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgZmlsZSBwYXRoIGZvciBhbiBpbXBvcnQgdXJsIGlmIGl0IGV4aXN0cwogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1cmwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmaW5kSW1wb3J0KCR1cmwpCiAgICB7CiAgICAgICAgJHVybHMgPSBbXTsKCiAgICAgICAgLy8gZm9yICJub3JtYWwiIHNjc3MgaW1wb3J0cyAoaWdub3JlIHZhbmlsbGEgY3NzIGFuZCBleHRlcm5hbCByZXF1ZXN0cykKICAgICAgICBpZiAoISBwcmVnX21hdGNoKCcvXC5jc3MkfF5odHRwcz86XC9cLy8nLCAkdXJsKSkgewogICAgICAgICAgICAvLyB0cnkgYm90aCBub3JtYWwgYW5kIHRoZSBfcGFydGlhbCBmaWxlbmFtZQogICAgICAgICAgICAkdXJscyA9IFskdXJsLCBwcmVnX3JlcGxhY2UoJy9bXlwvXSskLycsICdfXDAnLCAkdXJsKV07CiAgICAgICAgfQoKICAgICAgICAkaGFzRXh0ZW5zaW9uID0gcHJlZ19tYXRjaCgnL1suXXM/Y3NzJC8nLCAkdXJsKTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmltcG9ydFBhdGhzIGFzICRkaXIpIHsKICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkZGlyKSkgewogICAgICAgICAgICAgICAgLy8gY2hlY2sgdXJscyBmb3Igbm9ybWFsIGltcG9ydCBwYXRocwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHVybHMgYXMgJGZ1bGwpIHsKICAgICAgICAgICAgICAgICAgICAkc2VwYXJhdG9yID0gKAogICAgICAgICAgICAgICAgICAgICAgICAhIGVtcHR5KCRkaXIpICYmCiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cigkZGlyLCAtMSkgIT09ICcvJyAmJgogICAgICAgICAgICAgICAgICAgICAgICBzdWJzdHIoJGZ1bGwsIDAsIDEpICE9PSAnLycKICAgICAgICAgICAgICAgICAgICApID8gJy8nIDogJyc7CiAgICAgICAgICAgICAgICAgICAgJGZ1bGwgPSAkZGlyIC4gJHNlcGFyYXRvciAuICRmdWxsOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmZpbGVFeGlzdHMoJGZpbGUgPSAkZnVsbCAuICcuc2NzcycpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICgkaGFzRXh0ZW5zaW9uICYmICR0aGlzLT5maWxlRXhpc3RzKCRmaWxlID0gJGZ1bGwpKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoaXNfY2FsbGFibGUoJGRpcikpIHsKICAgICAgICAgICAgICAgIC8vIGNoZWNrIGN1c3RvbSBjYWxsYmFjayBmb3IgaW1wb3J0IHBhdGgKICAgICAgICAgICAgICAgICRmaWxlID0gY2FsbF91c2VyX2Z1bmMoJGRpciwgJHVybCk7CgogICAgICAgICAgICAgICAgaWYgKCRmaWxlICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCBlbmNvZGluZwogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmNvZGluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RW5jb2RpbmcoJGVuY29kaW5nKQogICAgewogICAgICAgICR0aGlzLT5lbmNvZGluZyA9ICRlbmNvZGluZzsKICAgIH0KCiAgICAvKioKICAgICAqIElnbm9yZSBlcnJvcnM/CiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBib29sZWFuICRpZ25vcmVFcnJvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldElnbm9yZUVycm9ycygkaWdub3JlRXJyb3JzKQogICAgewogICAgICAgICR0aGlzLT5pZ25vcmVFcnJvcnMgPSAkaWdub3JlRXJyb3JzOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaHJvdyBlcnJvciAoZXhjZXB0aW9uKQogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtc2cgTWVzc2FnZSB3aXRoIG9wdGlvbmFsIHNwcmludGYoKS1zdHlsZSB2YXJhcmcgcGFyYW1ldGVycwogICAgICoKICAgICAqIEB0aHJvd3MgXFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cQ29tcGlsZXJFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRocm93RXJyb3IoJG1zZykKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmlnbm9yZUVycm9ycykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkbGluZSAgID0gJHRoaXMtPnNvdXJjZUxpbmU7CiAgICAgICAgJGNvbHVtbiA9ICR0aGlzLT5zb3VyY2VDb2x1bW47CgogICAgICAgICRsb2MgPSBpc3NldCgkdGhpcy0+c291cmNlTmFtZXNbJHRoaXMtPnNvdXJjZUluZGV4XSkKICAgICAgICAgICAgID8gJHRoaXMtPnNvdXJjZU5hbWVzWyR0aGlzLT5zb3VyY2VJbmRleF0gLiAiIG9uIGxpbmUgJGxpbmUsIGF0IGNvbHVtbiAkY29sdW1uIgogICAgICAgICAgICAgOiAibGluZTogJGxpbmUsIGNvbHVtbjogJGNvbHVtbiI7CgogICAgICAgIGlmIChmdW5jX251bV9hcmdzKCkgPiAxKSB7CiAgICAgICAgICAgICRtc2cgPSBjYWxsX3VzZXJfZnVuY19hcnJheSgnc3ByaW50ZicsIGZ1bmNfZ2V0X2FyZ3MoKSk7CiAgICAgICAgfQoKICAgICAgICAkbXNnID0gIiRtc2c6ICRsb2MiOwoKICAgICAgICAkY2FsbFN0YWNrTXNnID0gJHRoaXMtPmNhbGxTdGFja01lc3NhZ2UoKTsKCiAgICAgICAgaWYgKCRjYWxsU3RhY2tNc2cpIHsKICAgICAgICAgICAgJG1zZyAuPSAiXG5DYWxsIFN0YWNrOlxuIiAuICRjYWxsU3RhY2tNc2c7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgQ29tcGlsZXJFeGNlcHRpb24oJG1zZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBCZWF1dGlmeSBjYWxsIHN0YWNrIGZvciBvdXRwdXQKICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkYWxsCiAgICAgKiBAcGFyYW0gbnVsbCAgICAkbGltaXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsbFN0YWNrTWVzc2FnZSgkYWxsID0gZmFsc2UsICRsaW1pdCA9IG51bGwpCiAgICB7CiAgICAgICAgJGNhbGxTdGFja01zZyA9IFtdOwogICAgICAgICRuY2FsbCA9IDA7CgogICAgICAgIGlmICgkdGhpcy0+Y2FsbFN0YWNrKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJHRoaXMtPmNhbGxTdGFjaykgYXMgJGNhbGwpIHsKICAgICAgICAgICAgICAgIGlmICgkYWxsIHx8IChpc3NldCgkY2FsbFsnbiddKSAmJiAkY2FsbFsnbiddKSkgewogICAgICAgICAgICAgICAgICAgICRtc2cgPSAiIyIgLiAkbmNhbGwrKyAuICIgIiAuICRjYWxsWyduJ10gLiAiICI7CiAgICAgICAgICAgICAgICAgICAgJG1zZyAuPSAoaXNzZXQoJHRoaXMtPnNvdXJjZU5hbWVzWyRjYWxsW1BhcnNlcjo6U09VUkNFX0lOREVYXV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkdGhpcy0+c291cmNlTmFtZXNbJGNhbGxbUGFyc2VyOjpTT1VSQ0VfSU5ERVhdXQogICAgICAgICAgICAgICAgICAgICAgICAgIDogJyh1bmtub3duIGZpbGUpJyk7CiAgICAgICAgICAgICAgICAgICAgJG1zZyAuPSAiIG9uIGxpbmUgIiAuICRjYWxsW1BhcnNlcjo6U09VUkNFX0xJTkVdOwogICAgICAgICAgICAgICAgICAgICRjYWxsU3RhY2tNc2dbXSA9ICRtc2c7CgogICAgICAgICAgICAgICAgICAgIGlmICghIGlzX251bGwoJGxpbWl0KSAmJiAkbmNhbGw+JGxpbWl0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoIlxuIiwgJGNhbGxTdGFja01zZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBIYW5kbGUgaW1wb3J0IGxvb3AKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBoYW5kbGVJbXBvcnRMb29wKCRuYW1lKQogICAgewogICAgICAgIGZvciAoJGVudiA9ICR0aGlzLT5lbnY7ICRlbnY7ICRlbnYgPSAkZW52LT5wYXJlbnQpIHsKICAgICAgICAgICAgJGZpbGUgPSAkdGhpcy0+c291cmNlTmFtZXNbJGVudi0+YmxvY2stPnNvdXJjZUluZGV4XTsKCiAgICAgICAgICAgIGlmIChyZWFscGF0aCgkZmlsZSkgPT09ICRuYW1lKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcignQW4gQGltcG9ydCBsb29wIGhhcyBiZWVuIGZvdW5kOiAlcyBpbXBvcnRzICVzJywgJGZpbGUsIGJhc2VuYW1lKCRmaWxlKSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIERvZXMgZmlsZSBleGlzdD8KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmaWxlRXhpc3RzKCRuYW1lKQogICAgewogICAgICAgIHJldHVybiBmaWxlX2V4aXN0cygkbmFtZSkgJiYgaXNfZmlsZSgkbmFtZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDYWxsIFNDU1MgQGZ1bmN0aW9uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICogQHBhcmFtIGFycmF5ICAkYXJnVmFsdWVzCiAgICAgKiBAcGFyYW0gYXJyYXkgICRyZXR1cm5WYWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbiBSZXR1cm5zIHRydWUgaWYgcmV0dXJuVmFsdWUgaXMgc2V0OyBvdGhlcndpc2UsIGZhbHNlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjYWxsU2Nzc0Z1bmN0aW9uKCRuYW1lLCAkYXJnVmFsdWVzLCAmJHJldHVyblZhbHVlKQogICAgewogICAgICAgICRmdW5jID0gJHRoaXMtPmdldChzdGF0aWM6OiRuYW1lc3BhY2VzWydmdW5jdGlvbiddIC4gJG5hbWUsIGZhbHNlKTsKCiAgICAgICAgaWYgKCEgJGZ1bmMpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnB1c2hFbnYoKTsKCiAgICAgICAgJHN0b3JlRW52ID0gJHRoaXMtPnN0b3JlRW52OwogICAgICAgICR0aGlzLT5zdG9yZUVudiA9ICR0aGlzLT5lbnY7CgogICAgICAgIC8vIHNldCB0aGUgYXJncwogICAgICAgIGlmIChpc3NldCgkZnVuYy0+YXJncykpIHsKICAgICAgICAgICAgJHRoaXMtPmFwcGx5QXJndW1lbnRzKCRmdW5jLT5hcmdzLCAkYXJnVmFsdWVzKTsKICAgICAgICB9CgogICAgICAgIC8vIHRocm93IGF3YXkgbGluZXMgYW5kIGNoaWxkcmVuCiAgICAgICAgJHRtcCA9IG5ldyBPdXRwdXRCbG9jazsKICAgICAgICAkdG1wLT5saW5lcyAgICA9IFtdOwogICAgICAgICR0bXAtPmNoaWxkcmVuID0gW107CgogICAgICAgICR0aGlzLT5lbnYtPm1hcmtlciA9ICdmdW5jdGlvbic7CgogICAgICAgICRyZXQgPSAkdGhpcy0+Y29tcGlsZUNoaWxkcmVuKCRmdW5jLT5jaGlsZHJlbiwgJHRtcCwgJHRoaXMtPmVudi0+bWFya2VyIC4gIiAiIC4gJG5hbWUpOwoKICAgICAgICAkdGhpcy0+c3RvcmVFbnYgPSAkc3RvcmVFbnY7CgogICAgICAgICR0aGlzLT5wb3BFbnYoKTsKCiAgICAgICAgJHJldHVyblZhbHVlID0gISBpc3NldCgkcmV0KSA/IHN0YXRpYzo6JGRlZmF1bHRWYWx1ZSA6ICRyZXQ7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQ2FsbCBidWlsdC1pbiBhbmQgcmVnaXN0ZXJlZCAoUEhQKSBmdW5jdGlvbnMKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgICRhcmdzCiAgICAgKiBAcGFyYW0gYXJyYXkgICRyZXR1cm5WYWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbiBSZXR1cm5zIHRydWUgaWYgcmV0dXJuVmFsdWUgaXMgc2V0OyBvdGhlcndpc2UsIGZhbHNlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjYWxsTmF0aXZlRnVuY3Rpb24oJG5hbWUsICRhcmdzLCAmJHJldHVyblZhbHVlKQogICAgewogICAgICAgIC8vIHRyeSBhIGxpYiBmdW5jdGlvbgogICAgICAgICRuYW1lID0gJHRoaXMtPm5vcm1hbGl6ZU5hbWUoJG5hbWUpOwoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnVzZXJGdW5jdGlvbnNbJG5hbWVdKSkgewogICAgICAgICAgICAvLyBzZWUgaWYgd2UgY2FuIGZpbmQgYSB1c2VyIGZ1bmN0aW9uCiAgICAgICAgICAgIGxpc3QoJGYsICRwcm90b3R5cGUpID0gJHRoaXMtPnVzZXJGdW5jdGlvbnNbJG5hbWVdOwogICAgICAgIH0gZWxzZWlmICgoJGYgPSAkdGhpcy0+Z2V0QnVpbHRpbkZ1bmN0aW9uKCRuYW1lKSkgJiYgaXNfY2FsbGFibGUoJGYpKSB7CiAgICAgICAgICAgICRsaWJOYW1lICAgPSAkZlsxXTsKICAgICAgICAgICAgJHByb3RvdHlwZSA9IGlzc2V0KHN0YXRpYzo6JCRsaWJOYW1lKSA/IHN0YXRpYzo6JCRsaWJOYW1lIDogbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBAbGlzdCgkc29ydGVkLCAka3dhcmdzKSA9ICR0aGlzLT5zb3J0QXJncygkcHJvdG90eXBlLCAkYXJncyk7CgogICAgICAgIGlmICgkbmFtZSAhPT0gJ2lmJyAmJiAkbmFtZSAhPT0gJ2NhbGwnKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRzb3J0ZWQgYXMgJiR2YWwpIHsKICAgICAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+cmVkdWNlKCR2YWwsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcmV0dXJuVmFsdWUgPSBjYWxsX3VzZXJfZnVuYygkZiwgJHNvcnRlZCwgJGt3YXJncyk7CgogICAgICAgIGlmICghIGlzc2V0KCRyZXR1cm5WYWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHJldHVyblZhbHVlID0gJHRoaXMtPmNvZXJjZVZhbHVlKCRyZXR1cm5WYWx1ZSk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGJ1aWx0LWluIGZ1bmN0aW9uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBOb3JtYWxpemVkIG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRCdWlsdGluRnVuY3Rpb24oJG5hbWUpCiAgICB7CiAgICAgICAgJGxpYk5hbWUgPSAnbGliJyAuIHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICAgJy9fKC4pLycsCiAgICAgICAgICAgIGZ1bmN0aW9uICgkbSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHVjZmlyc3QoJG1bMV0pOwogICAgICAgICAgICB9LAogICAgICAgICAgICB1Y2ZpcnN0KCRuYW1lKQogICAgICAgICk7CgogICAgICAgIHJldHVybiBbJHRoaXMsICRsaWJOYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNvcnRzIGtleXdvcmQgYXJndW1lbnRzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwcm90b3R5cGUKICAgICAqIEBwYXJhbSBhcnJheSAkYXJncwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNvcnRBcmdzKCRwcm90b3R5cGVzLCAkYXJncykKICAgIHsKICAgICAgICBzdGF0aWMgJHBhcnNlciA9IG51bGw7CgogICAgICAgIGlmICghIGlzc2V0KCRwcm90b3R5cGVzKSkgewogICAgICAgICAgICAka2V5QXJncyA9IFtdOwogICAgICAgICAgICAkcG9zQXJncyA9IFtdOwoKICAgICAgICAgICAgLy8gc2VwYXJhdGUgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMKICAgICAgICAgICAgZm9yZWFjaCAoJGFyZ3MgYXMgJGFyZykgewogICAgICAgICAgICAgICAgbGlzdCgka2V5LCAkdmFsdWUpID0gJGFyZzsKCiAgICAgICAgICAgICAgICAka2V5ID0gJGtleVsxXTsKCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJGtleSkpIHsKICAgICAgICAgICAgICAgICAgICAkcG9zQXJnc1tdID0gZW1wdHkoJGFyZ1syXSkgPyAkdmFsdWUgOiAkYXJnOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAka2V5QXJnc1ska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFskcG9zQXJncywgJGtleUFyZ3NdOwogICAgICAgIH0KCiAgICAgICAgJGZpbmFsQXJncyA9IFtdOwoKICAgICAgICBpZiAoISBpc19hcnJheShyZXNldCgkcHJvdG90eXBlcykpKSB7CiAgICAgICAgICAgICRwcm90b3R5cGVzID0gWyRwcm90b3R5cGVzXTsKICAgICAgICB9CgogICAgICAgICRrZXlBcmdzID0gW107CgogICAgICAgIC8vIHRyeWluZyBlYWNoIHByb3RvdHlwZXMKICAgICAgICAkcHJvdG90eXBlSGFzTWF0Y2ggPSBmYWxzZTsKICAgICAgICAkZXhjZXB0aW9uTWVzc2FnZSA9ICcnOwoKICAgICAgICBmb3JlYWNoICgkcHJvdG90eXBlcyBhcyAkcHJvdG90eXBlKSB7CiAgICAgICAgICAgICRhcmdEZWYgPSBbXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRwcm90b3R5cGUgYXMgJGkgPT4gJHApIHsKICAgICAgICAgICAgICAgICRkZWZhdWx0ID0gbnVsbDsKICAgICAgICAgICAgICAgICRwICAgICAgID0gZXhwbG9kZSgnOicsICRwLCAyKTsKICAgICAgICAgICAgICAgICRuYW1lICAgID0gYXJyYXlfc2hpZnQoJHApOwoKICAgICAgICAgICAgICAgIGlmIChjb3VudCgkcCkpIHsKICAgICAgICAgICAgICAgICAgICAkcCA9IHRyaW0ocmVzZXQoJHApKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRwID09PSAnbnVsbCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlmZmVyZW50aWF0ZSB0aGlzIG51bGwgZnJvbSB0aGUgc3RhdGljOjokbnVsbAogICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdCA9IFtUeXBlOjpUX0tFWVdPUkQsICdudWxsJ107CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX251bGwoJHBhcnNlcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJzZXIgPSAkdGhpcy0+cGFyc2VyRmFjdG9yeShfX01FVEhPRF9fKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnNlci0+cGFyc2VWYWx1ZSgkcCwgJGRlZmF1bHQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkaXNWYXJpYWJsZSA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIGlmIChzdWJzdHIoJG5hbWUsIC0zKSA9PT0gJy4uLicpIHsKICAgICAgICAgICAgICAgICAgICAkaXNWYXJpYWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBzdWJzdHIoJG5hbWUsIDAsIC0zKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYXJnRGVmW10gPSBbJG5hbWUsICRkZWZhdWx0LCAkaXNWYXJpYWJsZV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkdmFycyA9ICR0aGlzLT5hcHBseUFyZ3VtZW50cygkYXJnRGVmLCAkYXJncywgZmFsc2UpOwoKICAgICAgICAgICAgICAgIC8vIGVuc3VyZSBhbGwgYXJncyBhcmUgcG9wdWxhdGVkCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcHJvdG90eXBlIGFzICRpID0+ICRwKSB7CiAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBleHBsb2RlKCc6JywgJHApWzBdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoISBpc3NldCgkZmluYWxBcmdzWyRpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbmFsQXJnc1skaV0gPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBhcHBseSBwb3NpdGlvbmFsIGFyZ3MKICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3ZhbHVlcygkdmFycykgYXMgJGkgPT4gJHZhbCkgewogICAgICAgICAgICAgICAgICAgICRmaW5hbEFyZ3NbJGldID0gJHZhbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAka2V5QXJncyA9IGFycmF5X21lcmdlKCRrZXlBcmdzLCAkdmFycyk7CiAgICAgICAgICAgICAgICAkcHJvdG90eXBlSGFzTWF0Y2ggPSB0cnVlOwoKICAgICAgICAgICAgICAgIC8vIG92ZXJ3cml0ZSBwb3NpdGlvbmFsIGFyZ3Mgd2l0aCBrZXl3b3JkIGFyZ3MKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwcm90b3R5cGUgYXMgJGkgPT4gJHApIHsKICAgICAgICAgICAgICAgICAgICAkbmFtZSA9IGV4cGxvZGUoJzonLCAkcClbMF07CgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgka2V5QXJnc1skbmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaW5hbEFyZ3NbJGldID0gJGtleUFyZ3NbJG5hbWVdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBudWxsIHZhbHVlIGFzIGRlZmF1bHQ6IHRyYW5zbGF0ZSB0byByZWFsIG51bGwgaGVyZQogICAgICAgICAgICAgICAgICAgIGlmICgkZmluYWxBcmdzWyRpXSA9PT0gW1R5cGU6OlRfS0VZV09SRCwgJ251bGwnXSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZmluYWxBcmdzWyRpXSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gc2hvdWxkIHdlIGJyZWFrIGlmIHRoaXMgcHJvdG90eXBlIHNlZW1zIGZ1bGZpbGxlZD8KICAgICAgICAgICAgfSBjYXRjaCAoQ29tcGlsZXJFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICRleGNlcHRpb25NZXNzYWdlID0gJGUtPmdldE1lc3NhZ2UoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRleGNlcHRpb25NZXNzYWdlICYmICEgJHByb3RvdHlwZUhhc01hdGNoKSB7CiAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCRleGNlcHRpb25NZXNzYWdlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJGZpbmFsQXJncywgJGtleUFyZ3NdOwogICAgfQoKICAgIC8qKgogICAgICogQXBwbHkgYXJndW1lbnQgdmFsdWVzIHBlciBkZWZpbml0aW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRhcmdEZWYKICAgICAqIEBwYXJhbSBhcnJheSAkYXJnVmFsdWVzCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcHBseUFyZ3VtZW50cygkYXJnRGVmLCAkYXJnVmFsdWVzLCAkc3RvcmVJbkVudiA9IHRydWUpCiAgICB7CiAgICAgICAgJG91dHB1dCA9IFtdOwoKICAgICAgICBpZiAoJHN0b3JlSW5FbnYpIHsKICAgICAgICAgICAgJHN0b3JlRW52ID0gJHRoaXMtPmdldFN0b3JlRW52KCk7CgogICAgICAgICAgICAkZW52ID0gbmV3IEVudmlyb25tZW50OwogICAgICAgICAgICAkZW52LT5zdG9yZSA9ICRzdG9yZUVudi0+c3RvcmU7CiAgICAgICAgfQoKICAgICAgICAkaGFzVmFyaWFibGUgPSBmYWxzZTsKICAgICAgICAkYXJncyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkYXJnRGVmIGFzICRpID0+ICRhcmcpIHsKICAgICAgICAgICAgbGlzdCgkbmFtZSwgJGRlZmF1bHQsICRpc1ZhcmlhYmxlKSA9ICRhcmdEZWZbJGldOwoKICAgICAgICAgICAgJGFyZ3NbJG5hbWVdID0gWyRpLCAkbmFtZSwgJGRlZmF1bHQsICRpc1ZhcmlhYmxlXTsKICAgICAgICAgICAgJGhhc1ZhcmlhYmxlIHw9ICRpc1ZhcmlhYmxlOwogICAgICAgIH0KCiAgICAgICAgJHNwbGF0U2VwYXJhdG9yICAgICAgPSBudWxsOwogICAgICAgICRrZXl3b3JkQXJncyAgICAgICAgID0gW107CiAgICAgICAgJGRlZmVycmVkS2V5d29yZEFyZ3MgPSBbXTsKICAgICAgICAkcmVtYWluaW5nICAgICAgICAgICA9IFtdOwogICAgICAgICRoYXNLZXl3b3JkQXJndW1lbnQgID0gZmFsc2U7CgogICAgICAgIC8vIGFzc2lnbiB0aGUga2V5d29yZCBhcmdzCiAgICAgICAgZm9yZWFjaCAoKGFycmF5KSAkYXJnVmFsdWVzIGFzICRhcmcpIHsKICAgICAgICAgICAgaWYgKCEgZW1wdHkoJGFyZ1swXSkpIHsKICAgICAgICAgICAgICAgICRoYXNLZXl3b3JkQXJndW1lbnQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmICghIGlzc2V0KCRhcmdzWyRhcmdbMF1bMV1dKSB8fCAkYXJnc1skYXJnWzBdWzFdXVszXSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaGFzVmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmVycmVkS2V5d29yZEFyZ3NbJGFyZ1swXVsxXV0gPSAkYXJnWzFdOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCJNaXhpbiBvciBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgYW4gYXJndW1lbnQgbmFtZWQgJCVzLiIsICRhcmdbMF1bMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGFyZ3NbJGFyZ1swXVsxXV1bMF0gPCBjb3VudCgkcmVtYWluaW5nKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCJUaGUgYXJndW1lbnQgJCVzIHdhcyBwYXNzZWQgYm90aCBieSBwb3NpdGlvbiBhbmQgYnkgbmFtZS4iLCAkYXJnWzBdWzFdKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGtleXdvcmRBcmdzWyRhcmdbMF1bMV1dID0gJGFyZ1sxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhcmdbMl0gPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+cmVkdWNlKCRhcmdbMV0sIHRydWUpOwoKICAgICAgICAgICAgICAgIGlmICgkdmFsWzBdID09PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsWzJdIGFzICRuYW1lID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGlzX251bWVyaWMoJG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KCRhcmdzWyRuYW1lXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChhcnJheV9rZXlzKCRhcmdzKSBhcyAkYW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cl9yZXBsYWNlKCJfIiwgIi0iLCAkYW4pID09PSBzdHJfcmVwbGFjZSgiXyIsICItIiwgJG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRhbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaGFzVmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVmZXJyZWRLZXl3b3JkQXJnc1skbmFtZV0gPSAkaXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGtleXdvcmRBcmdzWyRuYW1lXSA9ICRpdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX251bGwoJHNwbGF0U2VwYXJhdG9yKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcGxhdFNlcGFyYXRvciA9ICR2YWxbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVtYWluaW5nW10gPSAkaXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkdmFsWzBdID09PSBUeXBlOjpUX01BUCkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWxbMV0gYXMgJGkgPT4gJG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkbmFtZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAkaXRlbSA9ICR2YWxbMl1bJGldOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgaXNfbnVtZXJpYygkbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJGFyZ3NbJG5hbWVdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJGFyZ3MpIGFzICRhbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyX3JlcGxhY2UoIl8iLCAiLSIsICRhbikgPT09IHN0cl9yZXBsYWNlKCJfIiwgIi0iLCAkbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJGFuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGhhc1ZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmVycmVkS2V5d29yZEFyZ3NbJG5hbWVdID0gJGl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrZXl3b3JkQXJnc1skbmFtZV0gPSAkaXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19udWxsKCRzcGxhdFNlcGFyYXRvcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3BsYXRTZXBhcmF0b3IgPSAkdmFsWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlbWFpbmluZ1tdID0gJGl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRyZW1haW5pbmdbXSA9ICR2YWw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkaGFzS2V5d29yZEFyZ3VtZW50KSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcignUG9zaXRpb25hbCBhcmd1bWVudHMgbXVzdCBjb21lIGJlZm9yZSBrZXl3b3JkIGFyZ3VtZW50cy4nKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHJlbWFpbmluZ1tdID0gJGFyZ1sxXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGFyZ3MgYXMgJGFyZykgewogICAgICAgICAgICBsaXN0KCRpLCAkbmFtZSwgJGRlZmF1bHQsICRpc1ZhcmlhYmxlKSA9ICRhcmc7CgogICAgICAgICAgICBpZiAoJGlzVmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICR2YWwgPSBbVHlwZTo6VF9MSVNULCBpc19udWxsKCRzcGxhdFNlcGFyYXRvcikgPyAnLCcgOiAkc3BsYXRTZXBhcmF0b3IgLCBbXSwgJGlzVmFyaWFibGVdOwoKICAgICAgICAgICAgICAgIGZvciAoJGNvdW50ID0gY291bnQoJHJlbWFpbmluZyk7ICRpIDwgJGNvdW50OyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbFsyXVtdID0gJHJlbWFpbmluZ1skaV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRlZmVycmVkS2V5d29yZEFyZ3MgYXMgJGl0ZW1OYW1lID0+ICRpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbFsyXVskaXRlbU5hbWVdID0gJGl0ZW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkcmVtYWluaW5nWyRpXSkpIHsKICAgICAgICAgICAgICAgICR2YWwgPSAkcmVtYWluaW5nWyRpXTsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRrZXl3b3JkQXJnc1skbmFtZV0pKSB7CiAgICAgICAgICAgICAgICAkdmFsID0gJGtleXdvcmRBcmdzWyRuYW1lXTsKICAgICAgICAgICAgfSBlbHNlaWYgKCEgZW1wdHkoJGRlZmF1bHQpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCJNaXNzaW5nIGFyZ3VtZW50ICRuYW1lIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRzdG9yZUluRW52KSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0KCRuYW1lLCAkdGhpcy0+cmVkdWNlKCR2YWwsIHRydWUpLCB0cnVlLCAkZW52KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRvdXRwdXRbJG5hbWVdID0gJHZhbDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRzdG9yZUluRW52KSB7CiAgICAgICAgICAgICRzdG9yZUVudi0+c3RvcmUgPSAkZW52LT5zdG9yZTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRhcmdzIGFzICRhcmcpIHsKICAgICAgICAgICAgbGlzdCgkaSwgJG5hbWUsICRkZWZhdWx0LCAkaXNWYXJpYWJsZSkgPSAkYXJnOwoKICAgICAgICAgICAgaWYgKCRpc1ZhcmlhYmxlIHx8IGlzc2V0KCRyZW1haW5pbmdbJGldKSB8fCBpc3NldCgka2V5d29yZEFyZ3NbJG5hbWVdKSB8fCBlbXB0eSgkZGVmYXVsdCkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHN0b3JlSW5FbnYpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXQoJG5hbWUsICR0aGlzLT5yZWR1Y2UoJGRlZmF1bHQsIHRydWUpLCB0cnVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRvdXRwdXRbJG5hbWVdID0gJGRlZmF1bHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkb3V0cHV0OwogICAgfQoKICAgIC8qKgogICAgICogQ29lcmNlIGEgcGhwIHZhbHVlIGludG8gYSBzY3NzIG9uZQogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fFxTY3NzUGhwXFNjc3NQaHBcTm9kZVxOdW1iZXIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvZXJjZVZhbHVlKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSB8fCAkdmFsdWUgaW5zdGFuY2VvZiBcQXJyYXlBY2Nlc3MpIHsKICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChpc19ib29sKCR2YWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT50b0Jvb2woJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfbnVtZXJpYygkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgTm9kZVxOdW1iZXIoJHZhbHVlLCAnJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gc3RhdGljOjokZW1wdHlTdHJpbmc7CiAgICAgICAgfQoKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL14oIyhbMC05YS1mXXs2fSl8IyhbMC05YS1mXXszfSkpJC9pJywgJHZhbHVlLCAkbSkpIHsKICAgICAgICAgICAgJGNvbG9yID0gW1R5cGU6OlRfQ09MT1JdOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRtWzNdKSkgewogICAgICAgICAgICAgICAgJG51bSA9IGhleGRlYygkbVszXSk7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoWzMsIDIsIDFdIGFzICRpKSB7CiAgICAgICAgICAgICAgICAgICAgJHQgPSAkbnVtICYgMHhmOwogICAgICAgICAgICAgICAgICAgICRjb2xvclskaV0gPSAkdCA8PCA0IHwgJHQ7CiAgICAgICAgICAgICAgICAgICAgJG51bSA+Pj0gNDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRudW0gPSBoZXhkZWMoJG1bMl0pOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKFszLCAyLCAxXSBhcyAkaSkgewogICAgICAgICAgICAgICAgICAgICRjb2xvclskaV0gPSAkbnVtICYgMHhmZjsKICAgICAgICAgICAgICAgICAgICAkbnVtID4+PSA4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGNvbG9yOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0tFWVdPUkQsICR2YWx1ZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2VyY2Ugc29tZXRoaW5nIHRvIG1hcAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkaXRlbQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvZXJjZU1hcCgkaXRlbSkKICAgIHsKICAgICAgICBpZiAoJGl0ZW1bMF0gPT09IFR5cGU6OlRfTUFQKSB7CiAgICAgICAgICAgIHJldHVybiAkaXRlbTsKICAgICAgICB9CgogICAgICAgIGlmICgkaXRlbSA9PT0gc3RhdGljOjokZW1wdHlMaXN0KSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRlbXB0eU1hcDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9NQVAsIFskaXRlbV0sIFtzdGF0aWM6OiRudWxsXV07CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2VyY2Ugc29tZXRoaW5nIHRvIGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICRpdGVtCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWxpbQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNvZXJjZUxpc3QoJGl0ZW0sICRkZWxpbSA9ICcsJykKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJGl0ZW0pICYmICRpdGVtWzBdID09PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgcmV0dXJuICRpdGVtOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRpdGVtKSAmJiAkaXRlbVswXSA9PT0gVHlwZTo6VF9NQVApIHsKICAgICAgICAgICAgJGtleXMgPSAkaXRlbVsxXTsKICAgICAgICAgICAgJHZhbHVlcyA9ICRpdGVtWzJdOwogICAgICAgICAgICAkbGlzdCA9IFtdOwoKICAgICAgICAgICAgZm9yICgkaSA9IDAsICRzID0gY291bnQoJGtleXMpOyAkaSA8ICRzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAka2V5ID0gJGtleXNbJGldOwogICAgICAgICAgICAgICAgJHZhbHVlID0gJHZhbHVlc1skaV07CgogICAgICAgICAgICAgICAgc3dpdGNoICgka2V5WzBdKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0xJU1Q6CiAgICAgICAgICAgICAgICAgICAgY2FzZSBUeXBlOjpUX01BUDoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICRrZXkgPSBbVHlwZTo6VF9LRVlXT1JELCAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygka2V5KSldOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkbGlzdFtdID0gWwogICAgICAgICAgICAgICAgICAgIFR5cGU6OlRfTElTVCwKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICBbJGtleSwgJHZhbHVlXQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0xJU1QsICcsJywgJGxpc3RdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0xJU1QsICRkZWxpbSwgISBpc3NldCgkaXRlbSkgPyBbXTogWyRpdGVtXV07CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2VyY2UgY29sb3IgZm9yIGV4cHJlc3Npb24KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb2VyY2VGb3JFeHByZXNzaW9uKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCR2YWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuICRjb2xvcjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2VyY2UgdmFsdWUgdG8gY29sb3IKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb2VyY2VDb2xvcigkdmFsdWUpCiAgICB7CiAgICAgICAgc3dpdGNoICgkdmFsdWVbMF0pIHsKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0NPTE9SOgogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKCiAgICAgICAgICAgIGNhc2UgVHlwZTo6VF9LRVlXT1JEOgogICAgICAgICAgICAgICAgJG5hbWUgPSBzdHJ0b2xvd2VyKCR2YWx1ZVsxXSk7CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KENvbG9yczo6JGNzc0NvbG9yc1skbmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJHJnYmEgPSBleHBsb2RlKCcsJywgQ29sb3JzOjokY3NzQ29sb3JzWyRuYW1lXSk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBpc3NldCgkcmdiYVszXSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBbVHlwZTo6VF9DT0xPUiwgKGludCkgJHJnYmFbMF0sIChpbnQpICRyZ2JhWzFdLCAoaW50KSAkcmdiYVsyXSwgKGludCkgJHJnYmFbM11dCiAgICAgICAgICAgICAgICAgICAgICAgIDogW1R5cGU6OlRfQ09MT1IsIChpbnQpICRyZ2JhWzBdLCAoaW50KSAkcmdiYVsxXSwgKGludCkgJHJnYmFbMl1dOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2VyY2UgdmFsdWUgdG8gc3RyaW5nCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29lcmNlU3RyaW5nKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlWzBdID09PSBUeXBlOjpUX1NUUklORykgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX1NUUklORywgJycsIFskdGhpcy0+Y29tcGlsZVZhbHVlKCR2YWx1ZSldXTsKICAgIH0KCiAgICAvKioKICAgICAqIENvZXJjZSB2YWx1ZSB0byBhIHBlcmNlbnRhZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBpbnRlZ2VyfGZsb2F0CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb2VyY2VQZXJjZW50KCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlWzBdID09PSBUeXBlOjpUX05VTUJFUikgewogICAgICAgICAgICBpZiAoISBlbXB0eSgkdmFsdWVbMl1bJyUnXSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWVbMV0gLyAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdmFsdWVbMV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB2YWx1ZSBpcyBhIG1hcAogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0TWFwKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Y29lcmNlTWFwKCR2YWx1ZSk7CgogICAgICAgIGlmICgkdmFsdWVbMF0gIT09IFR5cGU6OlRfTUFQKSB7CiAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCdleHBlY3RpbmcgbWFwLCAlcyByZWNlaXZlZCcsICR2YWx1ZVswXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHZhbHVlIGlzIGEgbGlzdAogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0TGlzdCgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZVswXSAhPT0gVHlwZTo6VF9MSVNUKSB7CiAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCdleHBlY3RpbmcgbGlzdCwgJXMgcmVjZWl2ZWQnLCAkdmFsdWVbMF0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB2YWx1ZSBpcyBhIGNvbG9yCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhc3NlcnRDb2xvcigkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCRjb2xvciA9ICR0aGlzLT5jb2VyY2VDb2xvcigkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkY29sb3I7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcignZXhwZWN0aW5nIGNvbG9yLCAlcyByZWNlaXZlZCcsICR2YWx1ZVswXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdmFsdWUgaXMgYSBudW1iZXIKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gaW50ZWdlcnxmbG9hdAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXNzZXJ0TnVtYmVyKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlWzBdICE9PSBUeXBlOjpUX05VTUJFUikgewogICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcignZXhwZWN0aW5nIG51bWJlciwgJXMgcmVjZWl2ZWQnLCAkdmFsdWVbMF0pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZVsxXTsKICAgIH0KCiAgICAvKioKICAgICAqIE1ha2Ugc3VyZSBhIGNvbG9yJ3MgY29tcG9uZW50cyBkb24ndCBnbyBvdXQgb2YgYm91bmRzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZml4Q29sb3IoJGMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoWzEsIDIsIDNdIGFzICRpKSB7CiAgICAgICAgICAgIGlmICgkY1skaV0gPCAwKSB7CiAgICAgICAgICAgICAgICAkY1skaV0gPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNbJGldID4gMjU1KSB7CiAgICAgICAgICAgICAgICAkY1skaV0gPSAyNTU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkYzsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgUkdCIHRvIEhTTAogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcmVkCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZ3JlZW4KICAgICAqIEBwYXJhbSBpbnRlZ2VyICRibHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9IU0woJHJlZCwgJGdyZWVuLCAkYmx1ZSkKICAgIHsKICAgICAgICAkbWluID0gbWluKCRyZWQsICRncmVlbiwgJGJsdWUpOwogICAgICAgICRtYXggPSBtYXgoJHJlZCwgJGdyZWVuLCAkYmx1ZSk7CgogICAgICAgICRsID0gJG1pbiArICRtYXg7CiAgICAgICAgJGQgPSAkbWF4IC0gJG1pbjsKCiAgICAgICAgaWYgKChpbnQpICRkID09PSAwKSB7CiAgICAgICAgICAgICRoID0gJHMgPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgkbCA8IDI1NSkgewogICAgICAgICAgICAgICAgJHMgPSAkZCAvICRsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHMgPSAkZCAvICg1MTAgLSAkbCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcmVkID09ICRtYXgpIHsKICAgICAgICAgICAgICAgICRoID0gNjAgKiAoJGdyZWVuIC0gJGJsdWUpIC8gJGQ7CiAgICAgICAgICAgIH0gZWxzZWlmICgkZ3JlZW4gPT0gJG1heCkgewogICAgICAgICAgICAgICAgJGggPSA2MCAqICgkYmx1ZSAtICRyZWQpIC8gJGQgKyAxMjA7CiAgICAgICAgICAgIH0gZWxzZWlmICgkYmx1ZSA9PSAkbWF4KSB7CiAgICAgICAgICAgICAgICAkaCA9IDYwICogKCRyZWQgLSAkZ3JlZW4pIC8gJGQgKyAyNDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9IU0wsIGZtb2QoJGgsIDM2MCksICRzICogMTAwLCAkbCAvIDUuMV07CiAgICB9CgogICAgLyoqCiAgICAgKiBIdWUgdG8gUkdCIGhlbHBlcgogICAgICoKICAgICAqIEBwYXJhbSBmbG9hdCAkbTEKICAgICAqIEBwYXJhbSBmbG9hdCAkbTIKICAgICAqIEBwYXJhbSBmbG9hdCAkaAogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGh1ZVRvUkdCKCRtMSwgJG0yLCAkaCkKICAgIHsKICAgICAgICBpZiAoJGggPCAwKSB7CiAgICAgICAgICAgICRoICs9IDE7CiAgICAgICAgfSBlbHNlaWYgKCRoID4gMSkgewogICAgICAgICAgICAkaCAtPSAxOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRoICogNiA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRtMSArICgkbTIgLSAkbTEpICogJGggKiA2OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRoICogMiA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRtMjsKICAgICAgICB9CgogICAgICAgIGlmICgkaCAqIDMgPCAyKSB7CiAgICAgICAgICAgIHJldHVybiAkbTEgKyAoJG0yIC0gJG0xKSAqICgyLzMgLSAkaCkgKiA2OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtMTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgSFNMIHRvIFJHQgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaHVlICAgICAgICBIIGZyb20gMCB0byAzNjAKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRzYXR1cmF0aW9uIFMgZnJvbSAwIHRvIDEwMAogICAgICogQHBhcmFtIGludGVnZXIgJGxpZ2h0bmVzcyAgTCBmcm9tIDAgdG8gMTAwCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9SR0IoJGh1ZSwgJHNhdHVyYXRpb24sICRsaWdodG5lc3MpCiAgICB7CiAgICAgICAgaWYgKCRodWUgPCAwKSB7CiAgICAgICAgICAgICRodWUgKz0gMzYwOwogICAgICAgIH0KCiAgICAgICAgJGggPSAkaHVlIC8gMzYwOwogICAgICAgICRzID0gbWluKDEwMCwgbWF4KDAsICRzYXR1cmF0aW9uKSkgLyAxMDA7CiAgICAgICAgJGwgPSBtaW4oMTAwLCBtYXgoMCwgJGxpZ2h0bmVzcykpIC8gMTAwOwoKICAgICAgICAkbTIgPSAkbCA8PSAwLjUgPyAkbCAqICgkcyArIDEpIDogJGwgKyAkcyAtICRsICogJHM7CiAgICAgICAgJG0xID0gJGwgKiAyIC0gJG0yOwoKICAgICAgICAkciA9ICR0aGlzLT5odWVUb1JHQigkbTEsICRtMiwgJGggKyAxLzMpICogMjU1OwogICAgICAgICRnID0gJHRoaXMtPmh1ZVRvUkdCKCRtMSwgJG0yLCAkaCkgKiAyNTU7CiAgICAgICAgJGIgPSAkdGhpcy0+aHVlVG9SR0IoJG0xLCAkbTIsICRoIC0gMS8zKSAqIDI1NTsKCiAgICAgICAgJG91dCA9IFtUeXBlOjpUX0NPTE9SLCAkciwgJGcsICRiXTsKCiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgLy8gQnVpbHQgaW4gZnVuY3Rpb25zCgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliQ2FsbCA9IFsnbmFtZScsICdhcmdzLi4uJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliQ2FsbCgkYXJncywgJGt3YXJncykKICAgIHsKICAgICAgICAkbmFtZSA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkdGhpcy0+Y29lcmNlU3RyaW5nKCR0aGlzLT5yZWR1Y2UoYXJyYXlfc2hpZnQoJGFyZ3MpLCB0cnVlKSkpOwogICAgICAgICRjYWxsQXJncyA9IFtdOwoKICAgICAgICAvLyAka3dhcmdzWydhcmdzJ10gaXMgW1R5cGU6OlRfTElTVCwgJywnLCBbLi5dXQogICAgICAgIGZvcmVhY2ggKCRrd2FyZ3NbJ2FyZ3MnXVsyXSBhcyAkdmFybmFtZSA9PiAkYXJnKSB7CiAgICAgICAgICAgIGlmIChpc19udW1lcmljKCR2YXJuYW1lKSkgewogICAgICAgICAgICAgICAgJHZhcm5hbWUgPSBudWxsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHZhcm5hbWUgPSBbICd2YXInLCAkdmFybmFtZV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjYWxsQXJnc1tdID0gWyR2YXJuYW1lLCAkYXJnLCBmYWxzZV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnJlZHVjZShbVHlwZTo6VF9GVU5DVElPTl9DQUxMLCAkbmFtZSwgJGNhbGxBcmdzXSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSWYgPSBbJ2NvbmRpdGlvbicsICdpZi10cnVlJywgJ2lmLWZhbHNlOiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYklmKCRhcmdzKQogICAgewogICAgICAgIGxpc3QoJGNvbmQsICR0LCAkZikgPSAkYXJnczsKCiAgICAgICAgaWYgKCEgJHRoaXMtPmlzVHJ1dGh5KCR0aGlzLT5yZWR1Y2UoJGNvbmQsIHRydWUpKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnJlZHVjZSgkZiwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnJlZHVjZSgkdCwgdHJ1ZSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSW5kZXggPSBbJ2xpc3QnLCAndmFsdWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJJbmRleCgkYXJncykKICAgIHsKICAgICAgICBsaXN0KCRsaXN0LCAkdmFsdWUpID0gJGFyZ3M7CgogICAgICAgIGlmICgkdmFsdWVbMF0gPT09IFR5cGU6OlRfTUFQKSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWM6OiRudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsaXN0WzBdID09PSBUeXBlOjpUX01BUCB8fAogICAgICAgICAgICAkbGlzdFswXSA9PT0gVHlwZTo6VF9TVFJJTkcgfHwKICAgICAgICAgICAgJGxpc3RbMF0gPT09IFR5cGU6OlRfS0VZV09SRCB8fAogICAgICAgICAgICAkbGlzdFswXSA9PT0gVHlwZTo6VF9JTlRFUlBPTEFURQogICAgICAgICkgewogICAgICAgICAgICAkbGlzdCA9ICR0aGlzLT5jb2VyY2VMaXN0KCRsaXN0LCAnICcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsaXN0WzBdICE9PSBUeXBlOjpUX0xJU1QpIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JG51bGw7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWVzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRsaXN0WzJdIGFzICRpdGVtKSB7CiAgICAgICAgICAgICR2YWx1ZXNbXSA9ICR0aGlzLT5ub3JtYWxpemVWYWx1ZSgkaXRlbSk7CiAgICAgICAgfQoKICAgICAgICAka2V5ID0gYXJyYXlfc2VhcmNoKCR0aGlzLT5ub3JtYWxpemVWYWx1ZSgkdmFsdWUpLCAkdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlID09PSAka2V5ID8gc3RhdGljOjokbnVsbCA6ICRrZXkgKyAxOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlJnYiA9IFsncmVkJywgJ2dyZWVuJywgJ2JsdWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJSZ2IoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkciwgJGcsICRiKSA9ICRhcmdzOwoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfQ09MT1IsICRyWzFdLCAkZ1sxXSwgJGJbMV1dOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlJnYmEgPSBbCiAgICAgICAgWydjb2xvcicsICdhbHBoYToxJ10sCiAgICAgICAgWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZScsICdhbHBoYToxJ10gXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJSZ2JhKCRhcmdzKQogICAgewogICAgICAgIGlmICgkY29sb3IgPSAkdGhpcy0+Y29lcmNlQ29sb3IoJGFyZ3NbMF0pKSB7CiAgICAgICAgICAgICRudW0gPSBpc3NldCgkYXJnc1szXSkgPyAkYXJnc1szXSA6ICRhcmdzWzFdOwogICAgICAgICAgICAkYWxwaGEgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRudW0pOwogICAgICAgICAgICAkY29sb3JbNF0gPSAkYWxwaGE7CgogICAgICAgICAgICByZXR1cm4gJGNvbG9yOwogICAgICAgIH0KCiAgICAgICAgbGlzdCgkciwgJGcsICRiLCAkYSkgPSAkYXJnczsKCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0NPTE9SLCAkclsxXSwgJGdbMV0sICRiWzFdLCAkYVsxXV07CiAgICB9CgogICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBhZGp1c3RfY29sb3IsIGNoYW5nZV9jb2xvciwgYW5kIHNjYWxlX2NvbG9yCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWx0ZXJDb2xvcigkYXJncywgJGZuKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSk7CgogICAgICAgIGZvcmVhY2ggKFsxLCAyLCAzLCA3XSBhcyAkaSkgewogICAgICAgICAgICBpZiAoaXNzZXQoJGFyZ3NbJGldKSkgewogICAgICAgICAgICAgICAgJHZhbCA9ICR0aGlzLT5hc3NlcnROdW1iZXIoJGFyZ3NbJGldKTsKICAgICAgICAgICAgICAgICRpaSA9ICRpID09PSA3ID8gNCA6ICRpOyAvLyBhbHBoYQogICAgICAgICAgICAgICAgJGNvbG9yWyRpaV0gPSBjYWxsX3VzZXJfZnVuYygkZm4sIGlzc2V0KCRjb2xvclskaWldKSA/ICRjb2xvclskaWldIDogMCwgJHZhbCwgJGkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoISBlbXB0eSgkYXJnc1s0XSkgfHwgISBlbXB0eSgkYXJnc1s1XSkgfHwgISBlbXB0eSgkYXJnc1s2XSkpIHsKICAgICAgICAgICAgJGhzbCA9ICR0aGlzLT50b0hTTCgkY29sb3JbMV0sICRjb2xvclsyXSwgJGNvbG9yWzNdKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKFs0LCA1LCA2XSBhcyAkaSkgewogICAgICAgICAgICAgICAgaWYgKCEgZW1wdHkoJGFyZ3NbJGldKSkgewogICAgICAgICAgICAgICAgICAgICR2YWwgPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWyRpXSk7CiAgICAgICAgICAgICAgICAgICAgJGhzbFskaSAtIDNdID0gY2FsbF91c2VyX2Z1bmMoJGZuLCAkaHNsWyRpIC0gM10sICR2YWwsICRpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJnYiA9ICR0aGlzLT50b1JHQigkaHNsWzFdLCAkaHNsWzJdLCAkaHNsWzNdKTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkY29sb3JbNF0pKSB7CiAgICAgICAgICAgICAgICAkcmdiWzRdID0gJGNvbG9yWzRdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29sb3IgPSAkcmdiOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjb2xvcjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJBZGp1c3RDb2xvciA9IFsKICAgICAgICAnY29sb3InLCAncmVkOm51bGwnLCAnZ3JlZW46bnVsbCcsICdibHVlOm51bGwnLAogICAgICAgICdodWU6bnVsbCcsICdzYXR1cmF0aW9uOm51bGwnLCAnbGlnaHRuZXNzOm51bGwnLCAnYWxwaGE6bnVsbCcKICAgIF07CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliQWRqdXN0Q29sb3IoJGFyZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbHRlckNvbG9yKCRhcmdzLCBmdW5jdGlvbiAoJGJhc2UsICRhbHRlciwgJGkpIHsKICAgICAgICAgICAgcmV0dXJuICRiYXNlICsgJGFsdGVyOwogICAgICAgIH0pOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkNoYW5nZUNvbG9yID0gWwogICAgICAgICdjb2xvcicsICdyZWQ6bnVsbCcsICdncmVlbjpudWxsJywgJ2JsdWU6bnVsbCcsCiAgICAgICAgJ2h1ZTpudWxsJywgJ3NhdHVyYXRpb246bnVsbCcsICdsaWdodG5lc3M6bnVsbCcsICdhbHBoYTpudWxsJwogICAgXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJDaGFuZ2VDb2xvcigkYXJncykKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFsdGVyQ29sb3IoJGFyZ3MsIGZ1bmN0aW9uICgkYmFzZSwgJGFsdGVyLCAkaSkgewogICAgICAgICAgICByZXR1cm4gJGFsdGVyOwogICAgICAgIH0pOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNjYWxlQ29sb3IgPSBbCiAgICAgICAgJ2NvbG9yJywgJ3JlZDpudWxsJywgJ2dyZWVuOm51bGwnLCAnYmx1ZTpudWxsJywKICAgICAgICAnaHVlOm51bGwnLCAnc2F0dXJhdGlvbjpudWxsJywgJ2xpZ2h0bmVzczpudWxsJywgJ2FscGhhOm51bGwnCiAgICBdOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNjYWxlQ29sb3IoJGFyZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbHRlckNvbG9yKCRhcmdzLCBmdW5jdGlvbiAoJGJhc2UsICRzY2FsZSwgJGkpIHsKICAgICAgICAgICAgLy8gMSwgMiwgMyAtIHJnYgogICAgICAgICAgICAvLyA0LCA1LCA2IC0gaHNsCiAgICAgICAgICAgIC8vIDcgLSBhCiAgICAgICAgICAgIHN3aXRjaCAoJGkpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAkbWF4ID0gMjU1OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAkbWF4ID0gMzYwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgICAgICAkbWF4ID0gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICRtYXggPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzY2FsZSA9ICRzY2FsZSAvIDEwMDsKCiAgICAgICAgICAgIGlmICgkc2NhbGUgPCAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJhc2UgKiAkc2NhbGUgKyAkYmFzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICgkbWF4IC0gJGJhc2UpICogJHNjYWxlICsgJGJhc2U7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSWVIZXhTdHIgPSBbJ2NvbG9yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliSWVIZXhTdHIoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCRhcmdzWzBdKTsKICAgICAgICAkY29sb3JbNF0gPSBpc3NldCgkY29sb3JbNF0pID8gcm91bmQoMjU1ICogJGNvbG9yWzRdKSA6IDI1NTsKCiAgICAgICAgcmV0dXJuIHNwcmludGYoJyMlMDJYJTAyWCUwMlglMDJYJywgJGNvbG9yWzRdLCAkY29sb3JbMV0sICRjb2xvclsyXSwgJGNvbG9yWzNdKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJSZWQgPSBbJ2NvbG9yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliUmVkKCRhcmdzKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5jb2VyY2VDb2xvcigkYXJnc1swXSk7CgogICAgICAgIHJldHVybiAkY29sb3JbMV07CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliR3JlZW4gPSBbJ2NvbG9yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliR3JlZW4oJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCRhcmdzWzBdKTsKCiAgICAgICAgcmV0dXJuICRjb2xvclsyXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJCbHVlID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkJsdWUoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCRhcmdzWzBdKTsKCiAgICAgICAgcmV0dXJuICRjb2xvclszXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJBbHBoYSA9IFsnY29sb3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJBbHBoYSgkYXJncykKICAgIHsKICAgICAgICBpZiAoJGNvbG9yID0gJHRoaXMtPmNvZXJjZUNvbG9yKCRhcmdzWzBdKSkgewogICAgICAgICAgICByZXR1cm4gaXNzZXQoJGNvbG9yWzRdKSA/ICRjb2xvcls0XSA6IDE7CiAgICAgICAgfQoKICAgICAgICAvLyB0aGlzIG1pZ2h0IGJlIHRoZSBJRSBmdW5jdGlvbiwgc28gcmV0dXJuIHZhbHVlIHVuY2hhbmdlZAogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYk9wYWNpdHkgPSBbJ2NvbG9yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliT3BhY2l0eSgkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJnc1swXTsKCiAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9OVU1CRVIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmxpYkFscGhhKCRhcmdzKTsKICAgIH0KCiAgICAvLyBtaXggdHdvIGNvbG9ycwogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliTWl4ID0gWydjb2xvci0xJywgJ2NvbG9yLTInLCAnd2VpZ2h0OjAuNSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1peCgkYXJncykKICAgIHsKICAgICAgICBsaXN0KCRmaXJzdCwgJHNlY29uZCwgJHdlaWdodCkgPSAkYXJnczsKCiAgICAgICAgJGZpcnN0ID0gJHRoaXMtPmFzc2VydENvbG9yKCRmaXJzdCk7CiAgICAgICAgJHNlY29uZCA9ICR0aGlzLT5hc3NlcnRDb2xvcigkc2Vjb25kKTsKCiAgICAgICAgaWYgKCEgaXNzZXQoJHdlaWdodCkpIHsKICAgICAgICAgICAgJHdlaWdodCA9IDAuNTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkd2VpZ2h0ID0gJHRoaXMtPmNvZXJjZVBlcmNlbnQoJHdlaWdodCk7CiAgICAgICAgfQoKICAgICAgICAkZmlyc3RBbHBoYSA9IGlzc2V0KCRmaXJzdFs0XSkgPyAkZmlyc3RbNF0gOiAxOwogICAgICAgICRzZWNvbmRBbHBoYSA9IGlzc2V0KCRzZWNvbmRbNF0pID8gJHNlY29uZFs0XSA6IDE7CgogICAgICAgICR3ID0gJHdlaWdodCAqIDIgLSAxOwogICAgICAgICRhID0gJGZpcnN0QWxwaGEgLSAkc2Vjb25kQWxwaGE7CgogICAgICAgICR3MSA9ICgoJHcgKiAkYSA9PT0gLTEgPyAkdyA6ICgkdyArICRhKSAvICgxICsgJHcgKiAkYSkpICsgMSkgLyAyLjA7CiAgICAgICAgJHcyID0gMS4wIC0gJHcxOwoKICAgICAgICAkbmV3ID0gW1R5cGU6OlRfQ09MT1IsCiAgICAgICAgICAgICR3MSAqICRmaXJzdFsxXSArICR3MiAqICRzZWNvbmRbMV0sCiAgICAgICAgICAgICR3MSAqICRmaXJzdFsyXSArICR3MiAqICRzZWNvbmRbMl0sCiAgICAgICAgICAgICR3MSAqICRmaXJzdFszXSArICR3MiAqICRzZWNvbmRbM10sCiAgICAgICAgXTsKCiAgICAgICAgaWYgKCRmaXJzdEFscGhhICE9IDEuMCB8fCAkc2Vjb25kQWxwaGEgIT0gMS4wKSB7CiAgICAgICAgICAgICRuZXdbXSA9ICRmaXJzdEFscGhhICogJHdlaWdodCArICRzZWNvbmRBbHBoYSAqICgxIC0gJHdlaWdodCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmZpeENvbG9yKCRuZXcpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkhzbCA9IFsnaHVlJywgJ3NhdHVyYXRpb24nLCAnbGlnaHRuZXNzJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliSHNsKCRhcmdzKQogICAgewogICAgICAgIGxpc3QoJGgsICRzLCAkbCkgPSAkYXJnczsKCiAgICAgICAgcmV0dXJuICR0aGlzLT50b1JHQigkaFsxXSwgJHNbMV0sICRsWzFdKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJIc2xhID0gWydodWUnLCAnc2F0dXJhdGlvbicsICdsaWdodG5lc3MnLCAnYWxwaGEnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJIc2xhKCRhcmdzKQogICAgewogICAgICAgIGxpc3QoJGgsICRzLCAkbCwgJGEpID0gJGFyZ3M7CgogICAgICAgICRjb2xvciA9ICR0aGlzLT50b1JHQigkaFsxXSwgJHNbMV0sICRsWzFdKTsKICAgICAgICAkY29sb3JbNF0gPSAkYVsxXTsKCiAgICAgICAgcmV0dXJuICRjb2xvcjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJIdWUgPSBbJ2NvbG9yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliSHVlKCRhcmdzKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSk7CiAgICAgICAgJGhzbCA9ICR0aGlzLT50b0hTTCgkY29sb3JbMV0sICRjb2xvclsyXSwgJGNvbG9yWzNdKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOb2RlXE51bWJlcigkaHNsWzFdLCAnZGVnJyk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliU2F0dXJhdGlvbiA9IFsnY29sb3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJTYXR1cmF0aW9uKCRhcmdzKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSk7CiAgICAgICAgJGhzbCA9ICR0aGlzLT50b0hTTCgkY29sb3JbMV0sICRjb2xvclsyXSwgJGNvbG9yWzNdKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOb2RlXE51bWJlcigkaHNsWzJdLCAnJScpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkxpZ2h0bmVzcyA9IFsnY29sb3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJMaWdodG5lc3MoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdKTsKICAgICAgICAkaHNsID0gJHRoaXMtPnRvSFNMKCRjb2xvclsxXSwgJGNvbG9yWzJdLCAkY29sb3JbM10pOwoKICAgICAgICByZXR1cm4gbmV3IE5vZGVcTnVtYmVyKCRoc2xbM10sICclJyk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFkanVzdEhzbCgkY29sb3IsICRpZHgsICRhbW91bnQpCiAgICB7CiAgICAgICAgJGhzbCA9ICR0aGlzLT50b0hTTCgkY29sb3JbMV0sICRjb2xvclsyXSwgJGNvbG9yWzNdKTsKICAgICAgICAkaHNsWyRpZHhdICs9ICRhbW91bnQ7CiAgICAgICAgJG91dCA9ICR0aGlzLT50b1JHQigkaHNsWzFdLCAkaHNsWzJdLCAkaHNsWzNdKTsKCiAgICAgICAgaWYgKGlzc2V0KCRjb2xvcls0XSkpIHsKICAgICAgICAgICAgJG91dFs0XSA9ICRjb2xvcls0XTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkFkanVzdEh1ZSA9IFsnY29sb3InLCAnZGVncmVlcyddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkFkanVzdEh1ZSgkYXJncykKICAgIHsKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJGFyZ3NbMF0pOwogICAgICAgICRkZWdyZWVzID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1sxXSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+YWRqdXN0SHNsKCRjb2xvciwgMSwgJGRlZ3JlZXMpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkxpZ2h0ZW4gPSBbJ2NvbG9yJywgJ2Ftb3VudCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkxpZ2h0ZW4oJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdKTsKICAgICAgICAkYW1vdW50ID0gVXRpbDo6Y2hlY2tSYW5nZSgnYW1vdW50JywgbmV3IFJhbmdlKDAsIDEwMCksICRhcmdzWzFdLCAnJScpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmFkanVzdEhzbCgkY29sb3IsIDMsICRhbW91bnQpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkRhcmtlbiA9IFsnY29sb3InLCAnYW1vdW50J107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliRGFya2VuKCRhcmdzKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSk7CiAgICAgICAgJGFtb3VudCA9IFV0aWw6OmNoZWNrUmFuZ2UoJ2Ftb3VudCcsIG5ldyBSYW5nZSgwLCAxMDApLCAkYXJnc1sxXSwgJyUnKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGp1c3RIc2woJGNvbG9yLCAzLCAtJGFtb3VudCk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliU2F0dXJhdGUgPSBbWydjb2xvcicsICdhbW91bnQnXSwgWydudW1iZXInXV07CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU2F0dXJhdGUoJGFyZ3MpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJGFyZ3NbMF07CgogICAgICAgIGlmICgkdmFsdWVbMF0gPT09IFR5cGU6OlRfTlVNQkVSKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCR2YWx1ZSk7CiAgICAgICAgJGFtb3VudCA9IDEwMCAqICR0aGlzLT5jb2VyY2VQZXJjZW50KCRhcmdzWzFdKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGp1c3RIc2woJGNvbG9yLCAyLCAkYW1vdW50KTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJEZXNhdHVyYXRlID0gWydjb2xvcicsICdhbW91bnQnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJEZXNhdHVyYXRlKCRhcmdzKQogICAgewogICAgICAgICRjb2xvciA9ICR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSk7CiAgICAgICAgJGFtb3VudCA9IDEwMCAqICR0aGlzLT5jb2VyY2VQZXJjZW50KCRhcmdzWzFdKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGp1c3RIc2woJGNvbG9yLCAyLCAtJGFtb3VudCk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliR3JheXNjYWxlID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkdyYXlzY2FsZSgkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJnc1swXTsKCiAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9OVU1CRVIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmFkanVzdEhzbCgkdGhpcy0+YXNzZXJ0Q29sb3IoJHZhbHVlKSwgMiwgLTEwMCk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliQ29tcGxlbWVudCA9IFsnY29sb3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJDb21wbGVtZW50KCRhcmdzKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRqdXN0SHNsKCR0aGlzLT5hc3NlcnRDb2xvcigkYXJnc1swXSksIDEsIDE4MCk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSW52ZXJ0ID0gWydjb2xvciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkludmVydCgkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJnc1swXTsKCiAgICAgICAgaWYgKCR2YWx1ZVswXSA9PT0gVHlwZTo6VF9OVU1CRVIpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkY29sb3IgPSAkdGhpcy0+YXNzZXJ0Q29sb3IoJHZhbHVlKTsKICAgICAgICAkY29sb3JbMV0gPSAyNTUgLSAkY29sb3JbMV07CiAgICAgICAgJGNvbG9yWzJdID0gMjU1IC0gJGNvbG9yWzJdOwogICAgICAgICRjb2xvclszXSA9IDI1NSAtICRjb2xvclszXTsKCiAgICAgICAgcmV0dXJuICRjb2xvcjsKICAgIH0KCiAgICAvLyBpbmNyZWFzZXMgb3BhY2l0eSBieSBhbW91bnQKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYk9wYWNpZnkgPSBbJ2NvbG9yJywgJ2Ftb3VudCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk9wYWNpZnkoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdKTsKICAgICAgICAkYW1vdW50ID0gJHRoaXMtPmNvZXJjZVBlcmNlbnQoJGFyZ3NbMV0pOwoKICAgICAgICAkY29sb3JbNF0gPSAoaXNzZXQoJGNvbG9yWzRdKSA/ICRjb2xvcls0XSA6IDEpICsgJGFtb3VudDsKICAgICAgICAkY29sb3JbNF0gPSBtaW4oMSwgbWF4KDAsICRjb2xvcls0XSkpOwoKICAgICAgICByZXR1cm4gJGNvbG9yOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkZhZGVJbiA9IFsnY29sb3InLCAnYW1vdW50J107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliRmFkZUluKCRhcmdzKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGliT3BhY2lmeSgkYXJncyk7CiAgICB9CgogICAgLy8gZGVjcmVhc2VzIG9wYWNpdHkgYnkgYW1vdW50CiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJUcmFuc3BhcmVudGl6ZSA9IFsnY29sb3InLCAnYW1vdW50J107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliVHJhbnNwYXJlbnRpemUoJGFyZ3MpCiAgICB7CiAgICAgICAgJGNvbG9yID0gJHRoaXMtPmFzc2VydENvbG9yKCRhcmdzWzBdKTsKICAgICAgICAkYW1vdW50ID0gJHRoaXMtPmNvZXJjZVBlcmNlbnQoJGFyZ3NbMV0pOwoKICAgICAgICAkY29sb3JbNF0gPSAoaXNzZXQoJGNvbG9yWzRdKSA/ICRjb2xvcls0XSA6IDEpIC0gJGFtb3VudDsKICAgICAgICAkY29sb3JbNF0gPSBtaW4oMSwgbWF4KDAsICRjb2xvcls0XSkpOwoKICAgICAgICByZXR1cm4gJGNvbG9yOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkZhZGVPdXQgPSBbJ2NvbG9yJywgJ2Ftb3VudCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkZhZGVPdXQoJGFyZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5saWJUcmFuc3BhcmVudGl6ZSgkYXJncyk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliVW5xdW90ZSA9IFsnc3RyaW5nJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliVW5xdW90ZSgkYXJncykKICAgIHsKICAgICAgICAkc3RyID0gJGFyZ3NbMF07CgogICAgICAgIGlmICgkc3RyWzBdID09PSBUeXBlOjpUX1NUUklORykgewogICAgICAgICAgICAkc3RyWzFdID0gJyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN0cjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJRdW90ZSA9IFsnc3RyaW5nJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliUXVvdGUoJGFyZ3MpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJGFyZ3NbMF07CgogICAgICAgIGlmICgkdmFsdWVbMF0gPT09IFR5cGU6OlRfU1RSSU5HICYmICEgZW1wdHkoJHZhbHVlWzFdKSkgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX1NUUklORywgJyInLCBbJHZhbHVlXV07CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliUGVyY2VudGFnZSA9IFsndmFsdWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJQZXJjZW50YWdlKCRhcmdzKQogICAgewogICAgICAgIHJldHVybiBuZXcgTm9kZVxOdW1iZXIoJHRoaXMtPmNvZXJjZVBlcmNlbnQoJGFyZ3NbMF0pICogMTAwLCAnJScpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlJvdW5kID0gWyd2YWx1ZSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlJvdW5kKCRhcmdzKQogICAgewogICAgICAgICRudW0gPSAkYXJnc1swXTsKCiAgICAgICAgcmV0dXJuIG5ldyBOb2RlXE51bWJlcihyb3VuZCgkbnVtWzFdKSwgJG51bVsyXSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliRmxvb3IgPSBbJ3ZhbHVlJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliRmxvb3IoJGFyZ3MpCiAgICB7CiAgICAgICAgJG51bSA9ICRhcmdzWzBdOwoKICAgICAgICByZXR1cm4gbmV3IE5vZGVcTnVtYmVyKGZsb29yKCRudW1bMV0pLCAkbnVtWzJdKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJDZWlsID0gWyd2YWx1ZSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkNlaWwoJGFyZ3MpCiAgICB7CiAgICAgICAgJG51bSA9ICRhcmdzWzBdOwoKICAgICAgICByZXR1cm4gbmV3IE5vZGVcTnVtYmVyKGNlaWwoJG51bVsxXSksICRudW1bMl0pOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkFicyA9IFsndmFsdWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJBYnMoJGFyZ3MpCiAgICB7CiAgICAgICAgJG51bSA9ICRhcmdzWzBdOwoKICAgICAgICByZXR1cm4gbmV3IE5vZGVcTnVtYmVyKGFicygkbnVtWzFdKSwgJG51bVsyXSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1pbigkYXJncykKICAgIHsKICAgICAgICAkbnVtYmVycyA9ICR0aGlzLT5nZXROb3JtYWxpemVkTnVtYmVycygkYXJncyk7CiAgICAgICAgJG1pbiA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCRudW1iZXJzIGFzICRrZXkgPT4gJG51bWJlcikgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gJG1pbiB8fCAkbnVtYmVyWzFdIDw9ICRtaW5bMV0pIHsKICAgICAgICAgICAgICAgICRtaW4gPSBbJGtleSwgJG51bWJlclsxXV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkYXJnc1skbWluWzBdXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliTWF4KCRhcmdzKQogICAgewogICAgICAgICRudW1iZXJzID0gJHRoaXMtPmdldE5vcm1hbGl6ZWROdW1iZXJzKCRhcmdzKTsKICAgICAgICAkbWF4ID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJG51bWJlcnMgYXMgJGtleSA9PiAkbnVtYmVyKSB7CiAgICAgICAgICAgIGlmIChudWxsID09PSAkbWF4IHx8ICRudW1iZXJbMV0gPj0gJG1heFsxXSkgewogICAgICAgICAgICAgICAgJG1heCA9IFska2V5LCAkbnVtYmVyWzFdXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRhcmdzWyRtYXhbMF1dOwogICAgfQoKICAgIC8qKgogICAgICogSGVscGVyIHRvIG5vcm1hbGl6ZSBhcmdzIGNvbnRhaW5pbmcgbnVtYmVycwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkYXJncwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldE5vcm1hbGl6ZWROdW1iZXJzKCRhcmdzKQogICAgewogICAgICAgICR1bml0ID0gbnVsbDsKICAgICAgICAkb3JpZ2luYWxVbml0ID0gbnVsbDsKICAgICAgICAkbnVtYmVycyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkYXJncyBhcyAka2V5ID0+ICRpdGVtKSB7CiAgICAgICAgICAgIGlmICgkaXRlbVswXSAhPT0gVHlwZTo6VF9OVU1CRVIpIHsKICAgICAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCclcyBpcyBub3QgYSBudW1iZXInLCAkaXRlbVswXSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG51bWJlciA9ICRpdGVtLT5ub3JtYWxpemUoKTsKCiAgICAgICAgICAgIGlmIChudWxsID09PSAkdW5pdCkgewogICAgICAgICAgICAgICAgJHVuaXQgPSAkbnVtYmVyWzJdOwogICAgICAgICAgICAgICAgJG9yaWdpbmFsVW5pdCA9ICRpdGVtLT51bml0U3RyKCk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkbnVtYmVyWzFdICYmICR1bml0ICE9PSAkbnVtYmVyWzJdKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcignSW5jb21wYXRpYmxlIHVuaXRzOiAiJXMiIGFuZCAiJXMiLicsICRvcmlnaW5hbFVuaXQsICRpdGVtLT51bml0U3RyKCkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRudW1iZXJzWyRrZXldID0gJG51bWJlcjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbnVtYmVyczsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJMZW5ndGggPSBbJ2xpc3QnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJMZW5ndGgoJGFyZ3MpCiAgICB7CiAgICAgICAgJGxpc3QgPSAkdGhpcy0+Y29lcmNlTGlzdCgkYXJnc1swXSk7CgogICAgICAgIHJldHVybiBjb3VudCgkbGlzdFsyXSk7CiAgICB9CgogICAgLy9wcm90ZWN0ZWQgc3RhdGljICRsaWJMaXN0U2VwYXJhdG9yID0gWydsaXN0Li4uJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliTGlzdFNlcGFyYXRvcigkYXJncykKICAgIHsKICAgICAgICBpZiAoY291bnQoJGFyZ3MpID4gMSkgewogICAgICAgICAgICByZXR1cm4gJ2NvbW1hJzsKICAgICAgICB9CgogICAgICAgICRsaXN0ID0gJHRoaXMtPmNvZXJjZUxpc3QoJGFyZ3NbMF0pOwoKICAgICAgICBpZiAoY291bnQoJGxpc3RbMl0pIDw9IDEpIHsKICAgICAgICAgICAgcmV0dXJuICdzcGFjZSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGxpc3RbMV0gPT09ICcsJykgewogICAgICAgICAgICByZXR1cm4gJ2NvbW1hJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAnc3BhY2UnOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYk50aCA9IFsnbGlzdCcsICduJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliTnRoKCRhcmdzKQogICAgewogICAgICAgICRsaXN0ID0gJHRoaXMtPmNvZXJjZUxpc3QoJGFyZ3NbMF0pOwogICAgICAgICRuID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1sxXSk7CgogICAgICAgIGlmICgkbiA+IDApIHsKICAgICAgICAgICAgJG4tLTsKICAgICAgICB9IGVsc2VpZiAoJG4gPCAwKSB7CiAgICAgICAgICAgICRuICs9IGNvdW50KCRsaXN0WzJdKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpc3NldCgkbGlzdFsyXVskbl0pID8gJGxpc3RbMl1bJG5dIDogc3RhdGljOjokZGVmYXVsdFZhbHVlOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNldE50aCA9IFsnbGlzdCcsICduJywgJ3ZhbHVlJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU2V0TnRoKCRhcmdzKQogICAgewogICAgICAgICRsaXN0ID0gJHRoaXMtPmNvZXJjZUxpc3QoJGFyZ3NbMF0pOwogICAgICAgICRuID0gJHRoaXMtPmFzc2VydE51bWJlcigkYXJnc1sxXSk7CgogICAgICAgIGlmICgkbiA+IDApIHsKICAgICAgICAgICAgJG4tLTsKICAgICAgICB9IGVsc2VpZiAoJG4gPCAwKSB7CiAgICAgICAgICAgICRuICs9IGNvdW50KCRsaXN0WzJdKTsKICAgICAgICB9CgogICAgICAgIGlmICghIGlzc2V0KCRsaXN0WzJdWyRuXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQgZm9yICJuIicpOwoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkbGlzdFsyXVskbl0gPSAkYXJnc1syXTsKCiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYk1hcEdldCA9IFsnbWFwJywgJ2tleSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1hcEdldCgkYXJncykKICAgIHsKICAgICAgICAkbWFwID0gJHRoaXMtPmFzc2VydE1hcCgkYXJnc1swXSk7CiAgICAgICAgJGtleSA9ICRhcmdzWzFdOwoKICAgICAgICBpZiAoISBpc19udWxsKCRrZXkpKSB7CiAgICAgICAgICAgICRrZXkgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygka2V5KSk7CiAgICAgICAgICAgIGZvciAoJGkgPSBjb3VudCgkbWFwWzFdKSAtIDE7ICRpID49IDA7ICRpLS0pIHsKICAgICAgICAgICAgICAgIGlmICgka2V5ID09PSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkbWFwWzFdWyRpXSkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRtYXBbMl1bJGldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RhdGljOjokbnVsbDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJNYXBLZXlzID0gWydtYXAnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJNYXBLZXlzKCRhcmdzKQogICAgewogICAgICAgICRtYXAgPSAkdGhpcy0+YXNzZXJ0TWFwKCRhcmdzWzBdKTsKICAgICAgICAka2V5cyA9ICRtYXBbMV07CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9MSVNULCAnLCcsICRrZXlzXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJNYXBWYWx1ZXMgPSBbJ21hcCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1hcFZhbHVlcygkYXJncykKICAgIHsKICAgICAgICAkbWFwID0gJHRoaXMtPmFzc2VydE1hcCgkYXJnc1swXSk7CiAgICAgICAgJHZhbHVlcyA9ICRtYXBbMl07CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9MSVNULCAnLCcsICR2YWx1ZXNdOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYk1hcFJlbW92ZSA9IFsnbWFwJywgJ2tleSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1hcFJlbW92ZSgkYXJncykKICAgIHsKICAgICAgICAkbWFwID0gJHRoaXMtPmFzc2VydE1hcCgkYXJnc1swXSk7CiAgICAgICAgJGtleSA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkdGhpcy0+Y29lcmNlU3RyaW5nKCRhcmdzWzFdKSk7CgogICAgICAgIGZvciAoJGkgPSBjb3VudCgkbWFwWzFdKSAtIDE7ICRpID49IDA7ICRpLS0pIHsKICAgICAgICAgICAgaWYgKCRrZXkgPT09ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkdGhpcy0+Y29lcmNlU3RyaW5nKCRtYXBbMV1bJGldKSkpIHsKICAgICAgICAgICAgICAgIGFycmF5X3NwbGljZSgkbWFwWzFdLCAkaSwgMSk7CiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJG1hcFsyXSwgJGksIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1hcDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJNYXBIYXNLZXkgPSBbJ21hcCcsICdrZXknXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJNYXBIYXNLZXkoJGFyZ3MpCiAgICB7CiAgICAgICAgJG1hcCA9ICR0aGlzLT5hc3NlcnRNYXAoJGFyZ3NbMF0pOwogICAgICAgICRrZXkgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkYXJnc1sxXSkpOwoKICAgICAgICBmb3IgKCRpID0gY291bnQoJG1hcFsxXSkgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgIGlmICgka2V5ID09PSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygkbWFwWzFdWyRpXSkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYk1hcE1lcmdlID0gWydtYXAtMScsICdtYXAtMiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYk1hcE1lcmdlKCRhcmdzKQogICAgewogICAgICAgICRtYXAxID0gJHRoaXMtPmFzc2VydE1hcCgkYXJnc1swXSk7CiAgICAgICAgJG1hcDIgPSAkdGhpcy0+YXNzZXJ0TWFwKCRhcmdzWzFdKTsKCiAgICAgICAgZm9yZWFjaCAoJG1hcDJbMV0gYXMgJGkyID0+ICRrZXkyKSB7CiAgICAgICAgICAgICRrZXkgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHRoaXMtPmNvZXJjZVN0cmluZygka2V5MikpOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG1hcDFbMV0gYXMgJGkxID0+ICRrZXkxKSB7CiAgICAgICAgICAgICAgICBpZiAoJGtleSA9PT0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCR0aGlzLT5jb2VyY2VTdHJpbmcoJGtleTEpKSkgewogICAgICAgICAgICAgICAgICAgICRtYXAxWzJdWyRpMV0gPSAkbWFwMlsyXVskaTJdOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRtYXAxWzFdW10gPSAkbWFwMlsxXVskaTJdOwogICAgICAgICAgICAkbWFwMVsyXVtdID0gJG1hcDJbMl1bJGkyXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbWFwMTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJLZXl3b3JkcyA9IFsnYXJncyddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYktleXdvcmRzKCRhcmdzKQogICAgewogICAgICAgICR0aGlzLT5hc3NlcnRMaXN0KCRhcmdzWzBdKTsKCiAgICAgICAgJGtleXMgPSBbXTsKICAgICAgICAkdmFsdWVzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRhcmdzWzBdWzJdIGFzICRuYW1lID0+ICRhcmcpIHsKICAgICAgICAgICAgJGtleXNbXSA9IFtUeXBlOjpUX0tFWVdPUkQsICRuYW1lXTsKICAgICAgICAgICAgJHZhbHVlc1tdID0gJGFyZzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9NQVAsICRrZXlzLCAkdmFsdWVzXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGlzdFNlcGFyYXRvckZvckpvaW4oJGxpc3QxLCAkc2VwKQogICAgewogICAgICAgIGlmICghIGlzc2V0KCRzZXApKSB7CiAgICAgICAgICAgIHJldHVybiAkbGlzdDFbMV07CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCR0aGlzLT5jb21waWxlVmFsdWUoJHNlcCkpIHsKICAgICAgICAgICAgY2FzZSAnY29tbWEnOgogICAgICAgICAgICAgICAgcmV0dXJuICcsJzsKCiAgICAgICAgICAgIGNhc2UgJ3NwYWNlJzoKICAgICAgICAgICAgICAgIHJldHVybiAnJzsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJGxpc3QxWzFdOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJKb2luID0gWydsaXN0MScsICdsaXN0MicsICdzZXBhcmF0b3I6bnVsbCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYkpvaW4oJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkbGlzdDEsICRsaXN0MiwgJHNlcCkgPSAkYXJnczsKCiAgICAgICAgJGxpc3QxID0gJHRoaXMtPmNvZXJjZUxpc3QoJGxpc3QxLCAnICcpOwogICAgICAgICRsaXN0MiA9ICR0aGlzLT5jb2VyY2VMaXN0KCRsaXN0MiwgJyAnKTsKICAgICAgICAkc2VwID0gJHRoaXMtPmxpc3RTZXBhcmF0b3JGb3JKb2luKCRsaXN0MSwgJHNlcCk7CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9MSVNULCAkc2VwLCBhcnJheV9tZXJnZSgkbGlzdDFbMl0sICRsaXN0MlsyXSldOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkFwcGVuZCA9IFsnbGlzdCcsICd2YWwnLCAnc2VwYXJhdG9yOm51bGwnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJBcHBlbmQoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkbGlzdDEsICR2YWx1ZSwgJHNlcCkgPSAkYXJnczsKCiAgICAgICAgJGxpc3QxID0gJHRoaXMtPmNvZXJjZUxpc3QoJGxpc3QxLCAnICcpOwogICAgICAgICRzZXAgPSAkdGhpcy0+bGlzdFNlcGFyYXRvckZvckpvaW4oJGxpc3QxLCAkc2VwKTsKCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0xJU1QsICRzZXAsIGFycmF5X21lcmdlKCRsaXN0MVsyXSwgWyR2YWx1ZV0pXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliWmlwKCRhcmdzKQogICAgewogICAgICAgIGZvcmVhY2ggKCRhcmdzIGFzICRhcmcpIHsKICAgICAgICAgICAgJHRoaXMtPmFzc2VydExpc3QoJGFyZyk7CiAgICAgICAgfQoKICAgICAgICAkbGlzdHMgPSBbXTsKICAgICAgICAkZmlyc3RMaXN0ID0gYXJyYXlfc2hpZnQoJGFyZ3MpOwoKICAgICAgICBmb3JlYWNoICgkZmlyc3RMaXN0WzJdIGFzICRrZXkgPT4gJGl0ZW0pIHsKICAgICAgICAgICAgJGxpc3QgPSBbVHlwZTo6VF9MSVNULCAnJywgWyRpdGVtXV07CgogICAgICAgICAgICBmb3JlYWNoICgkYXJncyBhcyAkYXJnKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGFyZ1syXVska2V5XSkpIHsKICAgICAgICAgICAgICAgICAgICAkbGlzdFsyXVtdID0gJGFyZ1syXVska2V5XTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxpc3RzW10gPSAkbGlzdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9MSVNULCAnLCcsICRsaXN0c107CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliVHlwZU9mID0gWyd2YWx1ZSddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlR5cGVPZigkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJnc1swXTsKCiAgICAgICAgc3dpdGNoICgkdmFsdWVbMF0pIHsKICAgICAgICAgICAgY2FzZSBUeXBlOjpUX0tFWVdPUkQ6CiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlID09PSBzdGF0aWM6OiR0cnVlIHx8ICR2YWx1ZSA9PT0gc3RhdGljOjokZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Jvb2wnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Y29lcmNlQ29sb3IoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAnY29sb3InOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGZhbGwtdGhydQogICAgICAgICAgICBjYXNlIFR5cGU6OlRfRlVOQ1RJT046CiAgICAgICAgICAgICAgICByZXR1cm4gJ3N0cmluZyc7CgogICAgICAgICAgICBjYXNlIFR5cGU6OlRfTElTVDoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdmFsdWVbM10pICYmICR2YWx1ZVszXSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAnYXJnbGlzdCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gZmFsbC10aHJ1CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlWzBdOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJVbml0ID0gWydudW1iZXInXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJVbml0KCRhcmdzKQogICAgewogICAgICAgICRudW0gPSAkYXJnc1swXTsKCiAgICAgICAgaWYgKCRudW1bMF0gPT09IFR5cGU6OlRfTlVNQkVSKSB7CiAgICAgICAgICAgIHJldHVybiBbVHlwZTo6VF9TVFJJTkcsICciJywgWyRudW0tPnVuaXRTdHIoKV1dOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICcnOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlVuaXRsZXNzID0gWydudW1iZXInXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJVbml0bGVzcygkYXJncykKICAgIHsKICAgICAgICAkdmFsdWUgPSAkYXJnc1swXTsKCiAgICAgICAgcmV0dXJuICR2YWx1ZVswXSA9PT0gVHlwZTo6VF9OVU1CRVIgJiYgJHZhbHVlLT51bml0bGVzcygpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkNvbXBhcmFibGUgPSBbJ251bWJlci0xJywgJ251bWJlci0yJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliQ29tcGFyYWJsZSgkYXJncykKICAgIHsKICAgICAgICBsaXN0KCRudW1iZXIxLCAkbnVtYmVyMikgPSAkYXJnczsKCiAgICAgICAgaWYgKCEgaXNzZXQoJG51bWJlcjFbMF0pIHx8ICRudW1iZXIxWzBdICE9PSBUeXBlOjpUX05VTUJFUiB8fAogICAgICAgICAgICAhIGlzc2V0KCRudW1iZXIyWzBdKSB8fCAkbnVtYmVyMlswXSAhPT0gVHlwZTo6VF9OVU1CRVIKICAgICAgICApIHsKICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoJ0ludmFsaWQgYXJndW1lbnQocykgZm9yICJjb21wYXJhYmxlIicpOwoKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyMSA9ICRudW1iZXIxLT5ub3JtYWxpemUoKTsKICAgICAgICAkbnVtYmVyMiA9ICRudW1iZXIyLT5ub3JtYWxpemUoKTsKCiAgICAgICAgcmV0dXJuICRudW1iZXIxWzJdID09PSAkbnVtYmVyMlsyXSB8fCAkbnVtYmVyMS0+dW5pdGxlc3MoKSB8fCAkbnVtYmVyMi0+dW5pdGxlc3MoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJTdHJJbmRleCA9IFsnc3RyaW5nJywgJ3N1YnN0cmluZyddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlN0ckluZGV4KCRhcmdzKQogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+Y29lcmNlU3RyaW5nKCRhcmdzWzBdKTsKICAgICAgICAkc3RyaW5nQ29udGVudCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3RyaW5nKTsKCiAgICAgICAgJHN1YnN0cmluZyA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJGFyZ3NbMV0pOwogICAgICAgICRzdWJzdHJpbmdDb250ZW50ID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRzdWJzdHJpbmcpOwoKICAgICAgICAkcmVzdWx0ID0gc3RycG9zKCRzdHJpbmdDb250ZW50LCAkc3Vic3RyaW5nQ29udGVudCk7CgogICAgICAgIHJldHVybiAkcmVzdWx0ID09PSBmYWxzZSA/IHN0YXRpYzo6JG51bGwgOiBuZXcgTm9kZVxOdW1iZXIoJHJlc3VsdCArIDEsICcnKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJTdHJJbnNlcnQgPSBbJ3N0cmluZycsICdpbnNlcnQnLCAnaW5kZXgnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJTdHJJbnNlcnQoJGFyZ3MpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJGFyZ3NbMF0pOwogICAgICAgICRzdHJpbmdDb250ZW50ID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRzdHJpbmcpOwoKICAgICAgICAkaW5zZXJ0ID0gJHRoaXMtPmNvZXJjZVN0cmluZygkYXJnc1sxXSk7CiAgICAgICAgJGluc2VydENvbnRlbnQgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJGluc2VydCk7CgogICAgICAgIGxpc3QoLCAkaW5kZXgpID0gJGFyZ3NbMl07CgogICAgICAgICRzdHJpbmdbMl0gPSBbc3Vic3RyX3JlcGxhY2UoJHN0cmluZ0NvbnRlbnQsICRpbnNlcnRDb250ZW50LCAkaW5kZXggLSAxLCAwKV07CgogICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlN0ckxlbmd0aCA9IFsnc3RyaW5nJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU3RyTGVuZ3RoKCRhcmdzKQogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+Y29lcmNlU3RyaW5nKCRhcmdzWzBdKTsKICAgICAgICAkc3RyaW5nQ29udGVudCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3RyaW5nKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOb2RlXE51bWJlcihzdHJsZW4oJHN0cmluZ0NvbnRlbnQpLCAnJyk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliU3RyU2xpY2UgPSBbJ3N0cmluZycsICdzdGFydC1hdCcsICdlbmQtYXQ6bnVsbCddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlN0clNsaWNlKCRhcmdzKQogICAgewogICAgICAgIGlmIChpc3NldCgkYXJnc1syXSkgJiYgJGFyZ3NbMl1bMV0gPT0gMCkgewogICAgICAgICAgICByZXR1cm4gc3RhdGljOjokbnVsbFN0cmluZzsKICAgICAgICB9CgogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+Y29lcmNlU3RyaW5nKCRhcmdzWzBdKTsKICAgICAgICAkc3RyaW5nQ29udGVudCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3RyaW5nKTsKCiAgICAgICAgJHN0YXJ0ID0gKGludCkgJGFyZ3NbMV1bMV07CgogICAgICAgIGlmICgkc3RhcnQgPiAwKSB7CiAgICAgICAgICAgICRzdGFydC0tOwogICAgICAgIH0KCiAgICAgICAgJGVuZCAgICA9IChpbnQpICRhcmdzWzJdWzFdOwogICAgICAgICRsZW5ndGggPSAkZW5kIDwgMCA/ICRlbmQgKyAxIDogKCRlbmQgPiAwID8gJGVuZCAtICRzdGFydCA6ICRlbmQpOwoKICAgICAgICAkc3RyaW5nWzJdID0gJGxlbmd0aAogICAgICAgICAgICA/IFtzdWJzdHIoJHN0cmluZ0NvbnRlbnQsICRzdGFydCwgJGxlbmd0aCldCiAgICAgICAgICAgIDogW3N1YnN0cigkc3RyaW5nQ29udGVudCwgJHN0YXJ0KV07CgogICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlRvTG93ZXJDYXNlID0gWydzdHJpbmcnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJUb0xvd2VyQ2FzZSgkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmNvZXJjZVN0cmluZygkYXJnc1swXSk7CiAgICAgICAgJHN0cmluZ0NvbnRlbnQgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CgogICAgICAgICRzdHJpbmdbMl0gPSBbZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJ0b2xvd2VyJykgPyBtYl9zdHJ0b2xvd2VyKCRzdHJpbmdDb250ZW50KSA6IHN0cnRvbG93ZXIoJHN0cmluZ0NvbnRlbnQpXTsKCiAgICAgICAgcmV0dXJuICRzdHJpbmc7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliVG9VcHBlckNhc2UgPSBbJ3N0cmluZyddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlRvVXBwZXJDYXNlKCRhcmdzKQogICAgewogICAgICAgICRzdHJpbmcgPSAkdGhpcy0+Y29lcmNlU3RyaW5nKCRhcmdzWzBdKTsKICAgICAgICAkc3RyaW5nQ29udGVudCA9ICR0aGlzLT5jb21waWxlU3RyaW5nQ29udGVudCgkc3RyaW5nKTsKCiAgICAgICAgJHN0cmluZ1syXSA9IFtmdW5jdGlvbl9leGlzdHMoJ21iX3N0cnRvdXBwZXInKSA/IG1iX3N0cnRvdXBwZXIoJHN0cmluZ0NvbnRlbnQpIDogc3RydG91cHBlcigkc3RyaW5nQ29udGVudCldOwoKICAgICAgICByZXR1cm4gJHN0cmluZzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJGZWF0dXJlRXhpc3RzID0gWydmZWF0dXJlJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliRmVhdHVyZUV4aXN0cygkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmNvZXJjZVN0cmluZygkYXJnc1swXSk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKAogICAgICAgICAgICBhcnJheV9rZXlfZXhpc3RzKCRuYW1lLCAkdGhpcy0+cmVnaXN0ZXJlZEZlYXR1cmVzKSA/ICR0aGlzLT5yZWdpc3RlcmVkRmVhdHVyZXNbJG5hbWVdIDogZmFsc2UKICAgICAgICApOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYkZ1bmN0aW9uRXhpc3RzID0gWyduYW1lJ107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliRnVuY3Rpb25FeGlzdHMoJGFyZ3MpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5jb2VyY2VTdHJpbmcoJGFyZ3NbMF0pOwogICAgICAgICRuYW1lID0gJHRoaXMtPmNvbXBpbGVTdHJpbmdDb250ZW50KCRzdHJpbmcpOwoKICAgICAgICAvLyB1c2VyIGRlZmluZWQgZnVuY3Rpb25zCiAgICAgICAgaWYgKCR0aGlzLT5oYXMoc3RhdGljOjokbmFtZXNwYWNlc1snZnVuY3Rpb24nXSAuICRuYW1lKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICRuYW1lID0gJHRoaXMtPm5vcm1hbGl6ZU5hbWUoJG5hbWUpOwoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnVzZXJGdW5jdGlvbnNbJG5hbWVdKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIGJ1aWx0LWluIGZ1bmN0aW9ucwogICAgICAgICRmID0gJHRoaXMtPmdldEJ1aWx0aW5GdW5jdGlvbigkbmFtZSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dG9Cb29sKGlzX2NhbGxhYmxlKCRmKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliR2xvYmFsVmFyaWFibGVFeGlzdHMgPSBbJ25hbWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJHbG9iYWxWYXJpYWJsZUV4aXN0cygkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmNvZXJjZVN0cmluZygkYXJnc1swXSk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+aGFzKCRuYW1lLCAkdGhpcy0+cm9vdEVudik7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliTWl4aW5FeGlzdHMgPSBbJ25hbWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJNaXhpbkV4aXN0cygkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmNvZXJjZVN0cmluZygkYXJnc1swXSk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+aGFzKHN0YXRpYzo6JG5hbWVzcGFjZXNbJ21peGluJ10gLiAkbmFtZSk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliVmFyaWFibGVFeGlzdHMgPSBbJ25hbWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJWYXJpYWJsZUV4aXN0cygkYXJncykKICAgIHsKICAgICAgICAkc3RyaW5nID0gJHRoaXMtPmNvZXJjZVN0cmluZygkYXJnc1swXSk7CiAgICAgICAgJG5hbWUgPSAkdGhpcy0+Y29tcGlsZVN0cmluZ0NvbnRlbnQoJHN0cmluZyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+aGFzKCRuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFdvcmthcm91bmQgSUU3J3MgY29udGVudCBjb3VudGVyIGJ1Zy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGFyZ3MKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJDb3VudGVyKCRhcmdzKQogICAgewogICAgICAgICRsaXN0ID0gYXJyYXlfbWFwKFskdGhpcywgJ2NvbXBpbGVWYWx1ZSddLCAkYXJncyk7CgogICAgICAgIHJldHVybiBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJ2NvdW50ZXIoJyAuIGltcGxvZGUoJywnLCAkbGlzdCkgLiAnKSddXTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJSYW5kb20gPSBbJ2xpbWl0J107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliUmFuZG9tKCRhcmdzKQogICAgewogICAgICAgIGlmIChpc3NldCgkYXJnc1swXSkpIHsKICAgICAgICAgICAgJG4gPSAkdGhpcy0+YXNzZXJ0TnVtYmVyKCRhcmdzWzBdKTsKCiAgICAgICAgICAgIGlmICgkbiA8IDEpIHsKICAgICAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCJsaW1pdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxIik7CgogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBuZXcgTm9kZVxOdW1iZXIobXRfcmFuZCgxLCAkbiksICcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgTm9kZVxOdW1iZXIobXRfcmFuZCgxLCBtdF9nZXRyYW5kbWF4KCkpLCAnJyk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlVuaXF1ZUlkKCkKICAgIHsKICAgICAgICBzdGF0aWMgJGlkOwoKICAgICAgICBpZiAoISBpc3NldCgkaWQpKSB7CiAgICAgICAgICAgICRpZCA9IG10X3JhbmQoMCwgcG93KDM2LCA4KSk7CiAgICAgICAgfQoKICAgICAgICAkaWQgKz0gbXRfcmFuZCgwLCAxMCkgKyAxOwoKICAgICAgICByZXR1cm4gW1R5cGU6OlRfU1RSSU5HLCAnJywgWyd1JyAuIHN0cl9wYWQoYmFzZV9jb252ZXJ0KCRpZCwgMTAsIDM2KSwgOCwgJzAnLCBTVFJfUEFEX0xFRlQpXV07CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSW5zcGVjdCA9IFsndmFsdWUnXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJJbnNwZWN0KCRhcmdzKQogICAgewogICAgICAgIGlmICgkYXJnc1swXSA9PT0gc3RhdGljOjokbnVsbCkgewogICAgICAgICAgICByZXR1cm4gW1R5cGU6OlRfS0VZV09SRCwgJ251bGwnXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYXJnc1swXTsKICAgIH0KCiAgICAvKioKICAgICAqIFByZXByb2Nlc3Mgc2VsZWN0b3IgYXJncwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkYXJnCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTZWxlY3RvckFyZygkYXJnKQogICAgewogICAgICAgIHN0YXRpYyAkcGFyc2VyID0gbnVsbDsKCiAgICAgICAgaWYgKGlzX251bGwoJHBhcnNlcikpIHsKICAgICAgICAgICAgJHBhcnNlciA9ICR0aGlzLT5wYXJzZXJGYWN0b3J5KF9fTUVUSE9EX18pOwogICAgICAgIH0KCiAgICAgICAgJGFyZyA9ICR0aGlzLT5saWJVbnF1b3RlKFskYXJnXSk7CiAgICAgICAgJGFyZyA9ICR0aGlzLT5jb21waWxlVmFsdWUoJGFyZyk7CgogICAgICAgICRwYXJzZWRTZWxlY3RvciA9IFtdOwoKICAgICAgICBpZiAoJHBhcnNlci0+cGFyc2VTZWxlY3RvcigkYXJnLCAkcGFyc2VkU2VsZWN0b3IpKSB7CiAgICAgICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5ldmFsU2VsZWN0b3JzKCRwYXJzZWRTZWxlY3Rvcik7CiAgICAgICAgICAgICRnbHVlZFNlbGVjdG9yID0gJHRoaXMtPmdsdWVGdW5jdGlvblNlbGVjdG9ycygkc2VsZWN0b3IpOwoKICAgICAgICAgICAgcmV0dXJuICRnbHVlZFNlbGVjdG9yOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUG9zdHByb2Nlc3Mgc2VsZWN0b3IgdG8gb3V0cHV0IGluIHJpZ2h0IGZvcm1hdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkc2VsZWN0b3JzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZvcm1hdE91dHB1dFNlbGVjdG9yKCRzZWxlY3RvcnMpCiAgICB7CiAgICAgICAgJHNlbGVjdG9ycyA9ICR0aGlzLT5jb2xsYXBzZVNlbGVjdG9ycygkc2VsZWN0b3JzLCB0cnVlKTsKCiAgICAgICAgcmV0dXJuICRzZWxlY3RvcnM7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliSXNTdXBlcnNlbGVjdG9yID0gWydzdXBlcicsICdzdWInXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJJc1N1cGVyc2VsZWN0b3IoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkc3VwZXIsICRzdWIpID0gJGFyZ3M7CgogICAgICAgICRzdXBlciA9ICR0aGlzLT5nZXRTZWxlY3RvckFyZygkc3VwZXIpOwogICAgICAgICRzdWIgPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJHN1Yik7CgogICAgICAgIHJldHVybiAkdGhpcy0+aXNTdXBlclNlbGVjdG9yKCRzdXBlciwgJHN1Yik7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0IGEgJHN1cGVyIHNlbGVjdG9yIGFnYWluICRzdWIKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHN1cGVyCiAgICAgKiBAcGFyYW0gYXJyYXkgJHN1YgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNTdXBlclNlbGVjdG9yKCRzdXBlciwgJHN1YikKICAgIHsKICAgICAgICAvLyBvbmUgYW5kIG9ubHkgb25lIHNlbGVjdG9yIGZvciBlYWNoIGFyZwogICAgICAgIGlmICghICRzdXBlciB8fCBjb3VudCgkc3VwZXIpICE9PSAxKSB7CiAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCJJbnZhbGlkIHN1cGVyIHNlbGVjdG9yIGZvciBpc1N1cGVyU2VsZWN0b3IoKSIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgJHN1YiB8fCBjb3VudCgkc3ViKSAhPT0gMSkgewogICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcigiSW52YWxpZCBzdWIgc2VsZWN0b3IgZm9yIGlzU3VwZXJTZWxlY3RvcigpIik7CiAgICAgICAgfQoKICAgICAgICAkc3VwZXIgPSByZXNldCgkc3VwZXIpOwogICAgICAgICRzdWIgPSByZXNldCgkc3ViKTsKCiAgICAgICAgJGkgPSAwOwogICAgICAgICRuZXh0TXVzdE1hdGNoID0gZmFsc2U7CgogICAgICAgIGZvcmVhY2ggKCRzdXBlciBhcyAkbm9kZSkgewogICAgICAgICAgICAkY29tcG91bmQgPSAnJzsKCiAgICAgICAgICAgIGFycmF5X3dhbGtfcmVjdXJzaXZlKAogICAgICAgICAgICAgICAgJG5vZGUsCiAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHZhbHVlLCAka2V5KSB1c2UgKCYkY29tcG91bmQpIHsKICAgICAgICAgICAgICAgICAgICAkY29tcG91bmQgLj0gJHZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0ltbWVkaWF0ZVJlbGF0aW9uc2hpcENvbWJpbmF0b3IoJGNvbXBvdW5kKSkgewogICAgICAgICAgICAgICAgaWYgKCRub2RlICE9PSAkc3ViWyRpXSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkbmV4dE11c3RNYXRjaCA9IHRydWU7CiAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgd2hpbGUgKCRpIDwgY291bnQoJHN1YikgJiYgISAkdGhpcy0+aXNTdXBlclBhcnQoJG5vZGUsICRzdWJbJGldKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkbmV4dE11c3RNYXRjaCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkaSA+PSBjb3VudCgkc3ViKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkbmV4dE11c3RNYXRjaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgJGkrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUZXN0IGEgcGFydCBvZiBzdXBlciBzZWxlY3RvciBhZ2FpbiBhIHBhcnQgb2Ygc3ViIHNlbGVjdG9yCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzdXBlclBhcnRzCiAgICAgKiBAcGFyYW0gYXJyYXkgJHN1YlBhcnRzCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc1N1cGVyUGFydCgkc3VwZXJQYXJ0cywgJHN1YlBhcnRzKQogICAgewogICAgICAgICRpID0gMDsKCiAgICAgICAgZm9yZWFjaCAoJHN1cGVyUGFydHMgYXMgJHN1cGVyUGFydCkgewogICAgICAgICAgICB3aGlsZSAoJGkgPCBjb3VudCgkc3ViUGFydHMpICYmICRzdWJQYXJ0c1skaV0gIT09ICRzdXBlclBhcnQpIHsKICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkaSA+PSBjb3VudCgkc3ViUGFydHMpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRpKys7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsaWJTZWxlY3RvckFwcGVuZCA9IFsnc2VsZWN0b3IuLi4nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJTZWxlY3RvckFwcGVuZCgkYXJncykKICAgIHsKICAgICAgICAvLyBnZXQgdGhlIHNlbGVjdG9yLi4uIGxpc3QKICAgICAgICAkYXJncyA9IHJlc2V0KCRhcmdzKTsKICAgICAgICAkYXJncyA9ICRhcmdzWzJdOwogICAgICAgIGlmIChjb3VudCgkYXJncykgPCAxKSB7CiAgICAgICAgICAgICR0aGlzLT50aHJvd0Vycm9yKCJzZWxlY3Rvci1hcHBlbmQoKSBuZWVkcyBhdCBsZWFzdCAxIGFyZ3VtZW50Iik7CiAgICAgICAgfQoKICAgICAgICAkc2VsZWN0b3JzID0gYXJyYXlfbWFwKFskdGhpcywgJ2dldFNlbGVjdG9yQXJnJ10sICRhcmdzKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtYXRPdXRwdXRTZWxlY3RvcigkdGhpcy0+c2VsZWN0b3JBcHBlbmQoJHNlbGVjdG9ycykpOwogICAgfQoKICAgIC8qKgogICAgICogQXBwZW5kIHBhcnRzIG9mIHRoZSBsYXN0IHNlbGVjdG9yIGluIHRoZSBsaXN0IHRvIHRoZSBwcmV2aW91cywgcmVjdXJzaXZlbHkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9ycwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXENvbXBpbGVyRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZWxlY3RvckFwcGVuZCgkc2VsZWN0b3JzKQogICAgewogICAgICAgICRsYXN0U2VsZWN0b3JzID0gYXJyYXlfcG9wKCRzZWxlY3RvcnMpOwoKICAgICAgICBpZiAoISAkbGFzdFNlbGVjdG9ycykgewogICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcigiSW52YWxpZCBzZWxlY3RvciBsaXN0IGluIHNlbGVjdG9yLWFwcGVuZCgpIik7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoY291bnQoJHNlbGVjdG9ycykpIHsKICAgICAgICAgICAgJHByZXZpb3VzU2VsZWN0b3JzID0gYXJyYXlfcG9wKCRzZWxlY3RvcnMpOwoKICAgICAgICAgICAgaWYgKCEgJHByZXZpb3VzU2VsZWN0b3JzKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcigiSW52YWxpZCBzZWxlY3RvciBsaXN0IGluIHNlbGVjdG9yLWFwcGVuZCgpIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGRvIHRoZSB0cmljaywgaGFwcGVuaW5nICRsYXN0U2VsZWN0b3IgdG8gJHByZXZpb3VzU2VsZWN0b3IKICAgICAgICAgICAgJGFwcGVuZGVkID0gW107CgogICAgICAgICAgICBmb3JlYWNoICgkbGFzdFNlbGVjdG9ycyBhcyAkbGFzdFNlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAkcHJldmlvdXMgPSAkcHJldmlvdXNTZWxlY3RvcnM7CgogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxhc3RTZWxlY3RvciBhcyAkbGFzdFNlbGVjdG9yUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkbGFzdFNlbGVjdG9yUGFydHMgYXMgJGxhc3RTZWxlY3RvclBhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHByZXZpb3VzIGFzICRpID0+ICRwcmV2aW91c1NlbGVjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcHJldmlvdXNTZWxlY3RvciBhcyAkaiA9PiAkcHJldmlvdXNTZWxlY3RvclBhcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByZXZpb3VzWyRpXVskal1bXSA9ICRsYXN0U2VsZWN0b3JQYXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRwcmV2aW91cyBhcyAkcHMpIHsKICAgICAgICAgICAgICAgICAgICAkYXBwZW5kZWRbXSA9ICRwczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxhc3RTZWxlY3RvcnMgPSAkYXBwZW5kZWQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxhc3RTZWxlY3RvcnM7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyAkbGliU2VsZWN0b3JFeHRlbmQgPSBbJ3NlbGVjdG9ycycsICdleHRlbmRlZScsICdleHRlbmRlciddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNlbGVjdG9yRXh0ZW5kKCRhcmdzKQogICAgewogICAgICAgIGxpc3QoJHNlbGVjdG9ycywgJGV4dGVuZGVlLCAkZXh0ZW5kZXIpID0gJGFyZ3M7CgogICAgICAgICRzZWxlY3RvcnMgPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJHNlbGVjdG9ycyk7CiAgICAgICAgJGV4dGVuZGVlID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRleHRlbmRlZSk7CiAgICAgICAgJGV4dGVuZGVyID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRleHRlbmRlcik7CgogICAgICAgIGlmICghICRzZWxlY3RvcnMgfHwgISAkZXh0ZW5kZWUgfHwgISAkZXh0ZW5kZXIpIHsKICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoInNlbGVjdG9yLWV4dGVuZCgpIGludmFsaWQgYXJndW1lbnRzIik7CiAgICAgICAgfQoKICAgICAgICAkZXh0ZW5kZWQgPSAkdGhpcy0+ZXh0ZW5kT3JSZXBsYWNlU2VsZWN0b3JzKCRzZWxlY3RvcnMsICRleHRlbmRlZSwgJGV4dGVuZGVyKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtYXRPdXRwdXRTZWxlY3RvcigkZXh0ZW5kZWQpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNlbGVjdG9yUmVwbGFjZSA9IFsnc2VsZWN0b3JzJywgJ29yaWdpbmFsJywgJ3JlcGxhY2VtZW50J107CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGliU2VsZWN0b3JSZXBsYWNlKCRhcmdzKQogICAgewogICAgICAgIGxpc3QoJHNlbGVjdG9ycywgJG9yaWdpbmFsLCAkcmVwbGFjZW1lbnQpID0gJGFyZ3M7CgogICAgICAgICRzZWxlY3RvcnMgPSAkdGhpcy0+Z2V0U2VsZWN0b3JBcmcoJHNlbGVjdG9ycyk7CiAgICAgICAgJG9yaWdpbmFsID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRvcmlnaW5hbCk7CiAgICAgICAgJHJlcGxhY2VtZW50ID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRyZXBsYWNlbWVudCk7CgogICAgICAgIGlmICghICRzZWxlY3RvcnMgfHwgISAkb3JpZ2luYWwgfHwgISAkcmVwbGFjZW1lbnQpIHsKICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoInNlbGVjdG9yLXJlcGxhY2UoKSBpbnZhbGlkIGFyZ3VtZW50cyIpOwogICAgICAgIH0KCiAgICAgICAgJHJlcGxhY2VkID0gJHRoaXMtPmV4dGVuZE9yUmVwbGFjZVNlbGVjdG9ycygkc2VsZWN0b3JzLCAkb3JpZ2luYWwsICRyZXBsYWNlbWVudCwgdHJ1ZSk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Zm9ybWF0T3V0cHV0U2VsZWN0b3IoJHJlcGxhY2VkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEV4dGVuZC9yZXBsYWNlIGluIHNlbGVjdG9ycwogICAgICogdXNlZCBieSBzZWxlY3Rvci1leHRlbmQgYW5kIHNlbGVjdG9yLXJlcGxhY2UgdGhhdCB1c2UgdGhlIHNhbWUgbG9naWMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkc2VsZWN0b3JzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkZXh0ZW5kZWUKICAgICAqIEBwYXJhbSBhcnJheSAgICRleHRlbmRlcgogICAgICogQHBhcmFtIGJvb2xlYW4gJHJlcGxhY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBleHRlbmRPclJlcGxhY2VTZWxlY3RvcnMoJHNlbGVjdG9ycywgJGV4dGVuZGVlLCAkZXh0ZW5kZXIsICRyZXBsYWNlID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHNhdmVFeHRlbmRzID0gJHRoaXMtPmV4dGVuZHM7CiAgICAgICAgJHNhdmVFeHRlbmRzTWFwID0gJHRoaXMtPmV4dGVuZHNNYXA7CgogICAgICAgICR0aGlzLT5leHRlbmRzID0gW107CiAgICAgICAgJHRoaXMtPmV4dGVuZHNNYXAgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGV4dGVuZGVlIGFzICRlcykgewogICAgICAgICAgICAvLyBvbmx5IHVzZSB0aGUgZmlyc3Qgb25lCiAgICAgICAgICAgICR0aGlzLT5wdXNoRXh0ZW5kcyhyZXNldCgkZXMpLCAkZXh0ZW5kZXIsIG51bGwpOwogICAgICAgIH0KCiAgICAgICAgJGV4dGVuZGVkID0gW107CgogICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnMgYXMgJHNlbGVjdG9yKSB7CiAgICAgICAgICAgIGlmICghICRyZXBsYWNlKSB7CiAgICAgICAgICAgICAgICAkZXh0ZW5kZWRbXSA9ICRzZWxlY3RvcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG4gPSBjb3VudCgkZXh0ZW5kZWQpOwoKICAgICAgICAgICAgJHRoaXMtPm1hdGNoRXh0ZW5kcygkc2VsZWN0b3IsICRleHRlbmRlZCk7CgogICAgICAgICAgICAvLyBpZiBkaWRudCBtYXRjaCwga2VlcCB0aGUgb3JpZ2luYWwgc2VsZWN0b3IgaWYgd2UgYXJlIGluIGEgcmVwbGFjZSBvcGVyYXRpb24KICAgICAgICAgICAgaWYgKCRyZXBsYWNlIGFuZCBjb3VudCgkZXh0ZW5kZWQpID09PSAkbikgewogICAgICAgICAgICAgICAgJGV4dGVuZGVkW10gPSAkc2VsZWN0b3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5leHRlbmRzID0gJHNhdmVFeHRlbmRzOwogICAgICAgICR0aGlzLT5leHRlbmRzTWFwID0gJHNhdmVFeHRlbmRzTWFwOwoKICAgICAgICByZXR1cm4gJGV4dGVuZGVkOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNlbGVjdG9yTmVzdCA9IFsnc2VsZWN0b3IuLi4nXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJTZWxlY3Rvck5lc3QoJGFyZ3MpCiAgICB7CiAgICAgICAgLy8gZ2V0IHRoZSBzZWxlY3Rvci4uLiBsaXN0CiAgICAgICAgJGFyZ3MgPSByZXNldCgkYXJncyk7CiAgICAgICAgJGFyZ3MgPSAkYXJnc1syXTsKICAgICAgICBpZiAoY291bnQoJGFyZ3MpIDwgMSkgewogICAgICAgICAgICAkdGhpcy0+dGhyb3dFcnJvcigic2VsZWN0b3ItbmVzdCgpIG5lZWRzIGF0IGxlYXN0IDEgYXJndW1lbnQiKTsKICAgICAgICB9CgogICAgICAgICRzZWxlY3RvcnNNYXAgPSBhcnJheV9tYXAoWyR0aGlzLCAnZ2V0U2VsZWN0b3JBcmcnXSwgJGFyZ3MpOwoKICAgICAgICAkZW52cyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRzZWxlY3RvcnNNYXAgYXMgJHNlbGVjdG9ycykgewogICAgICAgICAgICAkZW52ID0gbmV3IEVudmlyb25tZW50KCk7CiAgICAgICAgICAgICRlbnYtPnNlbGVjdG9ycyA9ICRzZWxlY3RvcnM7CgogICAgICAgICAgICAkZW52c1tdID0gJGVudjsKICAgICAgICB9CgogICAgICAgICRlbnZzID0gYXJyYXlfcmV2ZXJzZSgkZW52cyk7CiAgICAgICAgJGVudiA9ICR0aGlzLT5leHRyYWN0RW52KCRlbnZzKTsKICAgICAgICAkb3V0cHV0U2VsZWN0b3JzID0gJHRoaXMtPm11bHRpcGx5U2VsZWN0b3JzKCRlbnYpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdE91dHB1dFNlbGVjdG9yKCRvdXRwdXRTZWxlY3RvcnMpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNlbGVjdG9yUGFyc2UgPSBbJ3NlbGVjdG9ycyddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNlbGVjdG9yUGFyc2UoJGFyZ3MpCiAgICB7CiAgICAgICAgJHNlbGVjdG9ycyA9IHJlc2V0KCRhcmdzKTsKICAgICAgICAkc2VsZWN0b3JzID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRzZWxlY3RvcnMpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdE91dHB1dFNlbGVjdG9yKCRzZWxlY3RvcnMpOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNlbGVjdG9yVW5pZnkgPSBbJ3NlbGVjdG9yczEnLCAnc2VsZWN0b3JzMiddOwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxpYlNlbGVjdG9yVW5pZnkoJGFyZ3MpCiAgICB7CiAgICAgICAgbGlzdCgkc2VsZWN0b3JzMSwgJHNlbGVjdG9yczIpID0gJGFyZ3M7CgogICAgICAgICRzZWxlY3RvcnMxID0gJHRoaXMtPmdldFNlbGVjdG9yQXJnKCRzZWxlY3RvcnMxKTsKICAgICAgICAkc2VsZWN0b3JzMiA9ICR0aGlzLT5nZXRTZWxlY3RvckFyZygkc2VsZWN0b3JzMik7CgogICAgICAgIGlmICghICRzZWxlY3RvcnMxIHx8ICEgJHNlbGVjdG9yczIpIHsKICAgICAgICAgICAgJHRoaXMtPnRocm93RXJyb3IoInNlbGVjdG9yLXVuaWZ5KCkgaW52YWxpZCBhcmd1bWVudHMiKTsKICAgICAgICB9CgogICAgICAgIC8vIG9ubHkgY29uc2lkZXIgdGhlIGZpcnN0IGNvbXBvdW5kIG9mIGVhY2gKICAgICAgICAkY29tcG91bmQxID0gcmVzZXQoJHNlbGVjdG9yczEpOwogICAgICAgICRjb21wb3VuZDIgPSByZXNldCgkc2VsZWN0b3JzMik7CgogICAgICAgIC8vIHVuaWZ5IHRoZW0gYW5kIHRoYXQncyBpdAogICAgICAgICR1bmlmaWVkID0gJHRoaXMtPnVuaWZ5Q29tcG91bmRTZWxlY3RvcnMoJGNvbXBvdW5kMSwgJGNvbXBvdW5kMik7CgogICAgICAgIHJldHVybiAkdGhpcy0+Zm9ybWF0T3V0cHV0U2VsZWN0b3IoJHVuaWZpZWQpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHNlbGVjdG9yLXVuaWZ5IG1hZ2ljIGFzIGl0cyBiZXN0CiAgICAgKiAoYXQgbGVhc3Qgd29ya3MgYXMgZXhwZWN0ZWQgb24gdGVzdCBjYXNlcykKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbXBvdW5kMQogICAgICogQHBhcmFtIGFycmF5ICRjb21wb3VuZDIKICAgICAqIEByZXR1cm4gYXJyYXl8bWl4ZWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHVuaWZ5Q29tcG91bmRTZWxlY3RvcnMoJGNvbXBvdW5kMSwgJGNvbXBvdW5kMikKICAgIHsKICAgICAgICBpZiAoISBjb3VudCgkY29tcG91bmQxKSkgewogICAgICAgICAgICByZXR1cm4gJGNvbXBvdW5kMjsKICAgICAgICB9CgogICAgICAgIGlmICghIGNvdW50KCRjb21wb3VuZDIpKSB7CiAgICAgICAgICAgIHJldHVybiAkY29tcG91bmQxOwogICAgICAgIH0KCiAgICAgICAgLy8gY2hlY2sgdGhhdCBsYXN0IHBhcnQgYXJlIGNvbXBhdGlibGUKICAgICAgICAkbGFzdFBhcnQxID0gYXJyYXlfcG9wKCRjb21wb3VuZDEpOwogICAgICAgICRsYXN0UGFydDIgPSBhcnJheV9wb3AoJGNvbXBvdW5kMik7CiAgICAgICAgJGxhc3QgPSAkdGhpcy0+bWVyZ2VQYXJ0cygkbGFzdFBhcnQxLCAkbGFzdFBhcnQyKTsKCiAgICAgICAgaWYgKCEgJGxhc3QpIHsKICAgICAgICAgICAgcmV0dXJuIFtbXV07CiAgICAgICAgfQoKICAgICAgICAkdW5pZmllZENvbXBvdW5kID0gWyRsYXN0XTsKICAgICAgICAkdW5pZmllZFNlbGVjdG9ycyA9IFskdW5pZmllZENvbXBvdW5kXTsKCiAgICAgICAgLy8gZG8gdGhlIHJlc3QKICAgICAgICB3aGlsZSAoY291bnQoJGNvbXBvdW5kMSkgfHwgY291bnQoJGNvbXBvdW5kMikpIHsKICAgICAgICAgICAgJHBhcnQxID0gZW5kKCRjb21wb3VuZDEpOwogICAgICAgICAgICAkcGFydDIgPSBlbmQoJGNvbXBvdW5kMik7CgogICAgICAgICAgICBpZiAoJHBhcnQxICYmICgkbWF0Y2gyID0gJHRoaXMtPm1hdGNoUGFydEluQ29tcG91bmQoJHBhcnQxLCAkY29tcG91bmQyKSkpIHsKICAgICAgICAgICAgICAgIGxpc3QoJGNvbXBvdW5kMiwgJHBhcnQyLCAkYWZ0ZXIyKSA9ICRtYXRjaDI7CgogICAgICAgICAgICAgICAgaWYgKCRhZnRlcjIpIHsKICAgICAgICAgICAgICAgICAgICAkdW5pZmllZFNlbGVjdG9ycyA9ICR0aGlzLT5wcmVwZW5kU2VsZWN0b3JzKCR1bmlmaWVkU2VsZWN0b3JzLCAkYWZ0ZXIyKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYyA9ICR0aGlzLT5tZXJnZVBhcnRzKCRwYXJ0MSwgJHBhcnQyKTsKICAgICAgICAgICAgICAgICR1bmlmaWVkU2VsZWN0b3JzID0gJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHVuaWZpZWRTZWxlY3RvcnMsIFskY10pOwogICAgICAgICAgICAgICAgJHBhcnQxID0gJHBhcnQyID0gbnVsbDsKCiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJGNvbXBvdW5kMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcGFydDIgJiYgKCRtYXRjaDEgPSAkdGhpcy0+bWF0Y2hQYXJ0SW5Db21wb3VuZCgkcGFydDIsICRjb21wb3VuZDEpKSkgewogICAgICAgICAgICAgICAgbGlzdCgkY29tcG91bmQxLCAkcGFydDEsICRhZnRlcjEpID0gJG1hdGNoMTsKCiAgICAgICAgICAgICAgICBpZiAoJGFmdGVyMSkgewogICAgICAgICAgICAgICAgICAgICR1bmlmaWVkU2VsZWN0b3JzID0gJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHVuaWZpZWRTZWxlY3RvcnMsICRhZnRlcjEpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjID0gJHRoaXMtPm1lcmdlUGFydHMoJHBhcnQyLCAkcGFydDEpOwogICAgICAgICAgICAgICAgJHVuaWZpZWRTZWxlY3RvcnMgPSAkdGhpcy0+cHJlcGVuZFNlbGVjdG9ycygkdW5pZmllZFNlbGVjdG9ycywgWyRjXSk7CiAgICAgICAgICAgICAgICAkcGFydDEgPSAkcGFydDIgPSBudWxsOwoKICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkY29tcG91bmQyKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG5ldyA9IFtdOwoKICAgICAgICAgICAgaWYgKCRwYXJ0MSAmJiAkcGFydDIpIHsKICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkY29tcG91bmQxKTsKICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkY29tcG91bmQyKTsKCiAgICAgICAgICAgICAgICAkcyA9ICR0aGlzLT5wcmVwZW5kU2VsZWN0b3JzKCR1bmlmaWVkU2VsZWN0b3JzLCBbJHBhcnQyXSk7CiAgICAgICAgICAgICAgICAkbmV3ID0gYXJyYXlfbWVyZ2UoJG5ldywgJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHMsIFskcGFydDFdKSk7CiAgICAgICAgICAgICAgICAkcyA9ICR0aGlzLT5wcmVwZW5kU2VsZWN0b3JzKCR1bmlmaWVkU2VsZWN0b3JzLCBbJHBhcnQxXSk7CiAgICAgICAgICAgICAgICAkbmV3ID0gYXJyYXlfbWVyZ2UoJG5ldywgJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHMsIFskcGFydDJdKSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkcGFydDEpIHsKICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkY29tcG91bmQxKTsKCiAgICAgICAgICAgICAgICAkbmV3ID0gYXJyYXlfbWVyZ2UoJG5ldywgJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHVuaWZpZWRTZWxlY3RvcnMsIFskcGFydDFdKSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkcGFydDIpIHsKICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkY29tcG91bmQyKTsKCiAgICAgICAgICAgICAgICAkbmV3ID0gYXJyYXlfbWVyZ2UoJG5ldywgJHRoaXMtPnByZXBlbmRTZWxlY3RvcnMoJHVuaWZpZWRTZWxlY3RvcnMsIFskcGFydDJdKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbmV3KSB7CiAgICAgICAgICAgICAgICAkdW5pZmllZFNlbGVjdG9ycyA9ICRuZXc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdW5pZmllZFNlbGVjdG9yczsKICAgIH0KCiAgICAvKioKICAgICAqIFByZXBlbmQgZWFjaCBzZWxlY3RvciBmcm9tICRzZWxlY3RvcnMgd2l0aCAkcGFydHMKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNlbGVjdG9ycwogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0cwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHByZXBlbmRTZWxlY3RvcnMoJHNlbGVjdG9ycywgJHBhcnRzKQogICAgewogICAgICAgICRuZXcgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHNlbGVjdG9ycyBhcyAkY29tcG91bmRTZWxlY3RvcikgewogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRjb21wb3VuZFNlbGVjdG9yLCAkcGFydHMpOwoKICAgICAgICAgICAgJG5ld1tdID0gJGNvbXBvdW5kU2VsZWN0b3I7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICAvKioKICAgICAqIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcgcGFydCBpbiBhIGNvbXBvdW5kOgogICAgICogLSB3aXRoIHNhbWUgaHRtbCB0YWcgbmFtZQogICAgICogLSB3aXRoIHNvbWUgY2xhc3Mgb3IgaWQgb3Igc29tZXRoaW5nIGluIGNvbW1vbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkcGFydAogICAgICogQHBhcmFtIGFycmF5ICRjb21wb3VuZAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8Ym9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWF0Y2hQYXJ0SW5Db21wb3VuZCgkcGFydCwgJGNvbXBvdW5kKQogICAgewogICAgICAgICRwYXJ0VGFnID0gJHRoaXMtPmZpbmRUYWdOYW1lKCRwYXJ0KTsKICAgICAgICAkYmVmb3JlID0gJGNvbXBvdW5kOwogICAgICAgICRhZnRlciA9IFtdOwoKICAgICAgICAvLyB0cnkgdG8gZmluZCBhIG1hdGNoIGJ5IHRhZyBuYW1lIGZpcnN0CiAgICAgICAgd2hpbGUgKGNvdW50KCRiZWZvcmUpKSB7CiAgICAgICAgICAgICRwID0gYXJyYXlfcG9wKCRiZWZvcmUpOwoKICAgICAgICAgICAgaWYgKCRwYXJ0VGFnICYmICRwYXJ0VGFnICE9PSAnKicgJiYgJHBhcnRUYWcgPT0gJHRoaXMtPmZpbmRUYWdOYW1lKCRwKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFskYmVmb3JlLCAkcCwgJGFmdGVyXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGFmdGVyW10gPSAkcDsKICAgICAgICB9CgogICAgICAgIC8vIHRyeSBhZ2FpbiBtYXRjaGluZyBhIG5vbiBlbXB0eSBpbnRlcnNlY3Rpb24gYW5kIGEgY29tcGF0aWJsZSB0YWduYW1lCiAgICAgICAgJGJlZm9yZSA9ICRjb21wb3VuZDsKICAgICAgICAkYWZ0ZXIgPSBbXTsKCiAgICAgICAgd2hpbGUgKGNvdW50KCRiZWZvcmUpKSB7CiAgICAgICAgICAgICRwID0gYXJyYXlfcG9wKCRiZWZvcmUpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5jaGVja0NvbXBhdGlibGVUYWdzKCRwYXJ0VGFnLCAkdGhpcy0+ZmluZFRhZ05hbWUoJHApKSkgewogICAgICAgICAgICAgICAgaWYgKGNvdW50KGFycmF5X2ludGVyc2VjdCgkcGFydCwgJHApKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBbJGJlZm9yZSwgJHAsICRhZnRlcl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhZnRlcltdID0gJHA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBNZXJnZSB0d28gcGFydCBsaXN0IHRha2luZyBjYXJlIHRoYXQKICAgICAqIC0gdGhlIGh0bWwgdGFnIGlzIGNvbWluZyBmaXJzdCAtIGlmIGFueQogICAgICogLSB0aGUgOnNvbWV0aGluZyBhcmUgY29taW5nIGxhc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhcnRzMQogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0czIKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtZXJnZVBhcnRzKCRwYXJ0czEsICRwYXJ0czIpCiAgICB7CiAgICAgICAgJHRhZzEgPSAkdGhpcy0+ZmluZFRhZ05hbWUoJHBhcnRzMSk7CiAgICAgICAgJHRhZzIgPSAkdGhpcy0+ZmluZFRhZ05hbWUoJHBhcnRzMik7CiAgICAgICAgJHRhZyA9ICR0aGlzLT5jaGVja0NvbXBhdGlibGVUYWdzKCR0YWcxLCAkdGFnMik7CgogICAgICAgIC8vIG5vdCBjb21wYXRpYmxlIHRhZ3MKICAgICAgICBpZiAoJHRhZyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0YWcpIHsKICAgICAgICAgICAgaWYgKCR0YWcxKSB7CiAgICAgICAgICAgICAgICAkcGFydHMxID0gYXJyYXlfZGlmZigkcGFydHMxLCBbJHRhZzFdKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0YWcyKSB7CiAgICAgICAgICAgICAgICAkcGFydHMyID0gYXJyYXlfZGlmZigkcGFydHMyLCBbJHRhZzJdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG1lcmdlZFBhcnRzID0gYXJyYXlfbWVyZ2UoJHBhcnRzMSwgJHBhcnRzMik7CiAgICAgICAgJG1lcmdlZE9yZGVyZWRQYXJ0cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkbWVyZ2VkUGFydHMgYXMgJHBhcnQpIHsKICAgICAgICAgICAgaWYgKHN0cnBvcygkcGFydCwgJzonKSA9PT0gMCkgewogICAgICAgICAgICAgICAgJG1lcmdlZE9yZGVyZWRQYXJ0c1tdID0gJHBhcnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRtZXJnZWRQYXJ0cyA9IGFycmF5X2RpZmYoJG1lcmdlZFBhcnRzLCAkbWVyZ2VkT3JkZXJlZFBhcnRzKTsKICAgICAgICAkbWVyZ2VkUGFydHMgPSBhcnJheV9tZXJnZSgkbWVyZ2VkUGFydHMsICRtZXJnZWRPcmRlcmVkUGFydHMpOwoKICAgICAgICBpZiAoJHRhZykgewogICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRtZXJnZWRQYXJ0cywgJHRhZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1lcmdlZFBhcnRzOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgdGhlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB0d28gdGFnIG5hbWVzOgogICAgICogaWYgYm90aCBhcmUgZGVmaW5lZCB0aGV5IHNob3VsZCBiZSBpZGVudGljYWwgb3Igb25lIGhhcyB0byBiZSAnKicKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0YWcxCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0YWcyCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjaGVja0NvbXBhdGlibGVUYWdzKCR0YWcxLCAkdGFnMikKICAgIHsKICAgICAgICAkdGFncyA9IFskdGFnMSwgJHRhZzJdOwogICAgICAgICR0YWdzID0gYXJyYXlfdW5pcXVlKCR0YWdzKTsKICAgICAgICAkdGFncyA9IGFycmF5X2ZpbHRlcigkdGFncyk7CgogICAgICAgIGlmIChjb3VudCgkdGFncyk+MSkgewogICAgICAgICAgICAkdGFncyA9IGFycmF5X2RpZmYoJHRhZ3MsIFsnKiddKTsKICAgICAgICB9CgogICAgICAgIC8vIG5vdCBjb21wYXRpYmxlIG5vZGVzCiAgICAgICAgaWYgKGNvdW50KCR0YWdzKT4xKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGFnczsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbmQgdGhlIGh0bWwgdGFnIG5hbWUgaW4gYSBzZWxlY3RvciBwYXJ0cyBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0cwogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWR8c3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmaW5kVGFnTmFtZSgkcGFydHMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgIGlmICghIHByZWdfbWF0Y2goJy9eW1xbLjojJV8tXS8nLCAkcGFydCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkcGFydDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICcnOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgJGxpYlNpbXBsZVNlbGVjdG9ycyA9IFsnc2VsZWN0b3InXTsKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsaWJTaW1wbGVTZWxlY3RvcnMoJGFyZ3MpCiAgICB7CiAgICAgICAgJHNlbGVjdG9yID0gcmVzZXQoJGFyZ3MpOwogICAgICAgICRzZWxlY3RvciA9ICR0aGlzLT5nZXRTZWxlY3RvckFyZygkc2VsZWN0b3IpOwoKICAgICAgICAvLyByZW1vdmUgc2VsZWN0b3JzIGxpc3QgbGF5ZXIsIGtlZXBpbmcgdGhlIGZpcnN0IG9uZQogICAgICAgICRzZWxlY3RvciA9IHJlc2V0KCRzZWxlY3Rvcik7CgogICAgICAgIC8vIHJlbW92ZSBwYXJ0cyBsaXN0IGxheWVyLCBrZWVwaW5nIHRoZSBmaXJzdCBwYXJ0CiAgICAgICAgJHBhcnQgPSByZXNldCgkc2VsZWN0b3IpOwoKICAgICAgICAkbGlzdFBhcnRzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRwYXJ0IGFzICRwKSB7CiAgICAgICAgICAgICRsaXN0UGFydHNbXSA9IFtUeXBlOjpUX1NUUklORywgJycsIFskcF1dOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtUeXBlOjpUX0xJU1QsICcsJywgJGxpc3RQYXJ0c107CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Compiler/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Compiler/Environment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXI7CgovKioKICogQ29tcGlsZXIgZW52aXJvbm1lbnQKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKi8KY2xhc3MgRW52aXJvbm1lbnQKewogICAgLyoqCiAgICAgKiBAdmFyIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sKICAgICAqLwogICAgcHVibGljICRibG9jazsKCiAgICAvKioKICAgICAqIEB2YXIgXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlclxFbnZpcm9ubWVudAogICAgICovCiAgICBwdWJsaWMgJHBhcmVudDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHVibGljICRzdG9yZTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHVibGljICRzdG9yZVVucmVkdWNlZDsKCiAgICAvKioKICAgICAqIEB2YXIgaW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgJGRlcHRoOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Compiler/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/CompilerException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uOwoKLyoqCiAqIENvbXBpbGVyIGV4Y2VwdGlvbgogKgogKiBAYXV0aG9yIE9sZWtzYW5kciBTYXZjaGVua28gPHRyYXZlbHRpbm9AZ21haWwuY29tPgogKi8KY2xhc3MgQ29tcGlsZXJFeGNlcHRpb24gZXh0ZW5kcyBcRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/ParserException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uOwoKLyoqCiAqIFBhcnNlciBFeGNlcHRpb24KICoKICogQGF1dGhvciBPbGVrc2FuZHIgU2F2Y2hlbmtvIDx0cmF2ZWx0aW5vQGdtYWlsLmNvbT4KICovCmNsYXNzIFBhcnNlckV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/RangeException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uOwoKLyoqCiAqIFJhbmdlIGV4Y2VwdGlvbgogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqLwpjbGFzcyBSYW5nZUV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Exception/ServerException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uOwoKLyoqCiAqIFNlcnZlciBFeGNlcHRpb24KICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKi8KY2xhc3MgU2VydmVyRXhjZXB0aW9uIGV4dGVuZHMgXEV4Y2VwdGlvbgp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jazsKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcU291cmNlTWFwR2VuZXJhdG9yOwoKLyoqCiAqIEJhc2UgZm9ybWF0dGVyCiAqCiAqIEBhdXRob3IgTGVhZiBDb3Jjb3JhbiA8bGVhZm90QGdtYWlsLmNvbT4KICovCmFic3RyYWN0IGNsYXNzIEZvcm1hdHRlcgp7CiAgICAvKioKICAgICAqIEB2YXIgaW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgJGluZGVudExldmVsOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRpbmRlbnRDaGFyOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRicmVhazsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkb3BlbjsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkY2xvc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJHRhZ1NlcGFyYXRvcjsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkYXNzaWduU2VwYXJhdG9yOwoKICAgIC8qKgogICAgICogQHZhciBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyAka2VlcFNlbWljb2xvbnM7CgogICAgLyoqCiAgICAgKiBAdmFyIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY3VycmVudEJsb2NrOwoKICAgIC8qKgogICAgICogQHZhciBpbnRlZ2VyCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY3VycmVudExpbmU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHJvdGVjdGVkICRjdXJyZW50Q29sdW1uOwoKICAgIC8qKgogICAgICogQHZhciBcU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcFxTb3VyY2VNYXBHZW5lcmF0b3IKICAgICAqLwogICAgcHJvdGVjdGVkICRzb3VyY2VNYXBHZW5lcmF0b3I7CgogICAgLyoqCiAgICAgKiBJbml0aWFsaXplIGZvcm1hdHRlcgogICAgICoKICAgICAqIEBhcGkKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gaW5kZW50YXRpb24gKHdoaXRlc3BhY2UpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGluZGVudFN0cigpCiAgICB7CiAgICAgICAgcmV0dXJuICcnOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHByb3BlcnR5IGFzc2lnbm1lbnQKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZQogICAgICogQHBhcmFtIG1peGVkICAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvcGVydHkoJG5hbWUsICR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gcnRyaW0oJG5hbWUpIC4gJHRoaXMtPmFzc2lnblNlcGFyYXRvciAuICR2YWx1ZSAuICc7JzsKICAgIH0KCiAgICAvKioKICAgICAqIFN0cmlwIHNlbWktY29sb24gYXBwZW5kZWQgYnkgcHJvcGVydHkoKTsgaXQncyBhIHNlcGFyYXRvciwgbm90IGEgdGVybWluYXRvcgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGxpbmVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJpcFNlbWljb2xvbigmJGxpbmVzKQogICAgewogICAgICAgIGlmICgkdGhpcy0+a2VlcFNlbWljb2xvbnMpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCgkY291bnQgPSBjb3VudCgkbGluZXMpKSAmJiBzdWJzdHIoJGxpbmVzWyRjb3VudCAtIDFdLCAtMSkgPT09ICc7JykgewogICAgICAgICAgICAkbGluZXNbJGNvdW50IC0gMV0gPSBzdWJzdHIoJGxpbmVzWyRjb3VudCAtIDFdLCAwLCAtMSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogT3V0cHV0IGxpbmVzIGluc2lkZSBhIGJsb2NrCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICRibG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2tMaW5lcyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGlubmVyID0gJHRoaXMtPmluZGVudFN0cigpOwoKICAgICAgICAkZ2x1ZSA9ICR0aGlzLT5icmVhayAuICRpbm5lcjsKCiAgICAgICAgJHRoaXMtPndyaXRlKCRpbm5lciAuIGltcGxvZGUoJGdsdWUsICRibG9jay0+bGluZXMpKTsKCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCR0aGlzLT5icmVhayk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogT3V0cHV0IGJsb2NrIHNlbGVjdG9ycwogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkYmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGJsb2NrU2VsZWN0b3JzKE91dHB1dEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICAkaW5uZXIgPSAkdGhpcy0+aW5kZW50U3RyKCk7CgogICAgICAgICR0aGlzLT53cml0ZSgkaW5uZXIKICAgICAgICAgICAgLiBpbXBsb2RlKCR0aGlzLT50YWdTZXBhcmF0b3IsICRibG9jay0+c2VsZWN0b3JzKQogICAgICAgICAgICAuICR0aGlzLT5vcGVuIC4gJHRoaXMtPmJyZWFrKTsKICAgIH0KCiAgICAvKioKICAgICAqIE91dHB1dCBibG9jayBjaGlsZHJlbgogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkYmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGJsb2NrQ2hpbGRyZW4oT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgIGZvcmVhY2ggKCRibG9jay0+Y2hpbGRyZW4gYXMgJGNoaWxkKSB7CiAgICAgICAgICAgICR0aGlzLT5ibG9jaygkY2hpbGQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIE91dHB1dCBub24tZW1wdHkgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJGJsb2NrCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9jayhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCRibG9jay0+bGluZXMpICYmIGVtcHR5KCRibG9jay0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jdXJyZW50QmxvY2sgPSAkYmxvY2s7CgogICAgICAgICRwcmUgPSAkdGhpcy0+aW5kZW50U3RyKCk7CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAkdGhpcy0+YmxvY2tTZWxlY3RvcnMoJGJsb2NrKTsKCiAgICAgICAgICAgICR0aGlzLT5pbmRlbnRMZXZlbCsrOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5saW5lcykpIHsKICAgICAgICAgICAgJHRoaXMtPmJsb2NrTGluZXMoJGJsb2NrKTsKICAgICAgICB9CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgICR0aGlzLT5ibG9ja0NoaWxkcmVuKCRibG9jayk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISBlbXB0eSgkYmxvY2stPnNlbGVjdG9ycykpIHsKICAgICAgICAgICAgJHRoaXMtPmluZGVudExldmVsLS07CgogICAgICAgICAgICBpZiAoZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZSgkdGhpcy0+YnJlYWspOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+d3JpdGUoJHByZSAuICR0aGlzLT5jbG9zZSAuICR0aGlzLT5icmVhayk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGVzdCBhbmQgY2xlYW4gc2FmZWx5IGVtcHR5IGNoaWxkcmVuCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJGJsb2NrCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHRlc3RFbXB0eUNoaWxkcmVuKCRibG9jaykKICAgIHsKICAgICAgICAkaXNFbXB0eSA9IGVtcHR5KCRibG9jay0+bGluZXMpOwoKICAgICAgICBpZiAoJGJsb2NrLT5jaGlsZHJlbikgewogICAgICAgICAgICBmb3JlYWNoICgkYmxvY2stPmNoaWxkcmVuIGFzICRrID0+ICYkY2hpbGQpIHsKICAgICAgICAgICAgICAgIGlmICghICR0aGlzLT50ZXN0RW1wdHlDaGlsZHJlbigkY2hpbGQpKSB7CiAgICAgICAgICAgICAgICAgICAgJGlzRW1wdHkgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRjaGlsZC0+dHlwZSA9PT0gVHlwZTo6VF9NRURJQSB8fCAkY2hpbGQtPnR5cGUgPT09IFR5cGU6OlRfRElSRUNUSVZFKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGlsZC0+Y2hpbGRyZW4gPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoaWxkLT5zZWxlY3RvcnMgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJGlzRW1wdHk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbnRyeSBwb2ludCB0byBmb3JtYXR0aW5nIGEgYmxvY2sKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrICAgICAgICAgICAgICRibG9jayAgICAgICAgICAgICAgQW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXFNvdXJjZU1hcFxTb3VyY2VNYXBHZW5lcmF0b3J8bnVsbCAkc291cmNlTWFwR2VuZXJhdG9yIE9wdGlvbmFsIHNvdXJjZSBtYXAgZ2VuZXJhdG9yCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZvcm1hdChPdXRwdXRCbG9jayAkYmxvY2ssIFNvdXJjZU1hcEdlbmVyYXRvciAkc291cmNlTWFwR2VuZXJhdG9yID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlTWFwR2VuZXJhdG9yID0gbnVsbDsKCiAgICAgICAgaWYgKCRzb3VyY2VNYXBHZW5lcmF0b3IpIHsKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRMaW5lID0gMTsKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRDb2x1bW4gPSAwOwogICAgICAgICAgICAkdGhpcy0+c291cmNlTWFwR2VuZXJhdG9yID0gJHNvdXJjZU1hcEdlbmVyYXRvcjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT50ZXN0RW1wdHlDaGlsZHJlbigkYmxvY2spOwoKICAgICAgICBvYl9zdGFydCgpOwoKICAgICAgICAkdGhpcy0+YmxvY2soJGJsb2NrKTsKCiAgICAgICAgJG91dCA9IG9iX2dldF9jbGVhbigpOwoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gd3JpdGUoJHN0cikKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNvdXJjZU1hcEdlbmVyYXRvcikgewogICAgICAgICAgICAkdGhpcy0+c291cmNlTWFwR2VuZXJhdG9yLT5hZGRNYXBwaW5nKAogICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRMaW5lLAogICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRDb2x1bW4sCiAgICAgICAgICAgICAgICAkdGhpcy0+Y3VycmVudEJsb2NrLT5zb3VyY2VMaW5lLAogICAgICAgICAgICAgICAgLy9jb2x1bW5zIGZyb20gcGFyc2VyIGFyZSBvZmYgYnkgb25lCiAgICAgICAgICAgICAgICAkdGhpcy0+Y3VycmVudEJsb2NrLT5zb3VyY2VDb2x1bW4gPiAwID8gJHRoaXMtPmN1cnJlbnRCbG9jay0+c291cmNlQ29sdW1uIC0gMSA6IDAsCiAgICAgICAgICAgICAgICAkdGhpcy0+Y3VycmVudEJsb2NrLT5zb3VyY2VOYW1lCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkbGluZXMgPSBleHBsb2RlKCJcbiIsICRzdHIpOwogICAgICAgICAgICAkbGluZUNvdW50ID0gY291bnQoJGxpbmVzKTsKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRMaW5lICs9ICRsaW5lQ291bnQtMTsKCiAgICAgICAgICAgICRsYXN0TGluZSA9IGFycmF5X3BvcCgkbGluZXMpOwoKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRDb2x1bW4gPSAoJGxpbmVDb3VudCA9PT0gMSA/ICR0aGlzLT5jdXJyZW50Q29sdW1uIDogMCkgKyBzdHJsZW4oJGxhc3RMaW5lKTsKICAgICAgICB9CgogICAgICAgIGVjaG8gJHN0cjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Compact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXI7CgovKioKICogQ29tcGFjdCBmb3JtYXR0ZXIKICoKICogQGF1dGhvciBMZWFmIENvcmNvcmFuIDxsZWFmb3RAZ21haWwuY29tPgogKi8KY2xhc3MgQ29tcGFjdCBleHRlbmRzIEZvcm1hdHRlcgp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+aW5kZW50TGV2ZWwgPSAwOwogICAgICAgICR0aGlzLT5pbmRlbnRDaGFyID0gJyc7CiAgICAgICAgJHRoaXMtPmJyZWFrID0gJyc7CiAgICAgICAgJHRoaXMtPm9wZW4gPSAnIHsnOwogICAgICAgICR0aGlzLT5jbG9zZSA9ICJ9XG5cbiI7CiAgICAgICAgJHRoaXMtPnRhZ1NlcGFyYXRvciA9ICcsJzsKICAgICAgICAkdGhpcy0+YXNzaWduU2VwYXJhdG9yID0gJzonOwogICAgICAgICR0aGlzLT5rZWVwU2VtaWNvbG9ucyA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbmRlbnRTdHIoKQogICAgewogICAgICAgIHJldHVybiAnICc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Compressed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrOwoKLyoqCiAqIENvbXByZXNzZWQgZm9ybWF0dGVyCiAqCiAqIEBhdXRob3IgTGVhZiBDb3Jjb3JhbiA8bGVhZm90QGdtYWlsLmNvbT4KICovCmNsYXNzIENvbXByZXNzZWQgZXh0ZW5kcyBGb3JtYXR0ZXIKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmluZGVudExldmVsID0gMDsKICAgICAgICAkdGhpcy0+aW5kZW50Q2hhciA9ICcgICc7CiAgICAgICAgJHRoaXMtPmJyZWFrID0gJyc7CiAgICAgICAgJHRoaXMtPm9wZW4gPSAneyc7CiAgICAgICAgJHRoaXMtPmNsb3NlID0gJ30nOwogICAgICAgICR0aGlzLT50YWdTZXBhcmF0b3IgPSAnLCc7CiAgICAgICAgJHRoaXMtPmFzc2lnblNlcGFyYXRvciA9ICc6JzsKICAgICAgICAkdGhpcy0+a2VlcFNlbWljb2xvbnMgPSBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJsb2NrTGluZXMoT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgICRpbm5lciA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgJGdsdWUgPSAkdGhpcy0+YnJlYWsgLiAkaW5uZXI7CgogICAgICAgIGZvcmVhY2ggKCRibG9jay0+bGluZXMgYXMgJGluZGV4ID0+ICRsaW5lKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHIoJGxpbmUsIDAsIDIpID09PSAnLyonICYmIHN1YnN0cigkbGluZSwgMiwgMSkgIT09ICchJykgewogICAgICAgICAgICAgICAgdW5zZXQoJGJsb2NrLT5saW5lc1skaW5kZXhdKTsKICAgICAgICAgICAgfSBlbHNlaWYgKHN1YnN0cigkbGluZSwgMCwgMykgPT09ICcvKiEnKSB7CiAgICAgICAgICAgICAgICAkYmxvY2stPmxpbmVzWyRpbmRleF0gPSAnLyonIC4gc3Vic3RyKCRsaW5lLCAzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndyaXRlKCRpbm5lciAuIGltcGxvZGUoJGdsdWUsICRibG9jay0+bGluZXMpKTsKCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCR0aGlzLT5icmVhayk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogT3V0cHV0IGJsb2NrIHNlbGVjdG9ycwogICAgICoKICAgICAqIEBwYXJhbSBcU2Nzc1BocFxTY3NzUGhwXEZvcm1hdHRlclxPdXRwdXRCbG9jayAkYmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGJsb2NrU2VsZWN0b3JzKE91dHB1dEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICAkaW5uZXIgPSAkdGhpcy0+aW5kZW50U3RyKCk7CgogICAgICAgICR0aGlzLT53cml0ZSgKICAgICAgICAgICAgJGlubmVyCiAgICAgICAgICAgIC4gaW1wbG9kZSgKICAgICAgICAgICAgICAgICR0aGlzLT50YWdTZXBhcmF0b3IsCiAgICAgICAgICAgICAgICBzdHJfcmVwbGFjZShbJyA+ICcsICcgKyAnLCAnIH4gJ10sIFsnPicsICcrJywgJ34nXSwgJGJsb2NrLT5zZWxlY3RvcnMpCiAgICAgICAgICAgICkKICAgICAgICAgICAgLiAkdGhpcy0+b3BlbiAuICR0aGlzLT5icmVhawogICAgICAgICk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Crunched.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrOwoKLyoqCiAqIENydW5jaGVkIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqLwpjbGFzcyBDcnVuY2hlZCBleHRlbmRzIEZvcm1hdHRlcgp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+aW5kZW50TGV2ZWwgPSAwOwogICAgICAgICR0aGlzLT5pbmRlbnRDaGFyID0gJyAgJzsKICAgICAgICAkdGhpcy0+YnJlYWsgPSAnJzsKICAgICAgICAkdGhpcy0+b3BlbiA9ICd7JzsKICAgICAgICAkdGhpcy0+Y2xvc2UgPSAnfSc7CiAgICAgICAgJHRoaXMtPnRhZ1NlcGFyYXRvciA9ICcsJzsKICAgICAgICAkdGhpcy0+YXNzaWduU2VwYXJhdG9yID0gJzonOwogICAgICAgICR0aGlzLT5rZWVwU2VtaWNvbG9ucyA9IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYmxvY2tMaW5lcyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGlubmVyID0gJHRoaXMtPmluZGVudFN0cigpOwoKICAgICAgICAkZ2x1ZSA9ICR0aGlzLT5icmVhayAuICRpbm5lcjsKCiAgICAgICAgZm9yZWFjaCAoJGJsb2NrLT5saW5lcyBhcyAkaW5kZXggPT4gJGxpbmUpIHsKICAgICAgICAgICAgaWYgKHN1YnN0cigkbGluZSwgMCwgMikgPT09ICcvKicpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRibG9jay0+bGluZXNbJGluZGV4XSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT53cml0ZSgkaW5uZXIgLiBpbXBsb2RlKCRnbHVlLCAkYmxvY2stPmxpbmVzKSk7CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZSgkdGhpcy0+YnJlYWspOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIE91dHB1dCBibG9jayBzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sgJGJsb2NrCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9ja1NlbGVjdG9ycyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGlubmVyID0gJHRoaXMtPmluZGVudFN0cigpOwoKICAgICAgICAkdGhpcy0+d3JpdGUoCiAgICAgICAgICAgICRpbm5lcgogICAgICAgICAgICAuIGltcGxvZGUoCiAgICAgICAgICAgICAgICAkdGhpcy0+dGFnU2VwYXJhdG9yLAogICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoWycgPiAnLCAnICsgJywgJyB+ICddLCBbJz4nLCAnKycsICd+J10sICRibG9jay0+c2VsZWN0b3JzKQogICAgICAgICAgICApCiAgICAgICAgICAgIC4gJHRoaXMtPm9wZW4gLiAkdGhpcy0+YnJlYWsKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Debug.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrOwoKLyoqCiAqIERlYnVnIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqLwpjbGFzcyBEZWJ1ZyBleHRlbmRzIEZvcm1hdHRlcgp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+aW5kZW50TGV2ZWwgPSAwOwogICAgICAgICR0aGlzLT5pbmRlbnRDaGFyID0gJyc7CiAgICAgICAgJHRoaXMtPmJyZWFrID0gIlxuIjsKICAgICAgICAkdGhpcy0+b3BlbiA9ICcgeyc7CiAgICAgICAgJHRoaXMtPmNsb3NlID0gJyB9JzsKICAgICAgICAkdGhpcy0+dGFnU2VwYXJhdG9yID0gJywgJzsKICAgICAgICAkdGhpcy0+YXNzaWduU2VwYXJhdG9yID0gJzogJzsKICAgICAgICAkdGhpcy0+a2VlcFNlbWljb2xvbnMgPSB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5kZW50U3RyKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RyX3JlcGVhdCgnICAnLCAkdGhpcy0+aW5kZW50TGV2ZWwpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2tMaW5lcyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGluZGVudCA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgaWYgKGVtcHR5KCRibG9jay0+bGluZXMpKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZSgieyRpbmRlbnR9YmxvY2stPmxpbmVzOiBbXVxuIik7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmxpbmVzIGFzICRpbmRleCA9PiAkbGluZSkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGUoInskaW5kZW50fWJsb2NrLT5saW5lc1t7JGluZGV4fV06ICRsaW5lXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9ja1NlbGVjdG9ycyhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgJGluZGVudCA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgaWYgKGVtcHR5KCRibG9jay0+c2VsZWN0b3JzKSkgewogICAgICAgICAgICAkdGhpcy0+d3JpdGUoInskaW5kZW50fWJsb2NrLT5zZWxlY3RvcnM6IFtdXG4iKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRibG9jay0+c2VsZWN0b3JzIGFzICRpbmRleCA9PiAkc2VsZWN0b3IpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCJ7JGluZGVudH1ibG9jay0+c2VsZWN0b3JzW3skaW5kZXh9XTogJHNlbGVjdG9yXG4iKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9ja0NoaWxkcmVuKE91dHB1dEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICAkaW5kZW50ID0gJHRoaXMtPmluZGVudFN0cigpOwoKICAgICAgICBpZiAoZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCJ7JGluZGVudH1ibG9jay0+Y2hpbGRyZW46IFtdXG4iKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbmRlbnRMZXZlbCsrOwoKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmNoaWxkcmVuIGFzICRpID0+ICRjaGlsZCkgewogICAgICAgICAgICAkdGhpcy0+YmxvY2soJGNoaWxkKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbmRlbnRMZXZlbC0tOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYmxvY2soT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgICRpbmRlbnQgPSAkdGhpcy0+aW5kZW50U3RyKCk7CgogICAgICAgICR0aGlzLT53cml0ZSgieyRpbmRlbnR9YmxvY2stPnR5cGU6IHskYmxvY2stPnR5cGV9XG4iIC4KICAgICAgICAgICAgICJ7JGluZGVudH1ibG9jay0+ZGVwdGg6IHskYmxvY2stPmRlcHRofVxuIik7CgogICAgICAgICR0aGlzLT5jdXJyZW50QmxvY2sgPSAkYmxvY2s7CgogICAgICAgICR0aGlzLT5ibG9ja1NlbGVjdG9ycygkYmxvY2spOwogICAgICAgICR0aGlzLT5ibG9ja0xpbmVzKCRibG9jayk7CiAgICAgICAgJHRoaXMtPmJsb2NrQ2hpbGRyZW4oJGJsb2NrKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Expanded.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrOwoKLyoqCiAqIEV4cGFuZGVkIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqLwpjbGFzcyBFeHBhbmRlZCBleHRlbmRzIEZvcm1hdHRlcgp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+aW5kZW50TGV2ZWwgPSAwOwogICAgICAgICR0aGlzLT5pbmRlbnRDaGFyID0gJyAgJzsKICAgICAgICAkdGhpcy0+YnJlYWsgPSAiXG4iOwogICAgICAgICR0aGlzLT5vcGVuID0gJyB7JzsKICAgICAgICAkdGhpcy0+Y2xvc2UgPSAnfSc7CiAgICAgICAgJHRoaXMtPnRhZ1NlcGFyYXRvciA9ICcsICc7CiAgICAgICAgJHRoaXMtPmFzc2lnblNlcGFyYXRvciA9ICc6ICc7CiAgICAgICAgJHRoaXMtPmtlZXBTZW1pY29sb25zID0gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGluZGVudFN0cigpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cl9yZXBlYXQoJHRoaXMtPmluZGVudENoYXIsICR0aGlzLT5pbmRlbnRMZXZlbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9ja0xpbmVzKE91dHB1dEJsb2NrICRibG9jaykKICAgIHsKICAgICAgICAkaW5uZXIgPSAkdGhpcy0+aW5kZW50U3RyKCk7CgogICAgICAgICRnbHVlID0gJHRoaXMtPmJyZWFrIC4gJGlubmVyOwoKICAgICAgICBmb3JlYWNoICgkYmxvY2stPmxpbmVzIGFzICRpbmRleCA9PiAkbGluZSkgewogICAgICAgICAgICBpZiAoc3Vic3RyKCRsaW5lLCAwLCAyKSA9PT0gJy8qJykgewogICAgICAgICAgICAgICAgJGJsb2NrLT5saW5lc1skaW5kZXhdID0gcHJlZ19yZXBsYWNlKCcvKFxyfFxuKSsvJywgJGdsdWUsICRsaW5lKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndyaXRlKCRpbm5lciAuIGltcGxvZGUoJGdsdWUsICRibG9jay0+bGluZXMpKTsKCiAgICAgICAgaWYgKGVtcHR5KCRibG9jay0+c2VsZWN0b3JzKSB8fCAhIGVtcHR5KCRibG9jay0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZSgkdGhpcy0+YnJlYWspOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/Nested.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyXE91dHB1dEJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXFR5cGU7CgovKioKICogTmVzdGVkIGZvcm1hdHRlcgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqLwpjbGFzcyBOZXN0ZWQgZXh0ZW5kcyBGb3JtYXR0ZXIKewogICAgLyoqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkZGVwdGg7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmluZGVudExldmVsID0gMDsKICAgICAgICAkdGhpcy0+aW5kZW50Q2hhciA9ICcgICc7CiAgICAgICAgJHRoaXMtPmJyZWFrID0gIlxuIjsKICAgICAgICAkdGhpcy0+b3BlbiA9ICcgeyc7CiAgICAgICAgJHRoaXMtPmNsb3NlID0gJyB9JzsKICAgICAgICAkdGhpcy0+dGFnU2VwYXJhdG9yID0gJywgJzsKICAgICAgICAkdGhpcy0+YXNzaWduU2VwYXJhdG9yID0gJzogJzsKICAgICAgICAkdGhpcy0+a2VlcFNlbWljb2xvbnMgPSB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5kZW50U3RyKCkKICAgIHsKICAgICAgICAkbiA9ICR0aGlzLT5kZXB0aCAtIDE7CgogICAgICAgIHJldHVybiBzdHJfcmVwZWF0KCR0aGlzLT5pbmRlbnRDaGFyLCBtYXgoJHRoaXMtPmluZGVudExldmVsICsgJG4sIDApKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGJsb2NrTGluZXMoT3V0cHV0QmxvY2sgJGJsb2NrKQogICAgewogICAgICAgICRpbm5lciA9ICR0aGlzLT5pbmRlbnRTdHIoKTsKCiAgICAgICAgJGdsdWUgPSAkdGhpcy0+YnJlYWsgLiAkaW5uZXI7CgogICAgICAgIGZvcmVhY2ggKCRibG9jay0+bGluZXMgYXMgJGluZGV4ID0+ICRsaW5lKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHIoJGxpbmUsIDAsIDIpID09PSAnLyonKSB7CiAgICAgICAgICAgICAgICAkYmxvY2stPmxpbmVzWyRpbmRleF0gPSBwcmVnX3JlcGxhY2UoJy8oXHJ8XG4pKy8nLCAkZ2x1ZSwgJGxpbmUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+d3JpdGUoJGlubmVyIC4gaW1wbG9kZSgkZ2x1ZSwgJGJsb2NrLT5saW5lcykpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBoYXNGbGF0Q2hpbGQoJGJsb2NrKQogICAgewogICAgICAgIGZvcmVhY2ggKCRibG9jay0+Y2hpbGRyZW4gYXMgJGNoaWxkKSB7CiAgICAgICAgICAgIGlmIChlbXB0eSgkY2hpbGQtPnNlbGVjdG9ycykpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBibG9jayhPdXRwdXRCbG9jayAkYmxvY2spCiAgICB7CiAgICAgICAgc3RhdGljICRkZXB0aHM7CiAgICAgICAgc3RhdGljICRkb3duTGV2ZWw7CiAgICAgICAgc3RhdGljICRjbG9zZUJsb2NrOwogICAgICAgIHN0YXRpYyAkcHJldmlvdXNFbXB0eTsKICAgICAgICBzdGF0aWMgJHByZXZpb3VzSGFzU2VsZWN0b3I7CgogICAgICAgIGlmICgkYmxvY2stPnR5cGUgPT09ICdyb290JykgewogICAgICAgICAgICAkZGVwdGhzID0gWyAwIF07CiAgICAgICAgICAgICRkb3duTGV2ZWwgPSAnJzsKICAgICAgICAgICAgJGNsb3NlQmxvY2sgPSAnJzsKICAgICAgICAgICAgJHRoaXMtPmRlcHRoID0gMDsKICAgICAgICAgICAgJHByZXZpb3VzRW1wdHkgPSBmYWxzZTsKICAgICAgICAgICAgJHByZXZpb3VzSGFzU2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRpc01lZGlhT3JEaXJlY3RpdmUgPSBpbl9hcnJheSgkYmxvY2stPnR5cGUsIFtUeXBlOjpUX0RJUkVDVElWRSwgVHlwZTo6VF9NRURJQV0pOwogICAgICAgICRpc1N1cHBvcnQgPSAoJGJsb2NrLT50eXBlID09PSBUeXBlOjpUX0RJUkVDVElWRQogICAgICAgICAgICAmJiAkYmxvY2stPnNlbGVjdG9ycyAmJiBzdHJwb3MoaW1wbG9kZSgnJywgJGJsb2NrLT5zZWxlY3RvcnMpLCAnQHN1cHBvcnRzJykgIT09IGZhbHNlKTsKCiAgICAgICAgd2hpbGUgKCRibG9jay0+ZGVwdGggPCBlbmQoJGRlcHRocykgfHwgKCRibG9jay0+ZGVwdGggPT0gMSAmJiBlbmQoJGRlcHRocykgPT0gMSkpIHsKICAgICAgICAgICAgYXJyYXlfcG9wKCRkZXB0aHMpOwogICAgICAgICAgICAkdGhpcy0+ZGVwdGgtLTsKCiAgICAgICAgICAgIGlmICghJHRoaXMtPmRlcHRoICYmICgkYmxvY2stPmRlcHRoIDw9IDEgfHwgKCEkdGhpcy0+aW5kZW50TGV2ZWwgJiYgJGJsb2NrLT50eXBlID09PSBUeXBlOjpUX0NPTU1FTlQpKSAmJgogICAgICAgICAgICAgICAgKCgkYmxvY2stPnNlbGVjdG9ycyAmJiAhICRpc01lZGlhT3JEaXJlY3RpdmUpIHx8ICRwcmV2aW91c0hhc1NlbGVjdG9yKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRkb3duTGV2ZWwgPSAkdGhpcy0+YnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChlbXB0eSgkYmxvY2stPmxpbmVzKSAmJiBlbXB0eSgkYmxvY2stPmNoaWxkcmVuKSkgewogICAgICAgICAgICAgICAgJHByZXZpb3VzRW1wdHkgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJGJsb2NrLT5saW5lcykgJiYgZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmN1cnJlbnRCbG9jayA9ICRibG9jazsKCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5saW5lcykgfHwgKCEgZW1wdHkoJGJsb2NrLT5jaGlsZHJlbikgJiYgKCR0aGlzLT5kZXB0aCA8IDEgfHwgJGlzU3VwcG9ydCkpKSB7CiAgICAgICAgICAgIGlmICgkYmxvY2stPmRlcHRoID4gZW5kKCRkZXB0aHMpKSB7CiAgICAgICAgICAgICAgICBpZiAoISAkcHJldmlvdXNFbXB0eSB8fCAkdGhpcy0+ZGVwdGggPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmRlcHRoKys7CiAgICAgICAgICAgICAgICAgICAgJGRlcHRoc1tdID0gJGJsb2NrLT5kZXB0aDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8ga2VlcCB0aGUgY3VycmVudCBkZXB0aCB1bmNoYW5nZWQgYnV0IHRha2UgdGhlIGJsb2NrIGRlcHRoIGFzIGEgbmV3IHJlZmVyZW5jZSBmb3IgZm9sbG93aW5nIGJsb2NrcwogICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkZGVwdGhzKTsKICAgICAgICAgICAgICAgICAgICAkZGVwdGhzW10gPSAkYmxvY2stPmRlcHRoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcHJldmlvdXNFbXB0eSA9ICgkYmxvY2stPnR5cGUgPT09IFR5cGU6OlRfQ09NTUVOVCk7CiAgICAgICAgJHByZXZpb3VzSGFzU2VsZWN0b3IgPSBmYWxzZTsKCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5zZWxlY3RvcnMpKSB7CiAgICAgICAgICAgIGlmICgkY2xvc2VCbG9jaykgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlKCRjbG9zZUJsb2NrKTsKICAgICAgICAgICAgICAgICRjbG9zZUJsb2NrID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkZG93bkxldmVsKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+d3JpdGUoJGRvd25MZXZlbCk7CiAgICAgICAgICAgICAgICAkZG93bkxldmVsID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5ibG9ja1NlbGVjdG9ycygkYmxvY2spOwoKICAgICAgICAgICAgJHRoaXMtPmluZGVudExldmVsKys7CiAgICAgICAgfQoKICAgICAgICBpZiAoISBlbXB0eSgkYmxvY2stPmxpbmVzKSkgewogICAgICAgICAgICBpZiAoJGNsb3NlQmxvY2spIHsKICAgICAgICAgICAgICAgICR0aGlzLT53cml0ZSgkY2xvc2VCbG9jayk7CiAgICAgICAgICAgICAgICAkY2xvc2VCbG9jayA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGRvd25MZXZlbCkgewogICAgICAgICAgICAgICAgJHRoaXMtPndyaXRlKCRkb3duTGV2ZWwpOwogICAgICAgICAgICAgICAgJGRvd25MZXZlbCA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+YmxvY2tMaW5lcygkYmxvY2spOwogICAgICAgICAgICAkY2xvc2VCbG9jayA9ICR0aGlzLT5icmVhazsKICAgICAgICB9CgogICAgICAgIGlmICghIGVtcHR5KCRibG9jay0+Y2hpbGRyZW4pKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+ZGVwdGg+MCAmJiAoJGlzTWVkaWFPckRpcmVjdGl2ZSB8fCAhICR0aGlzLT5oYXNGbGF0Q2hpbGQoJGJsb2NrKSkpIHsKICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkZGVwdGhzKTsKICAgICAgICAgICAgICAgICR0aGlzLT5kZXB0aC0tOwogICAgICAgICAgICAgICAgJHRoaXMtPmJsb2NrQ2hpbGRyZW4oJGJsb2NrKTsKICAgICAgICAgICAgICAgICR0aGlzLT5kZXB0aCsrOwogICAgICAgICAgICAgICAgJGRlcHRoc1tdID0gJGJsb2NrLT5kZXB0aDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5ibG9ja0NoaWxkcmVuKCRibG9jayk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHJlY2xlYXIgdG8gbm90IGJlIHNwb2lsZWQgYnkgY2hpbGRyZW4gaWYgVF9ESVJFQ1RJVkUKICAgICAgICBpZiAoJGJsb2NrLT50eXBlID09PSBUeXBlOjpUX0RJUkVDVElWRSkgewogICAgICAgICAgICAkcHJldmlvdXNIYXNTZWxlY3RvciA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgZW1wdHkoJGJsb2NrLT5zZWxlY3RvcnMpKSB7CiAgICAgICAgICAgICR0aGlzLT5pbmRlbnRMZXZlbC0tOwoKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCR0aGlzLT5jbG9zZSk7CiAgICAgICAgICAgICRjbG9zZUJsb2NrID0gJHRoaXMtPmJyZWFrOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5kZXB0aCA+IDEgJiYgISBlbXB0eSgkYmxvY2stPmNoaWxkcmVuKSkgewogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRkZXB0aHMpOwogICAgICAgICAgICAgICAgJHRoaXMtPmRlcHRoLS07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEgJGlzTWVkaWFPckRpcmVjdGl2ZSkgewogICAgICAgICAgICAgICAgJHByZXZpb3VzSGFzU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJsb2NrLT50eXBlID09PSAncm9vdCcpIHsKICAgICAgICAgICAgJHRoaXMtPndyaXRlKCR0aGlzLT5icmVhayk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Formatter/OutputBlock.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcRm9ybWF0dGVyOwoKLyoqCiAqIE91dHB1dCBibG9jawogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqLwpjbGFzcyBPdXRwdXRCbG9jawp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkdHlwZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgJGRlcHRoOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgJHNlbGVjdG9yczsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHVibGljICRsaW5lczsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHVibGljICRjaGlsZHJlbjsKCiAgICAvKioKICAgICAqIEB2YXIgXFNjc3NQaHBcU2Nzc1BocFxGb3JtYXR0ZXJcT3V0cHV0QmxvY2sKICAgICAqLwogICAgcHVibGljICRwYXJlbnQ7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJHNvdXJjZU5hbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHVibGljICRzb3VyY2VMaW5lOwoKICAgIC8qKgogICAgICogQHZhciBpbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyAkc291cmNlQ29sdW1uOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Node.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7CgovKioKICogQmFzZSBub2RlCiAqCiAqIEBhdXRob3IgQW50aG9uIFBhbmcgPGFudGhvbi5wYW5nQGdtYWlsLmNvbT4KICovCmFic3RyYWN0IGNsYXNzIE5vZGUKewogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgJHR5cGU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHVibGljICRzb3VyY2VJbmRleDsKCiAgICAvKioKICAgICAqIEB2YXIgaW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgJHNvdXJjZUxpbmU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHVibGljICRzb3VyY2VDb2x1bW47Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Node/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Node/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Node/Number.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcTm9kZTsKCnVzZSBTY3NzUGhwXFNjc3NQaHBcQ29tcGlsZXI7CnVzZSBTY3NzUGhwXFNjc3NQaHBcTm9kZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIERpbWVuc2lvbiArIG9wdGlvbmFsIHVuaXRzCiAqCiAqIHtAaW50ZXJuYWwKICogICAgIFRoaXMgaXMgYSB3b3JrLWluLXByb2dyZXNzLgogKgogKiAgICAgVGhlIFxBcnJheUFjY2VzcyBpbnRlcmZhY2UgaXMgdGVtcG9yYXJ5IHVudGlsIHRoZSBtaWdyYXRpb24gaXMgY29tcGxldGUuCiAqIH19CiAqCiAqIEBhdXRob3IgQW50aG9uIFBhbmcgPGFudGhvbi5wYW5nQGdtYWlsLmNvbT4KICovCmNsYXNzIE51bWJlciBleHRlbmRzIE5vZGUgaW1wbGVtZW50cyBcQXJyYXlBY2Nlc3MKewogICAgLyoqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgc3RhdGljIHB1YmxpYyAkcHJlY2lzaW9uID0gMTA7CgogICAgLyoqCiAgICAgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTIvV0QtY3NzMy12YWx1ZXMtMjAxMjAzMDgvCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBzdGF0aWMgcHJvdGVjdGVkICR1bml0VGFibGUgPSBbCiAgICAgICAgJ2luJyA9PiBbCiAgICAgICAgICAgICdpbicgPT4gMSwKICAgICAgICAgICAgJ3BjJyA9PiA2LAogICAgICAgICAgICAncHQnID0+IDcyLAogICAgICAgICAgICAncHgnID0+IDk2LAogICAgICAgICAgICAnY20nID0+IDIuNTQsCiAgICAgICAgICAgICdtbScgPT4gMjUuNCwKICAgICAgICAgICAgJ3EnICA9PiAxMDEuNiwKICAgICAgICBdLAogICAgICAgICd0dXJuJyA9PiBbCiAgICAgICAgICAgICdkZWcnICA9PiAzNjAsCiAgICAgICAgICAgICdncmFkJyA9PiA0MDAsCiAgICAgICAgICAgICdyYWQnICA9PiA2LjI4MzE4NTMwNzE3OTU4NjQ3NjkyNTI4Njc2LCAvLyAyICogTV9QSQogICAgICAgICAgICAndHVybicgPT4gMSwKICAgICAgICBdLAogICAgICAgICdzJyA9PiBbCiAgICAgICAgICAgICdzJyAgPT4gMSwKICAgICAgICAgICAgJ21zJyA9PiAxMDAwLAogICAgICAgIF0sCiAgICAgICAgJ0h6JyA9PiBbCiAgICAgICAgICAgICdIeicgID0+IDEsCiAgICAgICAgICAgICdrSHonID0+IDAuMDAxLAogICAgICAgIF0sCiAgICAgICAgJ2RwaScgPT4gWwogICAgICAgICAgICAnZHBpJyAgPT4gMSwKICAgICAgICAgICAgJ2RwY20nID0+IDIuNTQsCiAgICAgICAgICAgICdkcHB4JyA9PiA5NiwKICAgICAgICBdLAogICAgXTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50ZWdlcnxmbG9hdAogICAgICovCiAgICBwdWJsaWMgJGRpbWVuc2lvbjsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHVibGljICR1bml0czsKCiAgICAvKioKICAgICAqIEluaXRpYWxpemUgbnVtYmVyCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRkaW1lbnNpb24KICAgICAqIEBwYXJhbSBtaXhlZCAkaW5pdGlhbFVuaXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRkaW1lbnNpb24sICRpbml0aWFsVW5pdCkKICAgIHsKICAgICAgICAkdGhpcy0+dHlwZSAgICAgID0gVHlwZTo6VF9OVU1CRVI7CiAgICAgICAgJHRoaXMtPmRpbWVuc2lvbiA9ICRkaW1lbnNpb247CiAgICAgICAgJHRoaXMtPnVuaXRzICAgICA9IGlzX2FycmF5KCRpbml0aWFsVW5pdCkKICAgICAgICAgICAgPyAkaW5pdGlhbFVuaXQKICAgICAgICAgICAgOiAoJGluaXRpYWxVbml0ID8gWyRpbml0aWFsVW5pdCA9PiAxXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb2VyY2UgbnVtYmVyIHRvIHRhcmdldCB1bml0cwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdW5pdHMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcTm9kZVxOdW1iZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvZXJjZSgkdW5pdHMpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT51bml0bGVzcygpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgTnVtYmVyKCR0aGlzLT5kaW1lbnNpb24sICR1bml0cyk7CiAgICAgICAgfQoKICAgICAgICAkZGltZW5zaW9uID0gJHRoaXMtPmRpbWVuc2lvbjsKCiAgICAgICAgZm9yZWFjaCAoc3RhdGljOjokdW5pdFRhYmxlWydpbiddIGFzICR1bml0ID0+ICRjb252KSB7CiAgICAgICAgICAgICRmcm9tICAgICAgID0gaXNzZXQoJHRoaXMtPnVuaXRzWyR1bml0XSkgPyAkdGhpcy0+dW5pdHNbJHVuaXRdIDogMDsKICAgICAgICAgICAgJHRvICAgICAgICAgPSBpc3NldCgkdW5pdHNbJHVuaXRdKSA/ICR1bml0c1skdW5pdF0gOiAwOwogICAgICAgICAgICAkZmFjdG9yICAgICA9IHBvdygkY29udiwgJGZyb20gLSAkdG8pOwogICAgICAgICAgICAkZGltZW5zaW9uIC89ICRmYWN0b3I7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigkZGltZW5zaW9uLCAkdW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIG51bWJlcgogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxOb2RlXE51bWJlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbm9ybWFsaXplKCkKICAgIHsKICAgICAgICAkZGltZW5zaW9uID0gJHRoaXMtPmRpbWVuc2lvbjsKICAgICAgICAkdW5pdHMgICAgID0gW107CgogICAgICAgICR0aGlzLT5ub3JtYWxpemVVbml0cygkZGltZW5zaW9uLCAkdW5pdHMsICdpbicpOwoKICAgICAgICByZXR1cm4gbmV3IE51bWJlcigkZGltZW5zaW9uLCAkdW5pdHMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0RXhpc3RzKCRvZmZzZXQpCiAgICB7CiAgICAgICAgaWYgKCRvZmZzZXQgPT09IC0zKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlQ29sdW1uICE9PSBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvZmZzZXQgPT09IC0yKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlTGluZSAhPT0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICgkb2Zmc2V0ID09PSAtMSB8fAogICAgICAgICAgICAkb2Zmc2V0ID09PSAwIHx8CiAgICAgICAgICAgICRvZmZzZXQgPT09IDEgfHwKICAgICAgICAgICAgJG9mZnNldCA9PT0gMgogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEdldCgkb2Zmc2V0KQogICAgewogICAgICAgIHN3aXRjaCAoJG9mZnNldCkgewogICAgICAgICAgICBjYXNlIC0zOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2VDb2x1bW47CgogICAgICAgICAgICBjYXNlIC0yOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2VMaW5lOwoKICAgICAgICAgICAgY2FzZSAtMToKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlSW5kZXg7CgogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnR5cGU7CgogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmRpbWVuc2lvbjsKCiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dW5pdHM7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0U2V0KCRvZmZzZXQsICR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJG9mZnNldCA9PT0gMSkgewogICAgICAgICAgICAkdGhpcy0+ZGltZW5zaW9uID0gJHZhbHVlOwogICAgICAgIH0gZWxzZWlmICgkb2Zmc2V0ID09PSAyKSB7CiAgICAgICAgICAgICR0aGlzLT51bml0cyA9ICR2YWx1ZTsKICAgICAgICB9IGVsc2VpZiAoJG9mZnNldCA9PSAtMSkgewogICAgICAgICAgICAkdGhpcy0+c291cmNlSW5kZXggPSAkdmFsdWU7CiAgICAgICAgfSBlbHNlaWYgKCRvZmZzZXQgPT0gLTIpIHsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZUxpbmUgPSAkdmFsdWU7CiAgICAgICAgfSBlbHNlaWYgKCRvZmZzZXQgPT0gLTMpIHsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZUNvbHVtbiA9ICR2YWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRVbnNldCgkb2Zmc2V0KQogICAgewogICAgICAgIGlmICgkb2Zmc2V0ID09PSAxKSB7CiAgICAgICAgICAgICR0aGlzLT5kaW1lbnNpb24gPSBudWxsOwogICAgICAgIH0gZWxzZWlmICgkb2Zmc2V0ID09PSAyKSB7CiAgICAgICAgICAgICR0aGlzLT51bml0cyA9IG51bGw7CiAgICAgICAgfSBlbHNlaWYgKCRvZmZzZXQgPT09IC0xKSB7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VJbmRleCA9IG51bGw7CiAgICAgICAgfSBlbHNlaWYgKCRvZmZzZXQgPT09IC0yKSB7CiAgICAgICAgICAgICR0aGlzLT5zb3VyY2VMaW5lID0gbnVsbDsKICAgICAgICB9IGVsc2VpZiAoJG9mZnNldCA9PT0gLTMpIHsKICAgICAgICAgICAgJHRoaXMtPnNvdXJjZUNvbHVtbiA9IG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBudW1iZXIgaXMgdW5pdGxlc3MKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuaXRsZXNzKCkKICAgIHsKICAgICAgICByZXR1cm4gISBhcnJheV9zdW0oJHRoaXMtPnVuaXRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdW5pdChzKSBhcyB0aGUgcHJvZHVjdCBvZiBudW1lcmF0b3IgdW5pdHMgZGl2aWRlZCBieSB0aGUgcHJvZHVjdCBvZiBkZW5vbWluYXRvciB1bml0cwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bml0U3RyKCkKICAgIHsKICAgICAgICAkbnVtZXJhdG9ycyAgID0gW107CiAgICAgICAgJGRlbm9taW5hdG9ycyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+dW5pdHMgYXMgJHVuaXQgPT4gJHVuaXRTaXplKSB7CiAgICAgICAgICAgIGlmICgkdW5pdFNpemUgPiAwKSB7CiAgICAgICAgICAgICAgICAkbnVtZXJhdG9ycyA9IGFycmF5X3BhZCgkbnVtZXJhdG9ycywgY291bnQoJG51bWVyYXRvcnMpICsgJHVuaXRTaXplLCAkdW5pdCk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR1bml0U2l6ZSA8IDApIHsKICAgICAgICAgICAgICAgICRkZW5vbWluYXRvcnMgPSBhcnJheV9wYWQoJGRlbm9taW5hdG9ycywgY291bnQoJGRlbm9taW5hdG9ycykgKyAkdW5pdFNpemUsICR1bml0KTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaW1wbG9kZSgnKicsICRudW1lcmF0b3JzKSAuIChjb3VudCgkZGVub21pbmF0b3JzKSA/ICcvJyAuIGltcGxvZGUoJyonLCAkZGVub21pbmF0b3JzKSA6ICcnKTsKICAgIH0KCiAgICAvKioKICAgICAqIE91dHB1dCBudW1iZXIKICAgICAqCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxDb21waWxlciAkY29tcGlsZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb3V0cHV0KENvbXBpbGVyICRjb21waWxlciA9IG51bGwpCiAgICB7CiAgICAgICAgJGRpbWVuc2lvbiA9IHJvdW5kKCR0aGlzLT5kaW1lbnNpb24sIHN0YXRpYzo6JHByZWNpc2lvbik7CgogICAgICAgICR1bml0cyA9IGFycmF5X2ZpbHRlcigkdGhpcy0+dW5pdHMsIGZ1bmN0aW9uICgkdW5pdFNpemUpIHsKICAgICAgICAgICAgcmV0dXJuICR1bml0U2l6ZTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKGNvdW50KCR1bml0cykgPiAxICYmIGFycmF5X3N1bSgkdW5pdHMpID09PSAwKSB7CiAgICAgICAgICAgICRkaW1lbnNpb24gPSAkdGhpcy0+ZGltZW5zaW9uOwogICAgICAgICAgICAkdW5pdHMgICAgID0gW107CgogICAgICAgICAgICAkdGhpcy0+bm9ybWFsaXplVW5pdHMoJGRpbWVuc2lvbiwgJHVuaXRzLCAnaW4nKTsKCiAgICAgICAgICAgICRkaW1lbnNpb24gPSByb3VuZCgkZGltZW5zaW9uLCBzdGF0aWM6OiRwcmVjaXNpb24pOwogICAgICAgICAgICAkdW5pdHMgICAgID0gYXJyYXlfZmlsdGVyKCR1bml0cywgZnVuY3Rpb24gKCR1bml0U2l6ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR1bml0U2l6ZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkdW5pdFNpemUgPSBhcnJheV9zdW0oJHVuaXRzKTsKCiAgICAgICAgaWYgKCRjb21waWxlciAmJiAoJHVuaXRTaXplID4gMSB8fCAkdW5pdFNpemUgPCAwIHx8IGNvdW50KCR1bml0cykgPiAxKSkgewogICAgICAgICAgICAkY29tcGlsZXItPnRocm93RXJyb3IoKHN0cmluZykgJGRpbWVuc2lvbiAuICR0aGlzLT51bml0U3RyKCkgLiAiIGlzbid0IGEgdmFsaWQgQ1NTIHZhbHVlLiIpOwogICAgICAgIH0KCiAgICAgICAgcmVzZXQoJHVuaXRzKTsKICAgICAgICAkdW5pdCA9IGtleSgkdW5pdHMpOwogICAgICAgICRkaW1lbnNpb24gPSBudW1iZXJfZm9ybWF0KCRkaW1lbnNpb24sIHN0YXRpYzo6JHByZWNpc2lvbiwgJy4nLCAnJyk7CgogICAgICAgIHJldHVybiAoc3RhdGljOjokcHJlY2lzaW9uID8gcnRyaW0ocnRyaW0oJGRpbWVuc2lvbiwgJzAnKSwgJy4nKSA6ICRkaW1lbnNpb24pIC4gJHVuaXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm91dHB1dCgpOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIHVuaXRzCiAgICAgKgogICAgICogQHBhcmFtIGludGVnZXJ8ZmxvYXQgJGRpbWVuc2lvbgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgJHVuaXRzCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAkYmFzZVVuaXQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBub3JtYWxpemVVbml0cygmJGRpbWVuc2lvbiwgJiR1bml0cywgJGJhc2VVbml0ID0gJ2luJykKICAgIHsKICAgICAgICAkZGltZW5zaW9uID0gJHRoaXMtPmRpbWVuc2lvbjsKICAgICAgICAkdW5pdHMgICAgID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT51bml0cyBhcyAkdW5pdCA9PiAkZXhwKSB7CiAgICAgICAgICAgIGlmIChpc3NldChzdGF0aWM6OiR1bml0VGFibGVbJGJhc2VVbml0XVskdW5pdF0pKSB7CiAgICAgICAgICAgICAgICAkZmFjdG9yID0gcG93KHN0YXRpYzo6JHVuaXRUYWJsZVskYmFzZVVuaXRdWyR1bml0XSwgJGV4cCk7CgogICAgICAgICAgICAgICAgJHVuaXQgPSAkYmFzZVVuaXQ7CiAgICAgICAgICAgICAgICAkZGltZW5zaW9uIC89ICRmYWN0b3I7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR1bml0c1skdW5pdF0gPSAkZXhwICsgKGlzc2V0KCR1bml0c1skdW5pdF0pID8gJHVuaXRzWyR1bml0XSA6IDApOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEJsb2NrOwp1c2UgU2Nzc1BocFxTY3NzUGhwXENhY2hlOwp1c2UgU2Nzc1BocFxTY3NzUGhwXENvbXBpbGVyOwp1c2UgU2Nzc1BocFxTY3NzUGhwXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBTY3NzUGhwXFNjc3NQaHBcTm9kZTsKdXNlIFNjc3NQaHBcU2Nzc1BocFxUeXBlOwoKLyoqCiAqIFBhcnNlcgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqLwpjbGFzcyBQYXJzZXIKewogICAgY29uc3QgU09VUkNFX0lOREVYICA9IC0xOwogICAgY29uc3QgU09VUkNFX0xJTkUgICA9IC0yOwogICAgY29uc3QgU09VUkNFX0NPTFVNTiA9IC0zOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRwcmVjZWRlbmNlID0gWwogICAgICAgICc9JyAgID0+IDAsCiAgICAgICAgJ29yJyAgPT4gMSwKICAgICAgICAnYW5kJyA9PiAyLAogICAgICAgICc9PScgID0+IDMsCiAgICAgICAgJyE9JyAgPT4gMywKICAgICAgICAnPD0+JyA9PiAzLAogICAgICAgICc8PScgID0+IDQsCiAgICAgICAgJz49JyAgPT4gNCwKICAgICAgICAnPCcgICA9PiA0LAogICAgICAgICc+JyAgID0+IDQsCiAgICAgICAgJysnICAgPT4gNSwKICAgICAgICAnLScgICA9PiA1LAogICAgICAgICcqJyAgID0+IDYsCiAgICAgICAgJy8nICAgPT4gNiwKICAgICAgICAnJScgICA9PiA2LAogICAgXTsKCiAgICBwcm90ZWN0ZWQgc3RhdGljICRjb21tZW50UGF0dGVybjsKICAgIHByb3RlY3RlZCBzdGF0aWMgJG9wZXJhdG9yUGF0dGVybjsKICAgIHByb3RlY3RlZCBzdGF0aWMgJHdoaXRlUGF0dGVybjsKCiAgICBwcm90ZWN0ZWQgJGNhY2hlOwoKICAgIHByaXZhdGUgJHNvdXJjZU5hbWU7CiAgICBwcml2YXRlICRzb3VyY2VJbmRleDsKICAgIHByaXZhdGUgJHNvdXJjZVBvc2l0aW9uczsKICAgIHByaXZhdGUgJGNoYXJzZXQ7CiAgICBwcml2YXRlICRjb3VudDsKICAgIHByaXZhdGUgJGVudjsKICAgIHByaXZhdGUgJGluUGFyZW5zOwogICAgcHJpdmF0ZSAkZWF0V2hpdGVEZWZhdWx0OwogICAgcHJpdmF0ZSAkZGlzY2FyZENvbW1lbnRzOwogICAgcHJpdmF0ZSAkYnVmZmVyOwogICAgcHJpdmF0ZSAkdXRmODsKICAgIHByaXZhdGUgJGVuY29kaW5nOwogICAgcHJpdmF0ZSAkcGF0dGVybk1vZGlmaWVyczsKICAgIHByaXZhdGUgJGNvbW1lbnRzU2VlbjsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICRzb3VyY2VOYW1lCiAgICAgKiBAcGFyYW0gaW50ZWdlciAgICAgICAgICAgICAgICAkc291cmNlSW5kZXgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICRlbmNvZGluZwogICAgICogQHBhcmFtIFxTY3NzUGhwXFNjc3NQaHBcQ2FjaGUgJGNhY2hlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc291cmNlTmFtZSwgJHNvdXJjZUluZGV4ID0gMCwgJGVuY29kaW5nID0gJ3V0Zi04JywgJGNhY2hlID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlTmFtZSAgICAgICA9ICRzb3VyY2VOYW1lID86ICcoc3RkaW4pJzsKICAgICAgICAkdGhpcy0+c291cmNlSW5kZXggICAgICA9ICRzb3VyY2VJbmRleDsKICAgICAgICAkdGhpcy0+Y2hhcnNldCAgICAgICAgICA9IG51bGw7CiAgICAgICAgJHRoaXMtPnV0ZjggICAgICAgICAgICAgPSAhICRlbmNvZGluZyB8fCBzdHJ0b2xvd2VyKCRlbmNvZGluZykgPT09ICd1dGYtOCc7CiAgICAgICAgJHRoaXMtPnBhdHRlcm5Nb2RpZmllcnMgPSAkdGhpcy0+dXRmOCA/ICdBaXN1JyA6ICdBaXMnOwogICAgICAgICR0aGlzLT5jb21tZW50c1NlZW4gICAgID0gW107CiAgICAgICAgJHRoaXMtPmRpc2NhcmRDb21tZW50cyAgPSBmYWxzZTsKCiAgICAgICAgaWYgKGVtcHR5KHN0YXRpYzo6JG9wZXJhdG9yUGF0dGVybikpIHsKICAgICAgICAgICAgc3RhdGljOjokb3BlcmF0b3JQYXR0ZXJuID0gJyhbKlwvJSstXXxbIT1dXD18XD5cPT98XDxcPVw+fFw8XD0/fGFuZHxvciknOwoKICAgICAgICAgICAgJGNvbW1lbnRTaW5nbGUgICAgICA9ICdcL1wvJzsKICAgICAgICAgICAgJGNvbW1lbnRNdWx0aUxlZnQgICA9ICdcL1wqJzsKICAgICAgICAgICAgJGNvbW1lbnRNdWx0aVJpZ2h0ICA9ICdcKlwvJzsKCiAgICAgICAgICAgIHN0YXRpYzo6JGNvbW1lbnRQYXR0ZXJuID0gJGNvbW1lbnRNdWx0aUxlZnQgLiAnLio/JyAuICRjb21tZW50TXVsdGlSaWdodDsKICAgICAgICAgICAgc3RhdGljOjokd2hpdGVQYXR0ZXJuID0gJHRoaXMtPnV0ZjgKICAgICAgICAgICAgICAgID8gJy8nIC4gJGNvbW1lbnRTaW5nbGUgLiAnW15cbl0qXHMqfCgnIC4gc3RhdGljOjokY29tbWVudFBhdHRlcm4gLiAnKVxzKnxccysvQWlzdVMnCiAgICAgICAgICAgICAgICA6ICcvJyAuICRjb21tZW50U2luZ2xlIC4gJ1teXG5dKlxzKnwoJyAuIHN0YXRpYzo6JGNvbW1lbnRQYXR0ZXJuIC4gJylccyp8XHMrL0Fpc1MnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjYWNoZSkgewogICAgICAgICAgICAkdGhpcy0+Y2FjaGUgPSAkY2FjaGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHNvdXJjZSBmaWxlIG5hbWUKICAgICAqCiAgICAgKiBAYXBpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNvdXJjZU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c291cmNlTmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRocm93IHBhcnNlciBlcnJvcgogICAgICoKICAgICAqIEBhcGkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtc2cKICAgICAqCiAgICAgKiBAdGhyb3dzIFxTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGhyb3dQYXJzZUVycm9yKCRtc2cgPSAncGFyc2UgZXJyb3InKQogICAgewogICAgICAgIGxpc3QoJGxpbmUsICRjb2x1bW4pID0gJHRoaXMtPmdldFNvdXJjZVBvc2l0aW9uKCR0aGlzLT5jb3VudCk7CgogICAgICAgICRsb2MgPSBlbXB0eSgkdGhpcy0+c291cmNlTmFtZSkKICAgICAgICAgICAgID8gImxpbmU6ICRsaW5lLCBjb2x1bW46ICRjb2x1bW4iCiAgICAgICAgICAgICA6ICIkdGhpcy0+c291cmNlTmFtZSBvbiBsaW5lICRsaW5lLCBhdCBjb2x1bW4gJGNvbHVtbiI7CgogICAgICAgIGlmICgkdGhpcy0+cGVlaygiKC4qPykoXG58JCkiLCAkbSwgJHRoaXMtPmNvdW50KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCIkbXNnOiBmYWlsZWQgYXQgYCRtWzFdYCAkbG9jIik7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCIkbXNnOiAkbG9jIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXIgYnVmZmVyCiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJ1ZmZlcgogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxCbG9jawogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoJGJ1ZmZlcikKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNhY2hlKSB7CiAgICAgICAgICAgICRjYWNoZUtleSA9ICR0aGlzLT5zb3VyY2VOYW1lIC4gIjoiIC4gbWQ1KCRidWZmZXIpOwogICAgICAgICAgICAkcGFyc2VPcHRpb25zID0gWwogICAgICAgICAgICAgICAgJ2NoYXJzZXQnID0+ICR0aGlzLT5jaGFyc2V0LAogICAgICAgICAgICAgICAgJ3V0ZjgnID0+ICR0aGlzLT51dGY4LAogICAgICAgICAgICBdOwogICAgICAgICAgICAkdiA9ICR0aGlzLT5jYWNoZS0+Z2V0Q2FjaGUoInBhcnNlIiwgJGNhY2hlS2V5LCAkcGFyc2VPcHRpb25zKTsKCiAgICAgICAgICAgIGlmICghIGlzX251bGwoJHYpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHY7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHN0cmlwIEJPTSAoYnl0ZSBvcmRlciBtYXJrZXIpCiAgICAgICAgaWYgKHN1YnN0cigkYnVmZmVyLCAwLCAzKSA9PT0gIlx4ZWZceGJiXHhiZiIpIHsKICAgICAgICAgICAgJGJ1ZmZlciA9IHN1YnN0cigkYnVmZmVyLCAzKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5idWZmZXIgICAgICAgICAgPSBydHJpbSgkYnVmZmVyLCAiXHgwMC4uXHgxZiIpOwogICAgICAgICR0aGlzLT5jb3VudCAgICAgICAgICAgPSAwOwogICAgICAgICR0aGlzLT5lbnYgICAgICAgICAgICAgPSBudWxsOwogICAgICAgICR0aGlzLT5pblBhcmVucyAgICAgICAgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gdHJ1ZTsKCiAgICAgICAgJHRoaXMtPnNhdmVFbmNvZGluZygpOwogICAgICAgICR0aGlzLT5leHRyYWN0TGluZU51bWJlcnMoJGJ1ZmZlcik7CgogICAgICAgICR0aGlzLT5wdXNoQmxvY2sobnVsbCk7IC8vIHJvb3QgYmxvY2sKICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgICR0aGlzLT5wdXNoQmxvY2sobnVsbCk7CiAgICAgICAgJHRoaXMtPnBvcEJsb2NrKCk7CgogICAgICAgIHdoaWxlICgkdGhpcy0+cGFyc2VDaHVuaygpKSB7CiAgICAgICAgICAgIDsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+Y291bnQgIT09IHN0cmxlbigkdGhpcy0+YnVmZmVyKSkgewogICAgICAgICAgICAkdGhpcy0+dGhyb3dQYXJzZUVycm9yKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISBlbXB0eSgkdGhpcy0+ZW52LT5wYXJlbnQpKSB7CiAgICAgICAgICAgICR0aGlzLT50aHJvd1BhcnNlRXJyb3IoJ3VuY2xvc2VkIGJsb2NrJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmNoYXJzZXQpIHsKICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkdGhpcy0+ZW52LT5jaGlsZHJlbiwgJHRoaXMtPmNoYXJzZXQpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnJlc3RvcmVFbmNvZGluZygpOwoKICAgICAgICBpZiAoJHRoaXMtPmNhY2hlKSB7CiAgICAgICAgICAgICR0aGlzLT5jYWNoZS0+c2V0Q2FjaGUoInBhcnNlIiwgJGNhY2hlS2V5LCAkdGhpcy0+ZW52LCAkcGFyc2VPcHRpb25zKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+ZW52OwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSB2YWx1ZSBvciB2YWx1ZSBsaXN0CiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJ1ZmZlcgogICAgICogQHBhcmFtIHN0cmluZyAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZVZhbHVlKCRidWZmZXIsICYkb3V0KQogICAgewogICAgICAgICR0aGlzLT5jb3VudCAgICAgICAgICAgPSAwOwogICAgICAgICR0aGlzLT5lbnYgICAgICAgICAgICAgPSBudWxsOwogICAgICAgICR0aGlzLT5pblBhcmVucyAgICAgICAgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gdHJ1ZTsKICAgICAgICAkdGhpcy0+YnVmZmVyICAgICAgICAgID0gKHN0cmluZykgJGJ1ZmZlcjsKCiAgICAgICAgJHRoaXMtPnNhdmVFbmNvZGluZygpOwoKICAgICAgICAkbGlzdCA9ICR0aGlzLT52YWx1ZUxpc3QoJG91dCk7CgogICAgICAgICR0aGlzLT5yZXN0b3JlRW5jb2RpbmcoKTsKCiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSBzZWxlY3RvciBvciBzZWxlY3RvciBsaXN0CiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJ1ZmZlcgogICAgICogQHBhcmFtIHN0cmluZyAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZVNlbGVjdG9yKCRidWZmZXIsICYkb3V0KQogICAgewogICAgICAgICR0aGlzLT5jb3VudCAgICAgICAgICAgPSAwOwogICAgICAgICR0aGlzLT5lbnYgICAgICAgICAgICAgPSBudWxsOwogICAgICAgICR0aGlzLT5pblBhcmVucyAgICAgICAgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gdHJ1ZTsKICAgICAgICAkdGhpcy0+YnVmZmVyICAgICAgICAgID0gKHN0cmluZykgJGJ1ZmZlcjsKCiAgICAgICAgJHRoaXMtPnNhdmVFbmNvZGluZygpOwoKICAgICAgICAkc2VsZWN0b3IgPSAkdGhpcy0+c2VsZWN0b3JzKCRvdXQpOwoKICAgICAgICAkdGhpcy0+cmVzdG9yZUVuY29kaW5nKCk7CgogICAgICAgIHJldHVybiAkc2VsZWN0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhIG1lZGlhIFF1ZXJ5CiAgICAgKgogICAgICogQGFwaQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJ1ZmZlcgogICAgICogQHBhcmFtIHN0cmluZyAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VNZWRpYVF1ZXJ5TGlzdCgkYnVmZmVyLCAmJG91dCkKICAgIHsKICAgICAgICAkdGhpcy0+Y291bnQgICAgICAgICAgID0gMDsKICAgICAgICAkdGhpcy0+ZW52ICAgICAgICAgICAgID0gbnVsbDsKICAgICAgICAkdGhpcy0+aW5QYXJlbnMgICAgICAgID0gZmFsc2U7CiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9IHRydWU7CiAgICAgICAgJHRoaXMtPmJ1ZmZlciAgICAgICAgICA9IChzdHJpbmcpICRidWZmZXI7CgogICAgICAgICR0aGlzLT5zYXZlRW5jb2RpbmcoKTsKCgogICAgICAgICRpc01lZGlhUXVlcnkgPSAkdGhpcy0+bWVkaWFRdWVyeUxpc3QoJG91dCk7CgogICAgICAgICR0aGlzLT5yZXN0b3JlRW5jb2RpbmcoKTsKCiAgICAgICAgcmV0dXJuICRpc01lZGlhUXVlcnk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhIHNpbmdsZSBjaHVuayBvZmYgdGhlIGhlYWQgb2YgdGhlIGJ1ZmZlciBhbmQgYXBwZW5kIGl0IHRvIHRoZQogICAgICogY3VycmVudCBwYXJzZSBlbnZpcm9ubWVudC4KICAgICAqCiAgICAgKiBSZXR1cm5zIGZhbHNlIHdoZW4gdGhlIGJ1ZmZlciBpcyBlbXB0eSwgb3Igd2hlbiB0aGVyZSBpcyBhbiBlcnJvci4KICAgICAqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIHRoZSBlbnRpcmUgZG9jdW1lbnQgaXMKICAgICAqIHBhcnNlZC4KICAgICAqCiAgICAgKiBUaGlzIHBhcnNlciBpcyBtb3N0IHNpbWlsYXIgdG8gYSByZWN1cnNpdmUgZGVzY2VudCBwYXJzZXIuIFNpbmdsZQogICAgICogZnVuY3Rpb25zIHJlcHJlc2VudCBkaXNjcmV0ZSBncmFtbWF0aWNhbCBydWxlcyBmb3IgdGhlIGxhbmd1YWdlLCBhbmQKICAgICAqIHRoZXkgYXJlIGFibGUgdG8gY2FwdHVyZSB0aGUgdGV4dCB0aGF0IHJlcHJlc2VudHMgdGhvc2UgcnVsZXMuCiAgICAgKgogICAgICogQ29uc2lkZXIgdGhlIGZ1bmN0aW9uIENvbXBpbGVyOjprZXl3b3JkKCkuIChBbGwgcGFyc2UgZnVuY3Rpb25zIGFyZQogICAgICogc3RydWN0dXJlZCB0aGUgc2FtZS4pCiAgICAgKgogICAgICogVGhlIGZ1bmN0aW9uIHRha2VzIGEgc2luZ2xlIHJlZmVyZW5jZSBhcmd1bWVudC4gV2hlbiBjYWxsaW5nIHRoZQogICAgICogZnVuY3Rpb24gaXQgd2lsbCBhdHRlbXB0IHRvIG1hdGNoIGEga2V5d29yZCBvbiB0aGUgaGVhZCBvZiB0aGUgYnVmZmVyLgogICAgICogSWYgaXQgaXMgc3VjY2Vzc2Z1bCwgaXQgd2lsbCBwbGFjZSB0aGUga2V5d29yZCBpbiB0aGUgcmVmZXJlbmNlZAogICAgICogYXJndW1lbnQsIGFkdmFuY2UgdGhlIHBvc2l0aW9uIGluIHRoZSBidWZmZXIsIGFuZCByZXR1cm4gdHJ1ZS4gSWYgaXQKICAgICAqIGZhaWxzIHRoZW4gaXQgd29uJ3QgYWR2YW5jZSB0aGUgYnVmZmVyIGFuZCBpdCB3aWxsIHJldHVybiBmYWxzZS4KICAgICAqCiAgICAgKiBBbGwgb2YgdGhlc2UgcGFyc2UgZnVuY3Rpb25zIGFyZSBwb3dlcmVkIGJ5IENvbXBpbGVyOjptYXRjaCgpLCB3aGljaCBiZWhhdmVzCiAgICAgKiB0aGUgc2FtZSB3YXksIGJ1dCB0YWtlcyBhIGxpdGVyYWwgcmVndWxhciBleHByZXNzaW9uLiBTb21ldGltZXMgaXQgaXMKICAgICAqIG1vcmUgY29udmVuaWVudCB0byB1c2UgbWF0Y2ggaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBCZWNhdXNlIG9mIHRoZSBmb3JtYXQgb2YgdGhlIGZ1bmN0aW9ucywgdG8gcGFyc2UgYW4gZW50aXJlIHN0cmluZyBvZgogICAgICogZ3JhbW1hdGljYWwgcnVsZXMsIHlvdSBjYW4gY2hhaW4gdGhlbSB0b2dldGhlciB1c2luZyAmJi4KICAgICAqCiAgICAgKiBCdXQsIGlmIHNvbWUgb2YgdGhlIHJ1bGVzIGluIHRoZSBjaGFpbiBzdWNjZWVkIGJlZm9yZSBvbmUgZmFpbHMsIHRoZW4KICAgICAqIHRoZSBidWZmZXIgcG9zaXRpb24gd2lsbCBiZSBsZWZ0IGF0IGFuIGludmFsaWQgc3RhdGUuIEluIG9yZGVyIHRvCiAgICAgKiBhdm9pZCB0aGlzLCBDb21waWxlcjo6c2VlaygpIGlzIHVzZWQgdG8gcmVtZW1iZXIgYW5kIHNldCBidWZmZXIgcG9zaXRpb25zLgogICAgICoKICAgICAqIEJlZm9yZSBwYXJzaW5nIGEgY2hhaW4sIHVzZSAkcyA9ICR0aGlzLT5jb3VudCB0byByZW1lbWJlciB0aGUgY3VycmVudAogICAgICogcG9zaXRpb24gaW50byAkcy4gVGhlbiBpZiBhIGNoYWluIGZhaWxzLCB1c2UgJHRoaXMtPnNlZWsoJHMpIHRvCiAgICAgKiBnbyBiYWNrIHdoZXJlIHdlIHN0YXJ0ZWQuCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwYXJzZUNodW5rKCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgLy8gdGhlIGRpcmVjdGl2ZXMKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnRdKSAmJiAkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudF0gPT09ICdAJykgewogICAgICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ0BhdC1yb290JywgOCkgJiYKICAgICAgICAgICAgICAgICgkdGhpcy0+c2VsZWN0b3JzKCRzZWxlY3RvcikgfHwgdHJ1ZSkgJiYKICAgICAgICAgICAgICAgICgkdGhpcy0+bWFwKCR3aXRoKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigneycsIGZhbHNlKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRhdFJvb3QgPSAkdGhpcy0+cHVzaFNwZWNpYWxCbG9jayhUeXBlOjpUX0FUX1JPT1QsICRzKTsKICAgICAgICAgICAgICAgICRhdFJvb3QtPnNlbGVjdG9yID0gJHNlbGVjdG9yOwogICAgICAgICAgICAgICAgJGF0Um9vdC0+d2l0aCA9ICR3aXRoOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ0BtZWRpYScsIDYpICYmICR0aGlzLT5tZWRpYVF1ZXJ5TGlzdCgkbWVkaWFRdWVyeUxpc3QpICYmICR0aGlzLT5tYXRjaENoYXIoJ3snLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgICRtZWRpYSA9ICR0aGlzLT5wdXNoU3BlY2lhbEJsb2NrKFR5cGU6OlRfTUVESUEsICRzKTsKICAgICAgICAgICAgICAgICRtZWRpYS0+cXVlcnlMaXN0ID0gJG1lZGlhUXVlcnlMaXN0WzJdOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ0BtaXhpbicsIDYpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+a2V5d29yZCgkbWl4aW5OYW1lKSAmJgogICAgICAgICAgICAgICAgKCR0aGlzLT5hcmd1bWVudERlZigkYXJncykgfHwgdHJ1ZSkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJ3snLCBmYWxzZSkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkbWl4aW4gPSAkdGhpcy0+cHVzaFNwZWNpYWxCbG9jayhUeXBlOjpUX01JWElOLCAkcyk7CiAgICAgICAgICAgICAgICAkbWl4aW4tPm5hbWUgPSAkbWl4aW5OYW1lOwogICAgICAgICAgICAgICAgJG1peGluLT5hcmdzID0gJGFyZ3M7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnQGluY2x1ZGUnLCA4KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmtleXdvcmQoJG1peGluTmFtZSkgJiYKICAgICAgICAgICAgICAgICgkdGhpcy0+bWF0Y2hDaGFyKCcoJykgJiYKICAgICAgICAgICAgICAgICAgICAoJHRoaXMtPmFyZ1ZhbHVlcygkYXJnVmFsdWVzKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgKCR0aGlzLT5lbmQoKSB8fAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJ3snKSAmJiAkaGFzQmxvY2sgPSB0cnVlKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRjaGlsZCA9IFtUeXBlOjpUX0lOQ0xVREUsICRtaXhpbk5hbWUsIGlzc2V0KCRhcmdWYWx1ZXMpID8gJGFyZ1ZhbHVlcyA6IG51bGwsIG51bGxdOwoKICAgICAgICAgICAgICAgIGlmICghIGVtcHR5KCRoYXNCbG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAkaW5jbHVkZSA9ICR0aGlzLT5wdXNoU3BlY2lhbEJsb2NrKFR5cGU6OlRfSU5DTFVERSwgJHMpOwogICAgICAgICAgICAgICAgICAgICRpbmNsdWRlLT5jaGlsZCA9ICRjaGlsZDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZCgkY2hpbGQsICRzKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAc2Nzc3BocC1pbXBvcnQtb25jZScsIDIwKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPnZhbHVlTGlzdCgkaW1wb3J0UGF0aCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5lbmQoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfU0NTU1BIUF9JTVBPUlRfT05DRSwgJGltcG9ydFBhdGhdLCAkcyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnQGltcG9ydCcsIDcpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+dmFsdWVMaXN0KCRpbXBvcnRQYXRoKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmVuZCgpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9JTVBPUlQsICRpbXBvcnRQYXRoXSwgJHMpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ0BpbXBvcnQnLCA3KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPnVybCgkaW1wb3J0UGF0aCkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5lbmQoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfSU1QT1JULCAkaW1wb3J0UGF0aF0sICRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAZXh0ZW5kJywgNykgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5zZWxlY3RvcnMoJHNlbGVjdG9ycykgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5lbmQoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciAnIWZsYWcnCiAgICAgICAgICAgICAgICAkb3B0aW9uYWwgPSAkdGhpcy0+c3RyaXBPcHRpb25hbEZsYWcoJHNlbGVjdG9ycyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKFtUeXBlOjpUX0VYVEVORCwgJHNlbGVjdG9ycywgJG9wdGlvbmFsXSwgJHMpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ0BmdW5jdGlvbicsIDkpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+a2V5d29yZCgkZm5OYW1lKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmFyZ3VtZW50RGVmKCRhcmdzKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigneycsIGZhbHNlKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRmdW5jID0gJHRoaXMtPnB1c2hTcGVjaWFsQmxvY2soVHlwZTo6VF9GVU5DVElPTiwgJHMpOwogICAgICAgICAgICAgICAgJGZ1bmMtPm5hbWUgPSAkZm5OYW1lOwogICAgICAgICAgICAgICAgJGZ1bmMtPmFyZ3MgPSAkYXJnczsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAYnJlYWsnLCA2KSAmJiAkdGhpcy0+ZW5kKCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfQlJFQUtdLCAkcyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnQGNvbnRpbnVlJywgOSkgJiYgJHRoaXMtPmVuZCgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKFtUeXBlOjpUX0NPTlRJTlVFXSwgJHMpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ0ByZXR1cm4nLCA3KSAmJiAoJHRoaXMtPnZhbHVlTGlzdCgkcmV0VmFsKSB8fCB0cnVlKSAmJiAkdGhpcy0+ZW5kKCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfUkVUVVJOLCBpc3NldCgkcmV0VmFsKSA/ICRyZXRWYWwgOiBbVHlwZTo6VF9OVUxMXV0sICRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAZWFjaCcsIDUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+Z2VuZXJpY0xpc3QoJHZhck5hbWVzLCAndmFyaWFibGUnLCAnLCcsIGZhbHNlKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJ2luJywgMikgJiYKICAgICAgICAgICAgICAgICR0aGlzLT52YWx1ZUxpc3QoJGxpc3QpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGVhY2ggPSAkdGhpcy0+cHVzaFNwZWNpYWxCbG9jayhUeXBlOjpUX0VBQ0gsICRzKTsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFyTmFtZXNbMl0gYXMgJHZhck5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAkZWFjaC0+dmFyc1tdID0gJHZhck5hbWVbMV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGVhY2gtPmxpc3QgPSAkbGlzdDsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAd2hpbGUnLCA2KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24oJGNvbmQpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHdoaWxlID0gJHRoaXMtPnB1c2hTcGVjaWFsQmxvY2soVHlwZTo6VF9XSElMRSwgJHMpOwogICAgICAgICAgICAgICAgJHdoaWxlLT5jb25kID0gJGNvbmQ7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnQGZvcicsIDQpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+dmFyaWFibGUoJHZhck5hbWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnZnJvbScsIDQpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+ZXhwcmVzc2lvbigkc3RhcnQpICYmCiAgICAgICAgICAgICAgICAoJHRoaXMtPmxpdGVyYWwoJ3Rocm91Z2gnLCA3KSB8fAogICAgICAgICAgICAgICAgICAgICgkZm9yVW50aWwgPSB0cnVlICYmICR0aGlzLT5saXRlcmFsKCd0bycsIDIpKSkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5leHByZXNzaW9uKCRlbmQpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGZvciA9ICR0aGlzLT5wdXNoU3BlY2lhbEJsb2NrKFR5cGU6OlRfRk9SLCAkcyk7CiAgICAgICAgICAgICAgICAkZm9yLT52YXIgPSAkdmFyTmFtZVsxXTsKICAgICAgICAgICAgICAgICRmb3ItPnN0YXJ0ID0gJHN0YXJ0OwogICAgICAgICAgICAgICAgJGZvci0+ZW5kID0gJGVuZDsKICAgICAgICAgICAgICAgICRmb3ItPnVudGlsID0gaXNzZXQoJGZvclVudGlsKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAaWYnLCAzKSAmJiAkdGhpcy0+dmFsdWVMaXN0KCRjb25kKSAmJiAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAkaWYgPSAkdGhpcy0+cHVzaFNwZWNpYWxCbG9jayhUeXBlOjpUX0lGLCAkcyk7CiAgICAgICAgICAgICAgICAkaWYtPmNvbmQgPSAkY29uZDsKICAgICAgICAgICAgICAgICRpZi0+Y2FzZXMgPSBbXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAZGVidWcnLCA2KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPnZhbHVlTGlzdCgkdmFsdWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+ZW5kKCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKFtUeXBlOjpUX0RFQlVHLCAkdmFsdWVdLCAkcyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnQHdhcm4nLCA1KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPnZhbHVlTGlzdCgkdmFsdWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+ZW5kKCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKFtUeXBlOjpUX1dBUk4sICR2YWx1ZV0sICRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAZXJyb3InLCA2KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPnZhbHVlTGlzdCgkdmFsdWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+ZW5kKCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kKFtUeXBlOjpUX0VSUk9SLCAkdmFsdWVdLCAkcyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnQGNvbnRlbnQnLCA4KSAmJiAkdGhpcy0+ZW5kKCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoW1R5cGU6OlRfTUlYSU5fQ09OVEVOVF0sICRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgJGxhc3QgPSAkdGhpcy0+bGFzdCgpOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRsYXN0KSAmJiAkbGFzdFswXSA9PT0gVHlwZTo6VF9JRikgewogICAgICAgICAgICAgICAgbGlzdCgsICRpZikgPSAkbGFzdDsKCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ0BlbHNlJywgNSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcigneycsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZWxzZSA9ICR0aGlzLT5wdXNoU3BlY2lhbEJsb2NrKFR5cGU6OlRfRUxTRSwgJHMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkdGhpcy0+bGl0ZXJhbCgnaWYnLCAyKSAmJiAkdGhpcy0+dmFsdWVMaXN0KCRjb25kKSAmJiAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlbHNlID0gJHRoaXMtPnB1c2hTcGVjaWFsQmxvY2soVHlwZTo6VF9FTFNFSUYsICRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsc2UtPmNvbmQgPSAkY29uZDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVsc2UtPmRvbnRBcHBlbmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAkaWYtPmNhc2VzW10gPSAkZWxzZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIG9ubHkgcmV0YWluIHRoZSBmaXJzdCBAY2hhcnNldCBkaXJlY3RpdmUgZW5jb3VudGVyZWQKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdAY2hhcnNldCcsIDgpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+dmFsdWVMaXN0KCRjaGFyc2V0KSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmVuZCgpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgaWYgKCEgaXNzZXQoJHRoaXMtPmNoYXJzZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgJHN0YXRlbWVudCA9IFtUeXBlOjpUX0NIQVJTRVQsICRjaGFyc2V0XTsKCiAgICAgICAgICAgICAgICAgICAgbGlzdCgkbGluZSwgJGNvbHVtbikgPSAkdGhpcy0+Z2V0U291cmNlUG9zaXRpb24oJHMpOwoKICAgICAgICAgICAgICAgICAgICAkc3RhdGVtZW50W3N0YXRpYzo6U09VUkNFX0xJTkVdICAgPSAkbGluZTsKICAgICAgICAgICAgICAgICAgICAkc3RhdGVtZW50W3N0YXRpYzo6U09VUkNFX0NPTFVNTl0gPSAkY29sdW1uOwogICAgICAgICAgICAgICAgICAgICRzdGF0ZW1lbnRbc3RhdGljOjpTT1VSQ0VfSU5ERVhdICA9ICR0aGlzLT5zb3VyY2VJbmRleDsKCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNoYXJzZXQgPSAkc3RhdGVtZW50OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ0BzdXBwb3J0cycsIDkpICYmCiAgICAgICAgICAgICAgICAoJHQxPSR0aGlzLT5zdXBwb3J0c1F1ZXJ5KCRzdXBwb3J0UXVlcnkpKSAmJgogICAgICAgICAgICAgICAgKCR0Mj0kdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpKSApIHsKICAgICAgICAgICAgICAgICRkaXJlY3RpdmUgPSAkdGhpcy0+cHVzaFNwZWNpYWxCbG9jayhUeXBlOjpUX0RJUkVDVElWRSwgJHMpOwogICAgICAgICAgICAgICAgJGRpcmVjdGl2ZS0+bmFtZSA9ICdzdXBwb3J0cyc7CiAgICAgICAgICAgICAgICAkZGlyZWN0aXZlLT52YWx1ZSA9ICRzdXBwb3J0UXVlcnk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIC8vIGRvZXNuJ3QgbWF0Y2ggYnVpbHQgaW4gZGlyZWN0aXZlLCBkbyBnZW5lcmljIG9uZQogICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignQCcsIGZhbHNlKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPmtleXdvcmQoJGRpck5hbWUpICYmCiAgICAgICAgICAgICAgICAoJHRoaXMtPnZhcmlhYmxlKCRkaXJWYWx1ZSkgfHwgJHRoaXMtPm9wZW5TdHJpbmcoJ3snLCAkZGlyVmFsdWUpIHx8IHRydWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCd7JywgZmFsc2UpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgaWYgKCRkaXJOYW1lID09PSAnbWVkaWEnKSB7CiAgICAgICAgICAgICAgICAgICAgJGRpcmVjdGl2ZSA9ICR0aGlzLT5wdXNoU3BlY2lhbEJsb2NrKFR5cGU6OlRfTUVESUEsICRzKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGRpcmVjdGl2ZSA9ICR0aGlzLT5wdXNoU3BlY2lhbEJsb2NrKFR5cGU6OlRfRElSRUNUSVZFLCAkcyk7CiAgICAgICAgICAgICAgICAgICAgJGRpcmVjdGl2ZS0+bmFtZSA9ICRkaXJOYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkZGlyVmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGRpcmVjdGl2ZS0+dmFsdWUgPSAkZGlyVmFsdWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8vIHByb3BlcnR5IHNob3J0Y3V0CiAgICAgICAgLy8gY2FwdHVyZXMgbW9zdCBwcm9wZXJ0aWVzIGJlZm9yZSBoYXZpbmcgdG8gcGFyc2UgYSBzZWxlY3RvcgogICAgICAgIGlmICgkdGhpcy0+a2V5d29yZCgkbmFtZSwgZmFsc2UpICYmCiAgICAgICAgICAgICR0aGlzLT5saXRlcmFsKCc6ICcsIDIpICYmCiAgICAgICAgICAgICR0aGlzLT52YWx1ZUxpc3QoJHZhbHVlKSAmJgogICAgICAgICAgICAkdGhpcy0+ZW5kKCkKICAgICAgICApIHsKICAgICAgICAgICAgJG5hbWUgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJG5hbWVdXTsKICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9BU1NJR04sICRuYW1lLCAkdmFsdWVdLCAkcyk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgLy8gdmFyaWFibGUgYXNzaWducwogICAgICAgIGlmICgkdGhpcy0+dmFyaWFibGUoJG5hbWUpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJzonKSAmJgogICAgICAgICAgICAkdGhpcy0+dmFsdWVMaXN0KCR2YWx1ZSkgJiYKICAgICAgICAgICAgJHRoaXMtPmVuZCgpCiAgICAgICAgKSB7CiAgICAgICAgICAgIC8vIGNoZWNrIGZvciAnIWZsYWcnCiAgICAgICAgICAgICRhc3NpZ25tZW50RmxhZ3MgPSAkdGhpcy0+c3RyaXBBc3NpZ25tZW50RmxhZ3MoJHZhbHVlKTsKICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9BU1NJR04sICRuYW1lLCAkdmFsdWUsICRhc3NpZ25tZW50RmxhZ3NdLCAkcyk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgLy8gbWlzYwogICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnLS0+JywgMykpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBvcGVuaW5nIGNzcyBibG9jawogICAgICAgIGlmICgkdGhpcy0+c2VsZWN0b3JzKCRzZWxlY3RvcnMpICYmICR0aGlzLT5tYXRjaENoYXIoJ3snLCBmYWxzZSkpIHsKICAgICAgICAgICAgJHRoaXMtPnB1c2hCbG9jaygkc2VsZWN0b3JzLCAkcyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCkgewogICAgICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQobnVsbCk7IC8vIGNvbGxlY3QgY29tbWVudHMgYXQgdGhlIGJlZ2luaW5nIGlmIG5lZWRlZAogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgLy8gcHJvcGVydHkgYXNzaWduLCBvciBuZXN0ZWQgYXNzaWduCiAgICAgICAgaWYgKCR0aGlzLT5wcm9wZXJ0eU5hbWUoJG5hbWUpICYmICR0aGlzLT5tYXRjaENoYXIoJzonKSkgewogICAgICAgICAgICAkZm91bmRTb21ldGhpbmcgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+dmFsdWVMaXN0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+ZW52LT5wYXJlbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRocm93UGFyc2VFcnJvcignZXhwZWN0ZWQgInsiJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChbVHlwZTo6VF9BU1NJR04sICRuYW1lLCAkdmFsdWVdLCAkcyk7CiAgICAgICAgICAgICAgICAkZm91bmRTb21ldGhpbmcgPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcigneycsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgJHByb3BCbG9jayA9ICR0aGlzLT5wdXNoU3BlY2lhbEJsb2NrKFR5cGU6OlRfTkVTVEVEX1BST1BFUlRZLCAkcyk7CiAgICAgICAgICAgICAgICAkcHJvcEJsb2NrLT5wcmVmaXggPSAkbmFtZTsKICAgICAgICAgICAgICAgICRwcm9wQmxvY2stPmhhc1ZhbHVlID0gJGZvdW5kU29tZXRoaW5nOwoKICAgICAgICAgICAgICAgICRmb3VuZFNvbWV0aGluZyA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZWlmICgkZm91bmRTb21ldGhpbmcpIHsKICAgICAgICAgICAgICAgICRmb3VuZFNvbWV0aGluZyA9ICR0aGlzLT5lbmQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRmb3VuZFNvbWV0aGluZykgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgLy8gY2xvc2luZyBhIGJsb2NrCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJ30nLCBmYWxzZSkpIHsKICAgICAgICAgICAgJGJsb2NrID0gJHRoaXMtPnBvcEJsb2NrKCk7CgogICAgICAgICAgICBpZiAoIWlzc2V0KCRibG9jay0+dHlwZSkgfHwgJGJsb2NrLT50eXBlICE9PSBUeXBlOjpUX0lGKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmVudi0+cGFyZW50KSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChudWxsKTsgLy8gY29sbGVjdCBjb21tZW50cyBiZWZvcmUgbmV4dCBzdGF0ZW1lbnQgaWYgbmVlZGVkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkYmxvY2stPnR5cGUpICYmICRibG9jay0+dHlwZSA9PT0gVHlwZTo6VF9JTkNMVURFKSB7CiAgICAgICAgICAgICAgICAkaW5jbHVkZSA9ICRibG9jay0+Y2hpbGQ7CiAgICAgICAgICAgICAgICB1bnNldCgkYmxvY2stPmNoaWxkKTsKICAgICAgICAgICAgICAgICRpbmNsdWRlWzNdID0gJGJsb2NrOwogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZCgkaW5jbHVkZSwgJHMpOwogICAgICAgICAgICB9IGVsc2VpZiAoZW1wdHkoJGJsb2NrLT5kb250QXBwZW5kKSkgewogICAgICAgICAgICAgICAgJHR5cGUgPSBpc3NldCgkYmxvY2stPnR5cGUpID8gJGJsb2NrLT50eXBlIDogVHlwZTo6VF9CTE9DSzsKICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmQoWyR0eXBlLCAkYmxvY2tdLCAkcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGNvbGxlY3QgY29tbWVudHMganVzdCBhZnRlciB0aGUgYmxvY2sgY2xvc2luZyBpZiBuZWVkZWQKICAgICAgICAgICAgaWYgKCR0aGlzLT5lYXRXaGl0ZURlZmF1bHQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5lbnYtPmNvbW1lbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChudWxsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBleHRyYSBzdHVmZgogICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCc7JykgfHwKICAgICAgICAgICAgJHRoaXMtPmxpdGVyYWwoJzwhLS0nLCA0KQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFB1c2ggYmxvY2sgb250byBwYXJzZSB0cmVlCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgJHNlbGVjdG9ycwogICAgICogQHBhcmFtIGludGVnZXIgJHBvcwogICAgICoKICAgICAqIEByZXR1cm4gXFNjc3NQaHBcU2Nzc1BocFxCbG9jawogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHVzaEJsb2NrKCRzZWxlY3RvcnMsICRwb3MgPSAwKQogICAgewogICAgICAgIGxpc3QoJGxpbmUsICRjb2x1bW4pID0gJHRoaXMtPmdldFNvdXJjZVBvc2l0aW9uKCRwb3MpOwoKICAgICAgICAkYiA9IG5ldyBCbG9jazsKICAgICAgICAkYi0+c291cmNlTmFtZSAgID0gJHRoaXMtPnNvdXJjZU5hbWU7CiAgICAgICAgJGItPnNvdXJjZUxpbmUgICA9ICRsaW5lOwogICAgICAgICRiLT5zb3VyY2VDb2x1bW4gPSAkY29sdW1uOwogICAgICAgICRiLT5zb3VyY2VJbmRleCAgPSAkdGhpcy0+c291cmNlSW5kZXg7CiAgICAgICAgJGItPnNlbGVjdG9ycyAgICA9ICRzZWxlY3RvcnM7CiAgICAgICAgJGItPmNvbW1lbnRzICAgICA9IFtdOwogICAgICAgICRiLT5wYXJlbnQgICAgICAgPSAkdGhpcy0+ZW52OwoKICAgICAgICBpZiAoISAkdGhpcy0+ZW52KSB7CiAgICAgICAgICAgICRiLT5jaGlsZHJlbiA9IFtdOwogICAgICAgIH0gZWxzZWlmIChlbXB0eSgkdGhpcy0+ZW52LT5jaGlsZHJlbikpIHsKICAgICAgICAgICAgJHRoaXMtPmVudi0+Y2hpbGRyZW4gPSAkdGhpcy0+ZW52LT5jb21tZW50czsKICAgICAgICAgICAgJGItPmNoaWxkcmVuID0gW107CiAgICAgICAgICAgICR0aGlzLT5lbnYtPmNvbW1lbnRzID0gW107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGItPmNoaWxkcmVuID0gJHRoaXMtPmVudi0+Y29tbWVudHM7CiAgICAgICAgICAgICR0aGlzLT5lbnYtPmNvbW1lbnRzID0gW107CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZW52ID0gJGI7CgogICAgICAgIC8vIGNvbGxlY3QgY29tbWVudHMgYXQgdGhlIGJlZ2luaW5nIG9mIGEgYmxvY2sgaWYgbmVlZGVkCiAgICAgICAgaWYgKCR0aGlzLT5lYXRXaGl0ZURlZmF1bHQpIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+ZW52LT5jb21tZW50cykgewogICAgICAgICAgICAgICAgJHRoaXMtPmFwcGVuZChudWxsKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiOwogICAgfQoKICAgIC8qKgogICAgICogUHVzaCBzcGVjaWFsIChuYW1lZCkgYmxvY2sgb250byBwYXJzZSB0cmVlCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgJHR5cGUKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRwb3MKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHB1c2hTcGVjaWFsQmxvY2soJHR5cGUsICRwb3MpCiAgICB7CiAgICAgICAgJGJsb2NrID0gJHRoaXMtPnB1c2hCbG9jayhudWxsLCAkcG9zKTsKICAgICAgICAkYmxvY2stPnR5cGUgPSAkdHlwZTsKCiAgICAgICAgcmV0dXJuICRibG9jazsKICAgIH0KCiAgICAvKioKICAgICAqIFBvcCBzY29wZSBhbmQgcmV0dXJuIGxhc3QgYmxvY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIFxTY3NzUGhwXFNjc3NQaHBcQmxvY2sKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBvcEJsb2NrKCkKICAgIHsKCiAgICAgICAgLy8gY29sbGVjdCBjb21tZW50cyBlbmRpbmcganVzdCBiZWZvcmUgb2YgYSBibG9jayBjbG9zaW5nCiAgICAgICAgaWYgKCR0aGlzLT5lbnYtPmNvbW1lbnRzKSB7CiAgICAgICAgICAgICR0aGlzLT5hcHBlbmQobnVsbCk7CiAgICAgICAgfQoKICAgICAgICAvLyBwb3AgdGhlIGJsb2NrCiAgICAgICAgJGJsb2NrID0gJHRoaXMtPmVudjsKCiAgICAgICAgaWYgKGVtcHR5KCRibG9jay0+cGFyZW50KSkgewogICAgICAgICAgICAkdGhpcy0+dGhyb3dQYXJzZUVycm9yKCd1bmV4cGVjdGVkIH0nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYmxvY2stPnR5cGUgPT0gVHlwZTo6VF9BVF9ST09UKSB7CiAgICAgICAgICAgIC8vIGtlZXBzIHRoZSBwYXJlbnQgaW4gY2FzZSBvZiBzZWxmIHNlbGVjdG9yICYKICAgICAgICAgICAgJGJsb2NrLT5zZWxmUGFyZW50ID0gJGJsb2NrLT5wYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZW52ID0gJGJsb2NrLT5wYXJlbnQ7CgogICAgICAgIHVuc2V0KCRibG9jay0+cGFyZW50KTsKCiAgICAgICAgcmV0dXJuICRibG9jazsKICAgIH0KCiAgICAvKioKICAgICAqIFBlZWsgaW5wdXQgc3RyZWFtCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgJHJlZ2V4CiAgICAgKiBAcGFyYW0gYXJyYXkgICAkb3V0CiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZnJvbQogICAgICoKICAgICAqIEByZXR1cm4gaW50ZWdlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGVlaygkcmVnZXgsICYkb3V0LCAkZnJvbSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCEgaXNzZXQoJGZyb20pKSB7CiAgICAgICAgICAgICRmcm9tID0gJHRoaXMtPmNvdW50OwogICAgICAgIH0KCiAgICAgICAgJHIgPSAnLycgLiAkcmVnZXggLiAnLycgLiAkdGhpcy0+cGF0dGVybk1vZGlmaWVyczsKICAgICAgICAkcmVzdWx0ID0gcHJlZ19tYXRjaCgkciwgJHRoaXMtPmJ1ZmZlciwgJG91dCwgbnVsbCwgJGZyb20pOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFNlZWsgdG8gcG9zaXRpb24gaW4gaW5wdXQgc3RyZWFtIChvciByZXR1cm4gY3VycmVudCBwb3NpdGlvbiBpbiBpbnB1dCBzdHJlYW0pCiAgICAgKgogICAgICogQHBhcmFtIGludGVnZXIgJHdoZXJlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZWVrKCR3aGVyZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y291bnQgPSAkd2hlcmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYXRjaCBzdHJpbmcgbG9va2luZyBmb3IgZWl0aGVyIGVuZGluZyBkZWxpbSwgZXNjYXBlLCBvciBzdHJpbmcgaW50ZXJwb2xhdGlvbgogICAgICoKICAgICAqIHtAaW50ZXJuYWwgVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHByZWdfbWF0Y2gncyAyNTBLIHN0cmluZyBtYXRjaCBsaW1pdC4gfX0KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICRtICAgICBNYXRjaGVzIChwYXNzZWQgYnkgcmVmZXJlbmNlKQogICAgICogQHBhcmFtIHN0cmluZyAkZGVsaW0gRGVsaW1ldGVyCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuIFRydWUgaWYgbWF0Y2g7IGZhbHNlIG90aGVyd2lzZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWF0Y2hTdHJpbmcoJiRtLCAkZGVsaW0pCiAgICB7CiAgICAgICAgJHRva2VuID0gbnVsbDsKCiAgICAgICAgJGVuZCA9IHN0cmxlbigkdGhpcy0+YnVmZmVyKTsKCiAgICAgICAgLy8gbG9vayBmb3IgZWl0aGVyIGVuZGluZyBkZWxpbSwgZXNjYXBlLCBvciBzdHJpbmcgaW50ZXJwb2xhdGlvbgogICAgICAgIGZvcmVhY2ggKFsnI3snLCAnXFwnLCAkZGVsaW1dIGFzICRsb29rYWhlYWQpIHsKICAgICAgICAgICAgJHBvcyA9IHN0cnBvcygkdGhpcy0+YnVmZmVyLCAkbG9va2FoZWFkLCAkdGhpcy0+Y291bnQpOwoKICAgICAgICAgICAgaWYgKCRwb3MgIT09IGZhbHNlICYmICRwb3MgPCAkZW5kKSB7CiAgICAgICAgICAgICAgICAkZW5kID0gJHBvczsKICAgICAgICAgICAgICAgICR0b2tlbiA9ICRsb29rYWhlYWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghIGlzc2V0KCR0b2tlbikpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG1hdGNoID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsICR0aGlzLT5jb3VudCwgJGVuZCAtICR0aGlzLT5jb3VudCk7CiAgICAgICAgJG0gPSBbCiAgICAgICAgICAgICRtYXRjaCAuICR0b2tlbiwKICAgICAgICAgICAgJG1hdGNoLAogICAgICAgICAgICAkdG9rZW4KICAgICAgICBdOwogICAgICAgICR0aGlzLT5jb3VudCA9ICRlbmQgKyBzdHJsZW4oJHRva2VuKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcnkgdG8gbWF0Y2ggc29tZXRoaW5nIG9uIGhlYWQgb2YgYnVmZmVyCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgJHJlZ2V4CiAgICAgKiBAcGFyYW0gYXJyYXkgICAkb3V0CiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkZWF0V2hpdGVzcGFjZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWF0Y2goJHJlZ2V4LCAmJG91dCwgJGVhdFdoaXRlc3BhY2UgPSBudWxsKQogICAgewogICAgICAgICRyID0gJy8nIC4gJHJlZ2V4IC4gJy8nIC4gJHRoaXMtPnBhdHRlcm5Nb2RpZmllcnM7CgogICAgICAgIGlmICghIHByZWdfbWF0Y2goJHIsICR0aGlzLT5idWZmZXIsICRvdXQsIG51bGwsICR0aGlzLT5jb3VudCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvdW50ICs9IHN0cmxlbigkb3V0WzBdKTsKCiAgICAgICAgaWYgKCEgaXNzZXQoJGVhdFdoaXRlc3BhY2UpKSB7CiAgICAgICAgICAgICRlYXRXaGl0ZXNwYWNlID0gJHRoaXMtPmVhdFdoaXRlRGVmYXVsdDsKICAgICAgICB9CgogICAgICAgIGlmICgkZWF0V2hpdGVzcGFjZSkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYXRjaCBhIHNpbmdsZSBzdHJpbmcKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAkY2hhcgogICAgICogQHBhcmFtIGJvb2xlYW4gJGVhdFdoaXRlc3BhY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG1hdGNoQ2hhcigkY2hhciwgJGVhdFdoaXRlc3BhY2UgPSBudWxsKQogICAgewogICAgICAgIGlmICghIGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkgfHwgJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnRdICE9PSAkY2hhcikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y291bnQrKzsKCiAgICAgICAgaWYgKCEgaXNzZXQoJGVhdFdoaXRlc3BhY2UpKSB7CiAgICAgICAgICAgICRlYXRXaGl0ZXNwYWNlID0gJHRoaXMtPmVhdFdoaXRlRGVmYXVsdDsKICAgICAgICB9CgogICAgICAgIGlmICgkZWF0V2hpdGVzcGFjZSkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYXRjaCBsaXRlcmFsIHN0cmluZwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICR3aGF0CiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbGVuCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkZWF0V2hpdGVzcGFjZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGl0ZXJhbCgkd2hhdCwgJGxlbiwgJGVhdFdoaXRlc3BhY2UgPSBudWxsKQogICAgewogICAgICAgIGlmIChzdHJjYXNlY21wKHN1YnN0cigkdGhpcy0+YnVmZmVyLCAkdGhpcy0+Y291bnQsICRsZW4pLCAkd2hhdCkgIT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvdW50ICs9ICRsZW47CgogICAgICAgIGlmICghIGlzc2V0KCRlYXRXaGl0ZXNwYWNlKSkgewogICAgICAgICAgICAkZWF0V2hpdGVzcGFjZSA9ICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGVhdFdoaXRlc3BhY2UpIHsKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogTWF0Y2ggc29tZSB3aGl0ZXNwYWNlCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB3aGl0ZXNwYWNlKCkKICAgIHsKICAgICAgICAkZ290V2hpdGUgPSBmYWxzZTsKCiAgICAgICAgd2hpbGUgKHByZWdfbWF0Y2goc3RhdGljOjokd2hpdGVQYXR0ZXJuLCAkdGhpcy0+YnVmZmVyLCAkbSwgbnVsbCwgJHRoaXMtPmNvdW50KSkgewogICAgICAgICAgICBpZiAoaXNzZXQoJG1bMV0pICYmIGVtcHR5KCR0aGlzLT5jb21tZW50c1NlZW5bJHRoaXMtPmNvdW50XSkpIHsKICAgICAgICAgICAgICAgIC8vIGNvbW1lbnQgdGhhdCBhcmUga2VwdCBpbiB0aGUgb3V0cHV0IENTUwogICAgICAgICAgICAgICAgJGNvbW1lbnQgPSBbXTsKICAgICAgICAgICAgICAgICRlbmRDb21tZW50Q291bnQgPSAkdGhpcy0+Y291bnQgKyBzdHJsZW4oJG1bMV0pOwoKICAgICAgICAgICAgICAgIC8vIGZpbmQgaW50ZXJwb2xhdGlvbnMgaW4gY29tbWVudAogICAgICAgICAgICAgICAgJHAgPSBzdHJwb3MoJHRoaXMtPmJ1ZmZlciwgJyN7JywgJHRoaXMtPmNvdW50KTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoJHAgIT09IGZhbHNlICYmICRwIDwgJGVuZENvbW1lbnRDb3VudCkgewogICAgICAgICAgICAgICAgICAgICRjID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsICR0aGlzLT5jb3VudCwgJHAgLSAkdGhpcy0+Y291bnQpOwogICAgICAgICAgICAgICAgICAgICRjb21tZW50W10gPSAkYzsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQgPSAkcDsKICAgICAgICAgICAgICAgICAgICAkb3V0ID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pbnRlcnBvbGF0aW9uKCRvdXQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgcmlnaHQgc3BhY2VzIGluIHRoZSBmb2xsb3dpbmcgc3RyaW5nIHBhcnQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRvdXRbM10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudC0xXSAhPT0gJ30nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50LS07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG91dFszXSA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWVudFtdID0gJG91dDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkY29tbWVudFtdID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsICR0aGlzLT5jb3VudCwgMik7CgogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQgKz0gMjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRwID0gc3RycG9zKCR0aGlzLT5idWZmZXIsICcjeycsICR0aGlzLT5jb3VudCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gcmVtYWluaW5nIHBhcnQKICAgICAgICAgICAgICAgICRjID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsICR0aGlzLT5jb3VudCwgJGVuZENvbW1lbnRDb3VudCAtICR0aGlzLT5jb3VudCk7CgogICAgICAgICAgICAgICAgaWYgKCEgJGNvbW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBzaW5nbGUgcGFydCBzdGF0aWMgY29tbWVudAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5hcHBlbmRDb21tZW50KFtUeXBlOjpUX0NPTU1FTlQsICRjXSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjb21tZW50W10gPSAkYzsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YXBwZW5kQ29tbWVudChbVHlwZTo6VF9DT01NRU5ULCBbVHlwZTo6VF9TVFJJTkcsICcnLCAkY29tbWVudF1dKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29tbWVudHNTZWVuWyR0aGlzLT5jb3VudF0gPSB0cnVlOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50ID0gJGVuZENvbW1lbnRDb3VudDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGNvbW1lbnQgdGhhdCBhcmUgaWdub3JlZCBhbmQgbm90IGtlcHQgaW4gdGhlIG91dHB1dCBjc3MKICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCArPSBzdHJsZW4oJG1bMF0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZ290V2hpdGUgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRnb3RXaGl0ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFwcGVuZCBjb21tZW50IHRvIGN1cnJlbnQgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbW1lbnQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFwcGVuZENvbW1lbnQoJGNvbW1lbnQpCiAgICB7CiAgICAgICAgaWYgKCEgJHRoaXMtPmRpc2NhcmRDb21tZW50cykgewogICAgICAgICAgICBpZiAoJGNvbW1lbnRbMF0gPT09IFR5cGU6OlRfQ09NTUVOVCAmJiBpc19zdHJpbmcoJGNvbW1lbnRbMV0pKSB7CiAgICAgICAgICAgICAgICAkY29tbWVudFsxXSA9IHN1YnN0cihwcmVnX3JlcGxhY2UoWycvXlxzKy9tJywgJy9eKC4pL20nXSwgWycnLCAnIFwxJ10sICRjb21tZW50WzFdKSwgMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5lbnYtPmNvbW1lbnRzW10gPSAkY29tbWVudDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBlbmQgc3RhdGVtZW50IHRvIGN1cnJlbnQgYmxvY2sKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkc3RhdGVtZW50CiAgICAgKiBAcGFyYW0gaW50ZWdlciAkcG9zCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcHBlbmQoJHN0YXRlbWVudCwgJHBvcyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCEgaXNfbnVsbCgkc3RhdGVtZW50KSkgewogICAgICAgICAgICBpZiAoJHBvcyAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgbGlzdCgkbGluZSwgJGNvbHVtbikgPSAkdGhpcy0+Z2V0U291cmNlUG9zaXRpb24oJHBvcyk7CgogICAgICAgICAgICAgICAgJHN0YXRlbWVudFtzdGF0aWM6OlNPVVJDRV9MSU5FXSAgID0gJGxpbmU7CiAgICAgICAgICAgICAgICAkc3RhdGVtZW50W3N0YXRpYzo6U09VUkNFX0NPTFVNTl0gPSAkY29sdW1uOwogICAgICAgICAgICAgICAgJHN0YXRlbWVudFtzdGF0aWM6OlNPVVJDRV9JTkRFWF0gID0gJHRoaXMtPnNvdXJjZUluZGV4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+ZW52LT5jaGlsZHJlbltdID0gJHN0YXRlbWVudDsKICAgICAgICB9CgogICAgICAgICRjb21tZW50cyA9ICR0aGlzLT5lbnYtPmNvbW1lbnRzOwoKICAgICAgICBpZiAoJGNvbW1lbnRzKSB7CiAgICAgICAgICAgICR0aGlzLT5lbnYtPmNoaWxkcmVuID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmVudi0+Y2hpbGRyZW4sICRjb21tZW50cyk7CiAgICAgICAgICAgICR0aGlzLT5lbnYtPmNvbW1lbnRzID0gW107CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBsYXN0IGNoaWxkIHdhcyBhcHBlbmRlZAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbGFzdCgpCiAgICB7CiAgICAgICAgJGkgPSBjb3VudCgkdGhpcy0+ZW52LT5jaGlsZHJlbikgLSAxOwoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmVudi0+Y2hpbGRyZW5bJGldKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmVudi0+Y2hpbGRyZW5bJGldOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIG1lZGlhIHF1ZXJ5IGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWVkaWFRdWVyeUxpc3QoJiRvdXQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZW5lcmljTGlzdCgkb3V0LCAnbWVkaWFRdWVyeScsICcsJywgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgbWVkaWEgcXVlcnkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWVkaWFRdWVyeSgmJG91dCkKICAgIHsKICAgICAgICAkZXhwcmVzc2lvbnMgPSBudWxsOwogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICBpZiAoKCR0aGlzLT5saXRlcmFsKCdvbmx5JywgNCkgJiYgKCRvbmx5ID0gdHJ1ZSkgfHwgJHRoaXMtPmxpdGVyYWwoJ25vdCcsIDMpICYmICgkbm90ID0gdHJ1ZSkgfHwgdHJ1ZSkgJiYKICAgICAgICAgICAgJHRoaXMtPm1peGVkS2V5d29yZCgkbWVkaWFUeXBlKQogICAgICAgICkgewogICAgICAgICAgICAkcHJvcCA9IFtUeXBlOjpUX01FRElBX1RZUEVdOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRvbmx5KSkgewogICAgICAgICAgICAgICAgJHByb3BbXSA9IFtUeXBlOjpUX0tFWVdPUkQsICdvbmx5J107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkbm90KSkgewogICAgICAgICAgICAgICAgJHByb3BbXSA9IFtUeXBlOjpUX0tFWVdPUkQsICdub3QnXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1lZGlhID0gW1R5cGU6OlRfTElTVCwgJycsIFtdXTsKCiAgICAgICAgICAgIGZvcmVhY2ggKChhcnJheSkgJG1lZGlhVHlwZSBhcyAkdHlwZSkgewogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICRtZWRpYVsyXVtdID0gJHR5cGU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRtZWRpYVsyXVtdID0gW1R5cGU6OlRfS0VZV09SRCwgJHR5cGVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkcHJvcFtdICA9ICRtZWRpYTsKICAgICAgICAgICAgJHBhcnRzW10gPSAkcHJvcDsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkcGFydHMpIHx8ICR0aGlzLT5saXRlcmFsKCdhbmQnLCAzKSkgewogICAgICAgICAgICAkdGhpcy0+Z2VuZXJpY0xpc3QoJGV4cHJlc3Npb25zLCAnbWVkaWFFeHByZXNzaW9uJywgJ2FuZCcsIGZhbHNlKTsKCiAgICAgICAgICAgIGlmIChpc19hcnJheSgkZXhwcmVzc2lvbnMpKSB7CiAgICAgICAgICAgICAgICAkcGFydHMgPSBhcnJheV9tZXJnZSgkcGFydHMsICRleHByZXNzaW9uc1syXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRvdXQgPSAkcGFydHM7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2Ugc3VwcG9ydHMgcXVlcnkKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3VwcG9ydHNRdWVyeSgmJG91dCkKICAgIHsKICAgICAgICAkZXhwcmVzc2lvbnMgPSBudWxsOwogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgJG5vdCA9IGZhbHNlOwogICAgICAgIGlmICgoJHRoaXMtPmxpdGVyYWwoJ25vdCcsIDMpICYmICgkbm90ID0gdHJ1ZSkgfHwgdHJ1ZSkgJiYKICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKCcpICYmCiAgICAgICAgICAgICgkdGhpcy0+ZXhwcmVzc2lvbigkcHJvcGVydHkpKSAmJgogICAgICAgICAgICAkdGhpcy0+bGl0ZXJhbCgnOiAnLCAyKSAmJgogICAgICAgICAgICAkdGhpcy0+dmFsdWVMaXN0KCR2YWx1ZSkgJiYKICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKScpKSB7CiAgICAgICAgICAgICRzdXBwb3J0ID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgW1tUeXBlOjpUX0tFWVdPUkQsICgkbm90ID8gJ25vdCAnIDogJycpIC4gJygnXV1dOwogICAgICAgICAgICAkc3VwcG9ydFsyXVtdID0gJHByb3BlcnR5OwogICAgICAgICAgICAkc3VwcG9ydFsyXVtdID0gW1R5cGU6OlRfS0VZV09SRCwgJzogJ107CiAgICAgICAgICAgICRzdXBwb3J0WzJdW10gPSAkdmFsdWU7CiAgICAgICAgICAgICRzdXBwb3J0WzJdW10gPSBbVHlwZTo6VF9LRVlXT1JELCAnKSddOwoKICAgICAgICAgICAgJHBhcnRzW10gPSAkc3VwcG9ydDsKICAgICAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJygnKSAmJgogICAgICAgICAgICAkdGhpcy0+c3VwcG9ydHNRdWVyeSgkc3ViUXVlcnkpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKSkgewogICAgICAgICAgICAkcGFydHNbXSA9IFtUeXBlOjpUX1NUUklORywgJycsIFtbVHlwZTo6VF9LRVlXT1JELCAnKCddLCAkc3ViUXVlcnksIFtUeXBlOjpUX0tFWVdPUkQsICcpJ11dXTsKICAgICAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdub3QnLCAzKSAmJgogICAgICAgICAgICAkdGhpcy0+c3VwcG9ydHNRdWVyeSgkc3ViUXVlcnkpKSB7CiAgICAgICAgICAgICRwYXJ0c1tdID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgW1tUeXBlOjpUX0tFWVdPUkQsICdub3QgJ10sICRzdWJRdWVyeV1dOwogICAgICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJ3NlbGVjdG9yKCcsIDkpICYmCiAgICAgICAgICAgICR0aGlzLT5zZWxlY3Rvcigkc2VsZWN0b3IpICYmCiAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKSkgewogICAgICAgICAgICAkc3VwcG9ydCA9IFtUeXBlOjpUX1NUUklORywgJycsIFtbVHlwZTo6VF9LRVlXT1JELCAnc2VsZWN0b3IoJ11dXTsKCiAgICAgICAgICAgICRzZWxlY3Rvckxpc3QgPSBbVHlwZTo6VF9MSVNULCAnJywgW11dOwogICAgICAgICAgICBmb3JlYWNoICgkc2VsZWN0b3IgYXMgJHNjKSB7CiAgICAgICAgICAgICAgICAkY29tcG91bmQgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbXV07CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc2MgYXMgJHNjcCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkc2NwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29tcG91bmRbMl1bXSA9ICRzY3A7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBvdW5kWzJdW10gPSBbVHlwZTo6VF9LRVlXT1JELCAkc2NwXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc2VsZWN0b3JMaXN0WzJdW10gPSAkY29tcG91bmQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHN1cHBvcnRbMl1bXSA9ICRzZWxlY3Rvckxpc3Q7CiAgICAgICAgICAgICRzdXBwb3J0WzJdW10gPSBbVHlwZTo6VF9LRVlXT1JELCAnKSddOwogICAgICAgICAgICAkcGFydHNbXSA9ICRzdXBwb3J0OwogICAgICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnZhcmlhYmxlKCR2YXIpIG9yICR0aGlzLT5pbnRlcnBvbGF0aW9uKCR2YXIpKSB7CiAgICAgICAgICAgICRwYXJ0c1tdID0gJHZhcjsKICAgICAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdhbmQnLCAzKSAmJgogICAgICAgICAgICAkdGhpcy0+Z2VuZXJpY0xpc3QoJGV4cHJlc3Npb25zLCAnc3VwcG9ydHNRdWVyeScsICcgYW5kJywgZmFsc2UpKSB7CiAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGV4cHJlc3Npb25zWzJdLCBbVHlwZTo6VF9TVFJJTkcsICcnLCAkcGFydHNdKTsKICAgICAgICAgICAgJHBhcnRzID0gWyRleHByZXNzaW9uc107CiAgICAgICAgICAgICRzID0gJHRoaXMtPmNvdW50OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnb3InLCAyKSAmJgogICAgICAgICAgICAkdGhpcy0+Z2VuZXJpY0xpc3QoJGV4cHJlc3Npb25zLCAnc3VwcG9ydHNRdWVyeScsICcgb3InLCBmYWxzZSkpIHsKICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkZXhwcmVzc2lvbnNbMl0sIFtUeXBlOjpUX1NUUklORywgJycsICRwYXJ0c10pOwogICAgICAgICAgICAkcGFydHMgPSBbJGV4cHJlc3Npb25zXTsKICAgICAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvdW50KCRwYXJ0cykpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5lYXRXaGl0ZURlZmF1bHQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1NUUklORywgJycsICRwYXJ0c107CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKCiAgICAvKioKICAgICAqIFBhcnNlIG1lZGlhIGV4cHJlc3Npb24KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWVkaWFFeHByZXNzaW9uKCYkb3V0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwogICAgICAgICR2YWx1ZSA9IG51bGw7CgogICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcoJykgJiYKICAgICAgICAgICAgJHRoaXMtPmV4cHJlc3Npb24oJGZlYXR1cmUpICYmCiAgICAgICAgICAgICgkdGhpcy0+bWF0Y2hDaGFyKCc6JykgJiYgJHRoaXMtPmV4cHJlc3Npb24oJHZhbHVlKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykKICAgICAgICApIHsKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX01FRElBX0VYUFJFU1NJT04sICRmZWF0dXJlXTsKCiAgICAgICAgICAgIGlmICgkdmFsdWUpIHsKICAgICAgICAgICAgICAgICRvdXRbXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGFyZ3VtZW50IHZhbHVlcwogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcmdWYWx1ZXMoJiRvdXQpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5nZW5lcmljTGlzdCgkbGlzdCwgJ2FyZ1ZhbHVlJywgJywnLCBmYWxzZSkpIHsKICAgICAgICAgICAgJG91dCA9ICRsaXN0WzJdOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhcmd1bWVudCB2YWx1ZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcmdWYWx1ZSgmJG91dCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgJGtleXdvcmQgPSBudWxsOwoKICAgICAgICBpZiAoISAkdGhpcy0+dmFyaWFibGUoJGtleXdvcmQpIHx8ICEgJHRoaXMtPm1hdGNoQ2hhcignOicpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKICAgICAgICAgICAgJGtleXdvcmQgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5nZW5lcmljTGlzdCgkdmFsdWUsICdleHByZXNzaW9uJykpIHsKICAgICAgICAgICAgJG91dCA9IFska2V5d29yZCwgJHZhbHVlLCBmYWxzZV07CiAgICAgICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCcuLi4nLCAzKSkgewogICAgICAgICAgICAgICAgJG91dFsyXSA9IHRydWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgY29tbWEgc2VwYXJhdGVkIHZhbHVlIGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdmFsdWVMaXN0KCYkb3V0KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2VuZXJpY0xpc3QoJG91dCwgJ3NwYWNlTGlzdCcsICcsJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBzcGFjZSBzZXBhcmF0ZWQgdmFsdWUgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzcGFjZUxpc3QoJiRvdXQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZW5lcmljTGlzdCgkb3V0LCAnZXhwcmVzc2lvbicpOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgZ2VuZXJpYyBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICRvdXQKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkcGFyc2VJdGVtCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJGRlbGltCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAgJGZsYXR0ZW4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdlbmVyaWNMaXN0KCYkb3V0LCAkcGFyc2VJdGVtLCAkZGVsaW0gPSAnJywgJGZsYXR0ZW4gPSB0cnVlKQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwogICAgICAgICRpdGVtcyA9IFtdOwogICAgICAgICR2YWx1ZSA9IG51bGw7CgogICAgICAgIHdoaWxlICgkdGhpcy0+JHBhcnNlSXRlbSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRpdGVtc1tdID0gJHZhbHVlOwoKICAgICAgICAgICAgaWYgKCRkZWxpbSkgewogICAgICAgICAgICAgICAgaWYgKCEgJHRoaXMtPmxpdGVyYWwoJGRlbGltLCBzdHJsZW4oJGRlbGltKSkpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCEgJGl0ZW1zKSB7CiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmxhdHRlbiAmJiBjb3VudCgkaXRlbXMpID09PSAxKSB7CiAgICAgICAgICAgICRvdXQgPSAkaXRlbXNbMF07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX0xJU1QsICRkZWxpbSwgJGl0ZW1zXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgZXhwcmVzc2lvbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBleHByZXNzaW9uKCYkb3V0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwogICAgICAgICRkaXNjYXJkID0gJHRoaXMtPmRpc2NhcmRDb21tZW50czsKICAgICAgICAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzID0gdHJ1ZTsKCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJygnKSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPnBhcmVuRXhwcmVzc2lvbigkb3V0LCAkcywgIikiKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmRpc2NhcmRDb21tZW50cyA9ICRkaXNjYXJkOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCdbJykpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5wYXJlbkV4cHJlc3Npb24oJG91dCwgJHMsICJdIiwgW1R5cGU6OlRfTElTVCwgVHlwZTo6VF9LRVlXT1JEXSkpIHsKICAgICAgICAgICAgICAgIGlmICgkb3V0WzBdICE9PSBUeXBlOjpUX0xJU1QgJiYgJG91dFswXSAhPT0gVHlwZTo6VF9NQVApIHsKICAgICAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfU1RSSU5HLCAnJywgWyAnWycsICRvdXQsICddJyBdXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzID0gJGRpc2NhcmQ7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZSgkbGhzKSkgewogICAgICAgICAgICAkb3V0ID0gJHRoaXMtPmV4cEhlbHBlcigkbGhzLCAwKTsKCiAgICAgICAgICAgICR0aGlzLT5kaXNjYXJkQ29tbWVudHMgPSAkZGlzY2FyZDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGlzY2FyZENvbW1lbnRzID0gJGRpc2NhcmQ7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgZXhwcmVzc2lvbiBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgZm9yIGxpc3RzIGluIHBhcmVudGhlc2lzIG9yIGJyYWNrZXRzCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgJG91dAogICAgICogQHBhcmFtIGludGVnZXIgJHMKICAgICAqIEBwYXJhbSBzdHJpbmcgICRjbG9zaW5nUGFyZW4KICAgICAqIEBwYXJhbSBhcnJheSAgICRhbGxvd2VkVHlwZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHBhcmVuRXhwcmVzc2lvbigmJG91dCwgJHMsICRjbG9zaW5nUGFyZW4gPSAiKSIsICRhbGxvd2VkVHlwZXMgPSBbVHlwZTo6VF9MSVNULCBUeXBlOjpUX01BUF0pCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJGNsb3NpbmdQYXJlbikpIHsKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX0xJU1QsICcnLCBbXV07CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWVMaXN0KCRvdXQpICYmICR0aGlzLT5tYXRjaENoYXIoJGNsb3NpbmdQYXJlbikgJiYgaW5fYXJyYXkoJG91dFswXSwgJGFsbG93ZWRUeXBlcykpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIGlmIChpbl9hcnJheShUeXBlOjpUX01BUCwgJGFsbG93ZWRUeXBlcykgJiYgJHRoaXMtPm1hcCgkb3V0KSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGxlZnQtaGFuZCBzaWRlIG9mIHN1YmV4cHJlc3Npb24KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkbGhzCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbWluUAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGV4cEhlbHBlcigkbGhzLCAkbWluUCkKICAgIHsKICAgICAgICAkb3BlcmF0b3JzID0gc3RhdGljOjokb3BlcmF0b3JQYXR0ZXJuOwoKICAgICAgICAkc3MgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgJHdoaXRlQmVmb3JlID0gaXNzZXQoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnQgLSAxXSkgJiYKICAgICAgICAgICAgY3R5cGVfc3BhY2UoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnQgLSAxXSk7CgogICAgICAgIHdoaWxlICgkdGhpcy0+bWF0Y2goJG9wZXJhdG9ycywgJG0sIGZhbHNlKSAmJiBzdGF0aWM6OiRwcmVjZWRlbmNlWyRtWzFdXSA+PSAkbWluUCkgewogICAgICAgICAgICAkd2hpdGVBZnRlciA9IGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkgJiYKICAgICAgICAgICAgICAgIGN0eXBlX3NwYWNlKCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSk7CiAgICAgICAgICAgICR2YXJBZnRlciA9IGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkgJiYKICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSA9PT0gJyQnOwoKICAgICAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsKCiAgICAgICAgICAgICRvcCA9ICRtWzFdOwoKICAgICAgICAgICAgLy8gZG9uJ3QgdHVybiBuZWdhdGl2ZSBudW1iZXJzIGludG8gZXhwcmVzc2lvbnMKICAgICAgICAgICAgaWYgKCRvcCA9PT0gJy0nICYmICR3aGl0ZUJlZm9yZSAmJiAhICR3aGl0ZUFmdGVyICYmICEgJHZhckFmdGVyKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCEgJHRoaXMtPnZhbHVlKCRyaHMpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gcGVlayBhbmQgc2VlIGlmIHJocyBiZWxvbmdzIHRvIG5leHQgb3BlcmF0b3IKICAgICAgICAgICAgaWYgKCR0aGlzLT5wZWVrKCRvcGVyYXRvcnMsICRuZXh0KSAmJiBzdGF0aWM6OiRwcmVjZWRlbmNlWyRuZXh0WzFdXSA+IHN0YXRpYzo6JHByZWNlZGVuY2VbJG9wXSkgewogICAgICAgICAgICAgICAgJHJocyA9ICR0aGlzLT5leHBIZWxwZXIoJHJocywgc3RhdGljOjokcHJlY2VkZW5jZVskbmV4dFsxXV0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbGhzID0gW1R5cGU6OlRfRVhQUkVTU0lPTiwgJG9wLCAkbGhzLCAkcmhzLCAkdGhpcy0+aW5QYXJlbnMsICR3aGl0ZUJlZm9yZSwgJHdoaXRlQWZ0ZXJdOwogICAgICAgICAgICAkc3MgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgICAgICR3aGl0ZUJlZm9yZSA9IGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50IC0gMV0pICYmCiAgICAgICAgICAgICAgICBjdHlwZV9zcGFjZSgkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudCAtIDFdKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzcyk7CgogICAgICAgIHJldHVybiAkbGhzOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgdmFsdWUKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdmFsdWUoJiRvdXQpCiAgICB7CiAgICAgICAgaWYgKCEgaXNzZXQoJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnRdKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICAkY2hhciA9ICR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XTsKCiAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCd1cmwoJywgNCkgJiYgJHRoaXMtPm1hdGNoKCdkYXRhOihbYS16XSspXC8oW2EtejAtOS4rLV0rKTtiYXNlNjQsJywgJG0sIGZhbHNlKSkgewogICAgICAgICAgICAkbGVuID0gc3Ryc3BuKAogICAgICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlciwKICAgICAgICAgICAgICAgICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eXh6MDEyMzQ1Njc4OSsvPScsCiAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICR0aGlzLT5jb3VudCArPSAkbGVuOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJyknKSkgewogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSBzdWJzdHIoJHRoaXMtPmJ1ZmZlciwgJHMsICR0aGlzLT5jb3VudCAtICRzKTsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9LRVlXT1JELCAkY29udGVudF07CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCd1cmwoJywgNCwgZmFsc2UpICYmICR0aGlzLT5tYXRjaCgnXHMqKFwvXC9cUyspXHMqJywgJG0pKSB7CiAgICAgICAgICAgICRjb250ZW50ID0gJ3VybCgnIC4gJG1bMV07CgogICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignKScpKSB7CiAgICAgICAgICAgICAgICAkY29udGVudCAuPSAnKSc7CiAgICAgICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfS0VZV09SRCwgJGNvbnRlbnRdOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIC8vIG5vdAogICAgICAgIGlmICgkY2hhciA9PT0gJ24nICYmICR0aGlzLT5saXRlcmFsKCdub3QnLCAzLCBmYWxzZSkpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT53aGl0ZXNwYWNlKCkgJiYgJHRoaXMtPnZhbHVlKCRpbm5lcikpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9VTkFSWSwgJ25vdCcsICRpbm5lciwgJHRoaXMtPmluUGFyZW5zXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5wYXJlblZhbHVlKCRpbm5lcikpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9VTkFSWSwgJ25vdCcsICRpbm5lciwgJHRoaXMtPmluUGFyZW5zXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwogICAgICAgIH0KCiAgICAgICAgLy8gYWRkaXRpb24KICAgICAgICBpZiAoJGNoYXIgPT09ICcrJykgewogICAgICAgICAgICAkdGhpcy0+Y291bnQrKzsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+dmFsdWUoJGlubmVyKSkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1VOQVJZLCAnKycsICRpbm5lciwgJHRoaXMtPmluUGFyZW5zXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmNvdW50LS07CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBuZWdhdGlvbgogICAgICAgIGlmICgkY2hhciA9PT0gJy0nKSB7CiAgICAgICAgICAgICR0aGlzLT5jb3VudCsrOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT52YXJpYWJsZSgkaW5uZXIpIHx8ICR0aGlzLT51bml0KCRpbm5lcikgfHwgJHRoaXMtPnBhcmVuVmFsdWUoJGlubmVyKSkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1VOQVJZLCAnLScsICRpbm5lciwgJHRoaXMtPmluUGFyZW5zXTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmNvdW50LS07CiAgICAgICAgfQoKICAgICAgICAvLyBwYXJlbgogICAgICAgIGlmICgkY2hhciA9PT0gJygnICYmICR0aGlzLT5wYXJlblZhbHVlKCRvdXQpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjaGFyID09PSAnIycpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5pbnRlcnBvbGF0aW9uKCRvdXQpIHx8ICR0aGlzLT5jb2xvcigkb3V0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcmJywgdHJ1ZSkpIHsKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1NFTEZdOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNoYXIgPT09ICckJyAmJiAkdGhpcy0+dmFyaWFibGUoJG91dCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNoYXIgPT09ICdwJyAmJiAkdGhpcy0+cHJvZ2lkKCRvdXQpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCgkY2hhciA9PT0gJyInIHx8ICRjaGFyID09PSAiJyIpICYmICR0aGlzLT5zdHJpbmcoJG91dCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnVuaXQoJG91dCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyB1bmljb2RlIHJhbmdlIHdpdGggd2lsZGNhcmRzCiAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdVKycsIDIpICYmICR0aGlzLT5tYXRjaCgnKFswLTlBLUZdK1w/KikoLShbMC05QS1GXSspKT8nLCAkbSwgZmFsc2UpKSB7CiAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9LRVlXT1JELCAnVSsnIC4gJG1bMF1dOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+a2V5d29yZCgka2V5d29yZCwgZmFsc2UpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+ZnVuYygka2V5d29yZCwgJG91dCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwoKICAgICAgICAgICAgaWYgKCRrZXl3b3JkID09PSAnbnVsbCcpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9OVUxMXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9LRVlXT1JELCAka2V5d29yZF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgcGFyZW50aGVzaXplZCB2YWx1ZQogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwYXJlblZhbHVlKCYkb3V0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAkaW5QYXJlbnMgPSAkdGhpcy0+aW5QYXJlbnM7CgogICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcoJykpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJyknKSkgewogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX0xJU1QsICcnLCBbXV07CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5pblBhcmVucyA9IHRydWU7CgogICAgICAgICAgICBpZiAoJHRoaXMtPmV4cHJlc3Npb24oJGV4cCkgJiYgJHRoaXMtPm1hdGNoQ2hhcignKScpKSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gJGV4cDsKICAgICAgICAgICAgICAgICR0aGlzLT5pblBhcmVucyA9ICRpblBhcmVuczsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmluUGFyZW5zID0gJGluUGFyZW5zOwogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgInByb2dpZDoiCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHByb2dpZCgmJG91dCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKCR0aGlzLT5saXRlcmFsKCdwcm9naWQ6JywgNywgZmFsc2UpICYmCiAgICAgICAgICAgICR0aGlzLT5vcGVuU3RyaW5nKCcoJywgJGZuKSAmJgogICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcoJykKICAgICAgICApIHsKICAgICAgICAgICAgJHRoaXMtPm9wZW5TdHJpbmcoJyknLCAkYXJncywgJygnKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcpJykpIHsKICAgICAgICAgICAgICAgICRvdXQgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbCiAgICAgICAgICAgICAgICAgICAgJ3Byb2dpZDonLCAkZm4sICcoJywgJGFyZ3MsICcpJwogICAgICAgICAgICAgICAgXV07CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgZnVuY3Rpb24gY2FsbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqIEBwYXJhbSBhcnJheSAgJGZ1bmMKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGZ1bmMoJG5hbWUsICYkZnVuYykKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJygnKSkgewogICAgICAgICAgICBpZiAoJG5hbWUgPT09ICdhbHBoYScgJiYgJHRoaXMtPmFyZ3VtZW50TGlzdCgkYXJncykpIHsKICAgICAgICAgICAgICAgICRmdW5jID0gW1R5cGU6OlRfRlVOQ1RJT04sICRuYW1lLCBbVHlwZTo6VF9TVFJJTkcsICcnLCAkYXJnc11dOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG5hbWUgIT09ICdleHByZXNzaW9uJyAmJiAhIHByZWdfbWF0Y2goJy9eKC1bYS16XSstKT9jYWxjJC8nLCAkbmFtZSkpIHsKICAgICAgICAgICAgICAgICRzcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmFyZ1ZhbHVlcygkYXJncykgJiYgJHRoaXMtPm1hdGNoQ2hhcignKScpKSB7CiAgICAgICAgICAgICAgICAgICAgJGZ1bmMgPSBbVHlwZTo6VF9GVU5DVElPTl9DQUxMLCAkbmFtZSwgJGFyZ3NdOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdGhpcy0+c2Vlaygkc3MpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoKCR0aGlzLT5vcGVuU3RyaW5nKCcpJywgJHN0ciwgJygnKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKScpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGFyZ3MgPSBbXTsKCiAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICRhcmdzW10gPSBbbnVsbCwgW1R5cGU6OlRfU1RSSU5HLCAnJywgWyRzdHJdXV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGZ1bmMgPSBbVHlwZTo6VF9GVU5DVElPTl9DQUxMLCAkbmFtZSwgJGFyZ3NdOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGZ1bmN0aW9uIGNhbGwgYXJndW1lbnQgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhcmd1bWVudExpc3QoJiRvdXQpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKCcpOwoKICAgICAgICAkYXJncyA9IFtdOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPmtleXdvcmQoJHZhcikpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJz0nKSAmJiAkdGhpcy0+ZXhwcmVzc2lvbigkZXhwKSkgewogICAgICAgICAgICAgICAgJGFyZ3NbXSA9IFtUeXBlOjpUX1NUUklORywgJycsIFskdmFyIC4gJz0nXV07CiAgICAgICAgICAgICAgICAkYXJnID0gJGV4cDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYXJnc1tdID0gJGFyZzsKCiAgICAgICAgICAgIGlmICghICR0aGlzLT5tYXRjaENoYXIoJywnKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhcmdzW10gPSBbVHlwZTo6VF9TVFJJTkcsICcnLCBbJywgJ11dOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEgJHRoaXMtPm1hdGNoQ2hhcignKScpIHx8ICEgJGFyZ3MpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRhcmdzOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIG1peGluL2Z1bmN0aW9uIGRlZmluaXRpb24gIGFyZ3VtZW50IGxpc3QKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXJndW1lbnREZWYoJiRvdXQpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignKCcpOwoKICAgICAgICAkYXJncyA9IFtdOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPnZhcmlhYmxlKCR2YXIpKSB7CiAgICAgICAgICAgICRhcmcgPSBbJHZhclsxXSwgbnVsbCwgZmFsc2VdOwoKICAgICAgICAgICAgJHNzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJzonKSAmJiAkdGhpcy0+Z2VuZXJpY0xpc3QoJGRlZmF1bHRWYWwsICdleHByZXNzaW9uJykpIHsKICAgICAgICAgICAgICAgICRhcmdbMV0gPSAkZGVmYXVsdFZhbDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgnLi4uJywgMykpIHsKICAgICAgICAgICAgICAgICRzc3MgPSAkdGhpcy0+Y291bnQ7CgogICAgICAgICAgICAgICAgaWYgKCEgJHRoaXMtPm1hdGNoQ2hhcignKScpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnRocm93UGFyc2VFcnJvcignLi4uIGhhcyB0byBiZSBhZnRlciB0aGUgZmluYWwgYXJndW1lbnQnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYXJnWzJdID0gdHJ1ZTsKICAgICAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzc3MpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHNzKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGFyZ3NbXSA9ICRhcmc7CgogICAgICAgICAgICBpZiAoISAkdGhpcy0+bWF0Y2hDaGFyKCcsJykpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoISAkdGhpcy0+bWF0Y2hDaGFyKCcpJykpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRhcmdzOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIG1hcAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtYXAoJiRvdXQpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CgogICAgICAgIGlmICghICR0aGlzLT5tYXRjaENoYXIoJygnKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAka2V5cyA9IFtdOwogICAgICAgICR2YWx1ZXMgPSBbXTsKCiAgICAgICAgd2hpbGUgKCR0aGlzLT5nZW5lcmljTGlzdCgka2V5LCAnZXhwcmVzc2lvbicpICYmICR0aGlzLT5tYXRjaENoYXIoJzonKSAmJgogICAgICAgICAgICAkdGhpcy0+Z2VuZXJpY0xpc3QoJHZhbHVlLCAnZXhwcmVzc2lvbicpCiAgICAgICAgKSB7CiAgICAgICAgICAgICRrZXlzW10gPSAka2V5OwogICAgICAgICAgICAkdmFsdWVzW10gPSAkdmFsdWU7CgogICAgICAgICAgICBpZiAoISAkdGhpcy0+bWF0Y2hDaGFyKCcsJykpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoISAka2V5cyB8fCAhICR0aGlzLT5tYXRjaENoYXIoJyknKSkgewogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkb3V0ID0gW1R5cGU6OlRfTUFQLCAka2V5cywgJHZhbHVlc107CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgY29sb3IKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY29sb3IoJiRvdXQpCiAgICB7CiAgICAgICAgJGNvbG9yID0gW1R5cGU6OlRfQ09MT1JdOwogICAgICAgICRzICAgICA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaCgnKCMoWzAtOWEtZl0rKSknLCAkbSkpIHsKICAgICAgICAgICAgJG5vZlZhbHVlcyA9IHN0cmxlbigkbVsyXSk7CiAgICAgICAgICAgICRoYXNBbHBoYSAgPSAkbm9mVmFsdWVzID09PSA0IHx8ICRub2ZWYWx1ZXMgPT09IDg7CiAgICAgICAgICAgICRjaGFubmVscyAgPSAkaGFzQWxwaGEgPyBbNCwgMywgMiwgMV0gOiBbMywgMiwgMV07CgogICAgICAgICAgICBzd2l0Y2ggKCRub2ZWYWx1ZXMpIHsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAkbnVtID0gaGV4ZGVjKCRtWzJdKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNoYW5uZWxzIGFzICRpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0ID0gJG51bSAmIDB4ZjsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbG9yWyRpXSA9ICR0IDw8IDQgfCAkdDsKICAgICAgICAgICAgICAgICAgICAgICAgJG51bSA+Pj0gNDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICAgICAkbnVtID0gaGV4ZGVjKCRtWzJdKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGNoYW5uZWxzIGFzICRpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb2xvclskaV0gPSAkbnVtICYgMHhmZjsKICAgICAgICAgICAgICAgICAgICAgICAgJG51bSA+Pj0gODsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkaGFzQWxwaGEpIHsKICAgICAgICAgICAgICAgIGlmICgkY29sb3JbNF0gPT09IDI1NSkgewogICAgICAgICAgICAgICAgICAgICRjb2xvcls0XSA9IDE7IC8vIGZ1bGx5IG9wYXF1ZQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY29sb3JbNF0gPSByb3VuZCgkY29sb3JbNF0gLyAyNTUsIDMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkb3V0ID0gJGNvbG9yOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBudW1iZXIgd2l0aCB1bml0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR1bml0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB1bml0KCYkdW5pdCkKICAgIHsKICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaCgnKFswLTldKihcLik/WzAtOV0rKShbJWEtekEtWl0rKT8nLCAkbSwgZmFsc2UpKSB7CiAgICAgICAgICAgIGlmIChzdHJsZW4oJHRoaXMtPmJ1ZmZlcikgPT09ICR0aGlzLT5jb3VudCB8fCAhIGN0eXBlX2RpZ2l0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CgogICAgICAgICAgICAgICAgJHVuaXQgPSBuZXcgTm9kZVxOdW1iZXIoJG1bMV0sIGVtcHR5KCRtWzNdKSA/ICcnIDogJG1bM10pOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBzdHJpbmcKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3RyaW5nKCYkb3V0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignIicsIGZhbHNlKSkgewogICAgICAgICAgICAkZGVsaW0gPSAnIic7CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5tYXRjaENoYXIoIiciLCBmYWxzZSkpIHsKICAgICAgICAgICAgJGRlbGltID0gIiciOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRjb250ZW50ID0gW107CiAgICAgICAgJG9sZFdoaXRlID0gJHRoaXMtPmVhdFdoaXRlRGVmYXVsdDsKICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gZmFsc2U7CiAgICAgICAgJGhhc0ludGVycG9sYXRpb24gPSBmYWxzZTsKCiAgICAgICAgd2hpbGUgKCR0aGlzLT5tYXRjaFN0cmluZygkbSwgJGRlbGltKSkgewogICAgICAgICAgICBpZiAoJG1bMV0gIT09ICcnKSB7CiAgICAgICAgICAgICAgICAkY29udGVudFtdID0gJG1bMV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbVsyXSA9PT0gJyN7JykgewogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50IC09IHN0cmxlbigkbVsyXSk7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pbnRlcnBvbGF0aW9uKCRpbnRlciwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICRpbnRlcjsKICAgICAgICAgICAgICAgICAgICAkaGFzSW50ZXJwb2xhdGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCArPSBzdHJsZW4oJG1bMl0pOwogICAgICAgICAgICAgICAgICAgICRjb250ZW50W10gPSAnI3snOyAvLyBpZ25vcmUgaXQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRtWzJdID09PSAnXFwnKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignIicsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50W10gPSAkbVsyXSAuICciJzsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkdGhpcy0+bWF0Y2hDaGFyKCInIiwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICRtWzJdIC4gIiciOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT5saXRlcmFsKCJcXCIsIDEsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50W10gPSAkbVsyXSAuICJcXCI7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPmxpdGVyYWwoIlxyXG4iLCAyLCBmYWxzZSkgfHwKICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigiXHIiLCBmYWxzZSkgfHwKICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigiXG4iLCBmYWxzZSkgfHwKICAgICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcigiXGYiLCBmYWxzZSkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgYSBjb250aW51YXRpb24gZXNjYXBpbmcsIHRvIGJlIGlnbm9yZWQKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICRtWzJdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50IC09IHN0cmxlbigkZGVsaW0pOwogICAgICAgICAgICAgICAgYnJlYWs7IC8vIGRlbGltCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSAkb2xkV2hpdGU7CgogICAgICAgIGlmICgkdGhpcy0+bGl0ZXJhbCgkZGVsaW0sIHN0cmxlbigkZGVsaW0pKSkgewogICAgICAgICAgICBpZiAoJGhhc0ludGVycG9sYXRpb24pIHsKICAgICAgICAgICAgICAgICRkZWxpbSA9ICciJzsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkY29udGVudCBhcyAmJHN0cmluZykgewogICAgICAgICAgICAgICAgICAgIGlmICgkc3RyaW5nID09PSAiXFxcXCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmluZyA9ICJcXCI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzdHJpbmcgPT09ICJcXCciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgPSAiJyI7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzdHJpbmcgPT09ICdcXCInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdHJpbmcgPSAnIic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkb3V0ID0gW1R5cGU6OlRfU1RSSU5HLCAkZGVsaW0sICRjb250ZW50XTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBrZXl3b3JkIG9yIGludGVycG9sYXRpb24KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAkb3V0CiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkcmVzdHJpY3RlZAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWl4ZWRLZXl3b3JkKCYkb3V0LCAkcmVzdHJpY3RlZCA9IGZhbHNlKQogICAgewogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICAkb2xkV2hpdGUgPSAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0OwogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSBmYWxzZTsKCiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICBpZiAoJHJlc3RyaWN0ZWQgPyAkdGhpcy0+cmVzdHJpY3RlZEtleXdvcmQoJGtleSkgOiAkdGhpcy0+a2V5d29yZCgka2V5KSkgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAka2V5OwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+aW50ZXJwb2xhdGlvbigkaW50ZXIpKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRpbnRlcjsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSAkb2xkV2hpdGU7CgogICAgICAgIGlmICghICRwYXJ0cykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCkgewogICAgICAgICAgICAkdGhpcy0+d2hpdGVzcGFjZSgpOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRwYXJ0czsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhbiB1bmJvdW5kZWQgc3RyaW5nIHN0b3BwZWQgYnkgJGVuZAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGVuZAogICAgICogQHBhcmFtIGFycmF5ICAkb3V0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRuZXN0aW5nT3BlbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gb3BlblN0cmluZygkZW5kLCAmJG91dCwgJG5lc3RpbmdPcGVuID0gbnVsbCkKICAgIHsKICAgICAgICAkb2xkV2hpdGUgPSAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0OwogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSBmYWxzZTsKCiAgICAgICAgJHBhdHQgPSAnKC4qPykoW1wnIl18I1x7fCcgLiAkdGhpcy0+cHJlZ1F1b3RlKCRlbmQpIC4gJ3wnIC4gc3RhdGljOjokY29tbWVudFBhdHRlcm4gLiAnKSc7CgogICAgICAgICRuZXN0aW5nTGV2ZWwgPSAwOwoKICAgICAgICAkY29udGVudCA9IFtdOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPm1hdGNoKCRwYXR0LCAkbSwgZmFsc2UpKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkbVsxXSkgJiYgJG1bMV0gIT09ICcnKSB7CiAgICAgICAgICAgICAgICAkY29udGVudFtdID0gJG1bMV07CgogICAgICAgICAgICAgICAgaWYgKCRuZXN0aW5nT3BlbikgewogICAgICAgICAgICAgICAgICAgICRuZXN0aW5nTGV2ZWwgKz0gc3Vic3RyX2NvdW50KCRtWzFdLCAkbmVzdGluZ09wZW4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkdG9rID0gJG1bMl07CgogICAgICAgICAgICAkdGhpcy0+Y291bnQtPSBzdHJsZW4oJHRvayk7CgogICAgICAgICAgICBpZiAoJHRvayA9PT0gJGVuZCAmJiAhICRuZXN0aW5nTGV2ZWwtLSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgoJHRvayA9PT0gIiciIHx8ICR0b2sgPT09ICciJykgJiYgJHRoaXMtPnN0cmluZygkc3RyKSkgewogICAgICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICRzdHI7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0b2sgPT09ICcjeycgJiYgJHRoaXMtPmludGVycG9sYXRpb24oJGludGVyKSkgewogICAgICAgICAgICAgICAgJGNvbnRlbnRbXSA9ICRpbnRlcjsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29udGVudFtdID0gJHRvazsKICAgICAgICAgICAgJHRoaXMtPmNvdW50Kz0gc3RybGVuKCR0b2spOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9ICRvbGRXaGl0ZTsKCiAgICAgICAgaWYgKCEgJGNvbnRlbnQpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gdHJpbSB0aGUgZW5kCiAgICAgICAgaWYgKGlzX3N0cmluZyhlbmQoJGNvbnRlbnQpKSkgewogICAgICAgICAgICAkY29udGVudFtjb3VudCgkY29udGVudCkgLSAxXSA9IHJ0cmltKGVuZCgkY29udGVudCkpOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9IFtUeXBlOjpUX1NUUklORywgJycsICRjb250ZW50XTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZXIgaW50ZXJwb2xhdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICRvdXQKICAgICAqIEBwYXJhbSBib29sZWFuICRsb29rV2hpdGUgc2F2ZSBpbmZvcm1hdGlvbiBhYm91dCB3aGl0ZXNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGludGVycG9sYXRpb24oJiRvdXQsICRsb29rV2hpdGUgPSB0cnVlKQogICAgewogICAgICAgICRvbGRXaGl0ZSA9ICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQ7CiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9IHRydWU7CgogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoJHRoaXMtPmxpdGVyYWwoJyN7JywgMikgJiYgJHRoaXMtPnZhbHVlTGlzdCgkdmFsdWUpICYmICR0aGlzLT5tYXRjaENoYXIoJ30nLCBmYWxzZSkpIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PT0gW1R5cGU6OlRfU0VMRl0pIHsKICAgICAgICAgICAgICAgICRvdXQgPSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoJGxvb2tXaGl0ZSkgewogICAgICAgICAgICAgICAgICAgICRsZWZ0ID0gKCRzID4gMCAmJiBwcmVnX21hdGNoKCcvXHMvJywgJHRoaXMtPmJ1ZmZlclskcyAtIDFdKSkgPyAnICcgOiAnJzsKICAgICAgICAgICAgICAgICAgICAkcmlnaHQgPSBwcmVnX21hdGNoKCcvXHMvJywgJHRoaXMtPmJ1ZmZlclskdGhpcy0+Y291bnRdKSA/ICcgJzogJyc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRsZWZ0ID0gJHJpZ2h0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX0lOVEVSUE9MQVRFLCAkdmFsdWUsICRsZWZ0LCAkcmlnaHRdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gJG9sZFdoaXRlOwoKICAgICAgICAgICAgaWYgKCR0aGlzLT5lYXRXaGl0ZURlZmF1bHQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT53aGl0ZXNwYWNlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gJG9sZFdoaXRlOwoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBwcm9wZXJ0eSBuYW1lIChhcyBhbiBhcnJheSBvZiBwYXJ0cyBvciBhIHN0cmluZykKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcHJvcGVydHlOYW1lKCYkb3V0KQogICAgewogICAgICAgICRwYXJ0cyA9IFtdOwoKICAgICAgICAkb2xkV2hpdGUgPSAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0OwogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSBmYWxzZTsKCiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICBpZiAoJHRoaXMtPmludGVycG9sYXRpb24oJGludGVyKSkgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkaW50ZXI7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5rZXl3b3JkKCR0ZXh0KSkgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkdGV4dDsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoISAkcGFydHMgJiYgJHRoaXMtPm1hdGNoKCdbOi4jXScsICRtLCBmYWxzZSkpIHsKICAgICAgICAgICAgICAgIC8vIGNzcyBoYWNrcwogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkbVswXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQgPSAkb2xkV2hpdGU7CgogICAgICAgIGlmICghICRwYXJ0cykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBtYXRjaCBjb21tZW50IGhhY2sKICAgICAgICBpZiAocHJlZ19tYXRjaCgKICAgICAgICAgICAgc3RhdGljOjokd2hpdGVQYXR0ZXJuLAogICAgICAgICAgICAkdGhpcy0+YnVmZmVyLAogICAgICAgICAgICAkbSwKICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgJHRoaXMtPmNvdW50CiAgICAgICAgKSkgewogICAgICAgICAgICBpZiAoISBlbXB0eSgkbVswXSkpIHsKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJG1bMF07CiAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQgKz0gc3RybGVuKCRtWzBdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndoaXRlc3BhY2UoKTsgLy8gZ2V0IGFueSBleHRyYSB3aGl0ZXNwYWNlCgogICAgICAgICRvdXQgPSBbVHlwZTo6VF9TVFJJTkcsICcnLCAkcGFydHNdOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGNvbW1hIHNlcGFyYXRlZCBzZWxlY3RvciBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNlbGVjdG9ycygmJG91dCwgJHN1YlNlbGVjdG9yID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHMgPSAkdGhpcy0+Y291bnQ7CiAgICAgICAgJHNlbGVjdG9ycyA9IFtdOwoKICAgICAgICB3aGlsZSAoJHRoaXMtPnNlbGVjdG9yKCRzZWwsICRzdWJTZWxlY3RvcikpIHsKICAgICAgICAgICAgJHNlbGVjdG9yc1tdID0gJHNlbDsKCiAgICAgICAgICAgIGlmICghICR0aGlzLT5tYXRjaENoYXIoJywnLCB0cnVlKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHdoaWxlICgkdGhpcy0+bWF0Y2hDaGFyKCcsJywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgIDsgLy8gaWdub3JlIGV4dHJhCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghICRzZWxlY3RvcnMpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHMpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRzZWxlY3RvcnM7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2Ugd2hpdGVzcGFjZSBzZXBhcmF0ZWQgc2VsZWN0b3IgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZWxlY3RvcigmJG91dCwgJHN1YlNlbGVjdG9yID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHNlbGVjdG9yID0gW107CgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5tYXRjaCgnWz4rfl0rJywgJG0sIHRydWUpKSB7CiAgICAgICAgICAgICAgICAkc2VsZWN0b3JbXSA9IFskbVswXV07CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5zZWxlY3RvclNpbmdsZSgkcGFydCwgJHN1YlNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgJHNlbGVjdG9yW10gPSAkcGFydDsKICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaCgnXHMrJywgJG0pOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2goJ1wvW15cL10rXC8nLCAkbSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICRzZWxlY3RvcltdID0gWyRtWzBdXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmICghICRzZWxlY3RvcikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkb3V0ID0gJHNlbGVjdG9yOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIHRoZSBwYXJ0cyB0aGF0IG1ha2UgdXAgYSBzZWxlY3RvcgogICAgICoKICAgICAqIHtAaW50ZXJuYWwKICAgICAqICAgICBkaXZbeWVzPW5vXSNzb21ldGhpbmcuaGVsbG8ud29ybGQ6bnRoLWNoaWxkKC0ybisxKSVwbGFjZWhvbGRlcgogICAgICogfX0KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG91dAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2VsZWN0b3JTaW5nbGUoJiRvdXQsICRzdWJTZWxlY3RvciA9IGZhbHNlKQogICAgewogICAgICAgICRvbGRXaGl0ZSA9ICR0aGlzLT5lYXRXaGl0ZURlZmF1bHQ7CiAgICAgICAgJHRoaXMtPmVhdFdoaXRlRGVmYXVsdCA9IGZhbHNlOwoKICAgICAgICAkcGFydHMgPSBbXTsKCiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaENoYXIoJyonLCBmYWxzZSkpIHsKICAgICAgICAgICAgJHBhcnRzW10gPSAnKic7CiAgICAgICAgfQoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgIGlmICghIGlzc2V0KCR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcyA9ICR0aGlzLT5jb3VudDsKICAgICAgICAgICAgJGNoYXIgPSAkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudF07CgogICAgICAgICAgICAvLyBzZWUgaWYgd2UgY2FuIHN0b3AgZWFybHkKICAgICAgICAgICAgaWYgKCRjaGFyID09PSAneycgfHwgJGNoYXIgPT09ICcsJyB8fCAkY2hhciA9PT0gJzsnIHx8ICRjaGFyID09PSAnfScgfHwgJGNoYXIgPT09ICdAJykgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHBhcnNpbmcgYSBzdWIgc2VsZWN0b3IgaW4gKCkgc3RvcCB3aXRoIHRoZSBjbG9zaW5nICkKICAgICAgICAgICAgaWYgKCRzdWJTZWxlY3RvciAmJiAkY2hhciA9PT0gJyknKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9zZWxmCiAgICAgICAgICAgIHN3aXRjaCAoJGNoYXIpIHsKICAgICAgICAgICAgICAgIGNhc2UgJyYnOgogICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gQ29tcGlsZXI6OiRzZWxmU2VsZWN0b3I7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKCiAgICAgICAgICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICcuJzsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3wnOgogICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJ3wnOwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCsrOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJ1xcJyAmJiAkdGhpcy0+bWF0Y2goJ1xcXFxcUycsICRtKSkgewogICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkbVswXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNoYXIgPT09ICclJykgewogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50Kys7CgogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5wbGFjZWhvbGRlcigkcGxhY2Vob2xkZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAnJSc7CiAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkcGxhY2Vob2xkZXI7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkY2hhciA9PT0gJyMnKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmludGVycG9sYXRpb24oJGludGVyKSkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJGludGVyOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJyMnOwogICAgICAgICAgICAgICAgJHRoaXMtPmNvdW50Kys7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYSBwc2V1ZG8gc2VsZWN0b3IKICAgICAgICAgICAgaWYgKCRjaGFyID09PSAnOicpIHsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+YnVmZmVyWyR0aGlzLT5jb3VudCArIDFdID09PSAnOicpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y291bnQgKz0gMjsKICAgICAgICAgICAgICAgICAgICAkcGFydCA9ICc6Oic7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb3VudCsrOwogICAgICAgICAgICAgICAgICAgICRwYXJ0ID0gJzonOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bWl4ZWRLZXl3b3JkKCRuYW1lUGFydHMsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkcGFydDsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJG5hbWVQYXJ0cyBhcyAkc3ViKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHN1YjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRzcyA9ICR0aGlzLT5jb3VudDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lUGFydHMgPT09IFsnbm90J10gfHwgJG5hbWVQYXJ0cyA9PT0gWydpcyddIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lUGFydHMgPT09IFsnaGFzJ10gfHwgJG5hbWVQYXJ0cyA9PT0gWyd3aGVyZSddCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+bWF0Y2hDaGFyKCcoJykgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAoJHRoaXMtPnNlbGVjdG9ycygkc3VicywgdHJ1ZSkgfHwgdHJ1ZSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCcpJykKICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICcoJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHN1YiA9IGFycmF5X3NoaWZ0KCRzdWJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcHMgPSBhcnJheV9zaGlmdCgkc3ViKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkcHMgYXMgJiRwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICRwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCgkc3ViKSAmJiByZXNldCgkc3ViKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAnICc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50KCRzdWJzKSAmJiByZXNldCgkc3VicykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAnLCAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICcpJzsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignKCcpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCR0aGlzLT5vcGVuU3RyaW5nKCcpJywgJHN0ciwgJygnKSB8fCB0cnVlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5tYXRjaENoYXIoJyknKQogICAgICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJygnOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGVtcHR5KCRzdHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBhcnRzW10gPSAkc3RyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJyknOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoJHNzKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgICAgIC8vIGF0dHJpYnV0ZSBzZWxlY3RvcgogICAgICAgICAgICBpZiAoJGNoYXIgPT09ICdbJyAmJgogICAgICAgICAgICAgICAgJHRoaXMtPm1hdGNoQ2hhcignWycpICYmCiAgICAgICAgICAgICAgICAoJHRoaXMtPm9wZW5TdHJpbmcoJ10nLCAkc3RyLCAnWycpIHx8IHRydWUpICYmCiAgICAgICAgICAgICAgICAkdGhpcy0+bWF0Y2hDaGFyKCddJykKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICdbJzsKCiAgICAgICAgICAgICAgICBpZiAoISBlbXB0eSgkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHN0cjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkcGFydHNbXSA9ICddJzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgICAgICAvLyBmb3Iga2V5ZnJhbWVzCiAgICAgICAgICAgIGlmICgkdGhpcy0+dW5pdCgkdW5pdCkpIHsKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJHVuaXQ7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCR0aGlzLT5yZXN0cmljdGVkS2V5d29yZCgkbmFtZSkpIHsKICAgICAgICAgICAgICAgICRwYXJ0c1tdID0gJG5hbWU7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZWF0V2hpdGVEZWZhdWx0ID0gJG9sZFdoaXRlOwoKICAgICAgICBpZiAoISAkcGFydHMpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG91dCA9ICRwYXJ0czsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhIHZhcmlhYmxlCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHZhcmlhYmxlKCYkb3V0KQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignJCcsIGZhbHNlKSAmJiAkdGhpcy0+a2V5d29yZCgkbmFtZSkpIHsKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1ZBUklBQkxFLCAkbmFtZV07CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zZWVrKCRzKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2UgYSBrZXl3b3JkCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgJHdvcmQKICAgICAqIEBwYXJhbSBib29sZWFuICRlYXRXaGl0ZXNwYWNlCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBrZXl3b3JkKCYkd29yZCwgJGVhdFdoaXRlc3BhY2UgPSBudWxsKQogICAgewogICAgICAgIGlmICgkdGhpcy0+bWF0Y2goCiAgICAgICAgICAgICR0aGlzLT51dGY4CiAgICAgICAgICAgICAgICA/ICcoKFtccExcd1x4ezAwQTB9LVx4ezEwRkZGRn1fXC1cKiEiXCddfFtcXFxcXS4pKFtccExcd1x4ezAwQTB9LVx4ezEwRkZGRn1cLV8iXCddfFtcXFxcXS4pKiknCiAgICAgICAgICAgICAgICA6ICcoKFtcd19cLVwqISJcJ118W1xcXFxdLikoW1x3XC1fIlwnXXxbXFxcXF0uKSopJywKICAgICAgICAgICAgJG0sCiAgICAgICAgICAgICRlYXRXaGl0ZXNwYWNlCiAgICAgICAgKSkgewogICAgICAgICAgICAkd29yZCA9ICRtWzFdOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhIGtleXdvcmQgdGhhdCBzaG91bGQgbm90IHN0YXJ0IHdpdGggYSBudW1iZXIKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAkd29yZAogICAgICogQHBhcmFtIGJvb2xlYW4gJGVhdFdoaXRlc3BhY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2xlYW4KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlc3RyaWN0ZWRLZXl3b3JkKCYkd29yZCwgJGVhdFdoaXRlc3BhY2UgPSBudWxsKQogICAgewogICAgICAgICRzID0gJHRoaXMtPmNvdW50OwoKICAgICAgICBpZiAoJHRoaXMtPmtleXdvcmQoJHdvcmQsICRlYXRXaGl0ZXNwYWNlKSAmJiAob3JkKCR3b3JkWzBdKSA+IDU3IHx8IG9yZCgkd29yZFswXSkgPCA0OCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2Vlaygkcyk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGEgcGxhY2Vob2xkZXIKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwbGFjZWhvbGRlcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gcGxhY2Vob2xkZXIoJiRwbGFjZWhvbGRlcikKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoKAogICAgICAgICAgICAkdGhpcy0+dXRmOAogICAgICAgICAgICAgICAgPyAnKFtccExcd1wtX10rKScKICAgICAgICAgICAgICAgIDogJyhbXHdcLV9dKyknLAogICAgICAgICAgICAkbQogICAgICAgICkpIHsKICAgICAgICAgICAgJHBsYWNlaG9sZGVyID0gJG1bMV07CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5pbnRlcnBvbGF0aW9uKCRwbGFjZWhvbGRlcikpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBQYXJzZSBhIHVybAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3V0CiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB1cmwoJiRvdXQpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5tYXRjaCgnKHVybFwoXHMqKFsiXCddPykoW14pXSspXDJccypcKSknLCAkbSkpIHsKICAgICAgICAgICAgJG91dCA9IFtUeXBlOjpUX1NUUklORywgJycsIFsndXJsKCcgLiAkbVsyXSAuICRtWzNdIC4gJG1bMl0gLiAnKSddXTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQ29uc3VtZSBhbiBlbmQgb2Ygc3RhdGVtZW50IGRlbGltaXRlcgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZW5kKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPm1hdGNoQ2hhcignOycpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5jb3VudCA9PT0gc3RybGVuKCR0aGlzLT5idWZmZXIpIHx8ICR0aGlzLT5idWZmZXJbJHRoaXMtPmNvdW50XSA9PT0gJ30nKSB7CiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGVuZCBvZiBmaWxlIG9yIGEgY2xvc2luZyBibG9jayBuZXh0IHRoZW4gd2UgZG9uJ3QgbmVlZCBhIDsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdHJpcCBhc3NpZ25tZW50IGZsYWcgZnJvbSB0aGUgbGlzdAogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzdHJpcEFzc2lnbm1lbnRGbGFncygmJHZhbHVlKQogICAgewogICAgICAgICRmbGFncyA9IFtdOwoKICAgICAgICBmb3IgKCR0b2tlbiA9ICYkdmFsdWU7ICR0b2tlblswXSA9PT0gVHlwZTo6VF9MSVNUICYmICgkcyA9IGNvdW50KCR0b2tlblsyXSkpOyAkdG9rZW4gPSAmJGxhc3ROb2RlKSB7CiAgICAgICAgICAgICRsYXN0Tm9kZSA9ICYkdG9rZW5bMl1bJHMgLSAxXTsKCiAgICAgICAgICAgIHdoaWxlICgkbGFzdE5vZGVbMF0gPT09IFR5cGU6OlRfS0VZV09SRCAmJiBpbl9hcnJheSgkbGFzdE5vZGVbMV0sIFsnIWRlZmF1bHQnLCAnIWdsb2JhbCddKSkgewogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCR0b2tlblsyXSk7CgogICAgICAgICAgICAgICAgJG5vZGUgPSBlbmQoJHRva2VuWzJdKTsKCiAgICAgICAgICAgICAgICAkdG9rZW4gPSAkdGhpcy0+ZmxhdHRlbkxpc3QoJHRva2VuKTsKCiAgICAgICAgICAgICAgICAkZmxhZ3NbXSA9ICRsYXN0Tm9kZVsxXTsKCiAgICAgICAgICAgICAgICAkbGFzdE5vZGUgPSAkbm9kZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmbGFnczsKICAgIH0KCiAgICAvKioKICAgICAqIFN0cmlwIG9wdGlvbmFsIGZsYWcgZnJvbSBzZWxlY3RvciBsaXN0CiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRzZWxlY3RvcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc3RyaXBPcHRpb25hbEZsYWcoJiRzZWxlY3RvcnMpCiAgICB7CiAgICAgICAgJG9wdGlvbmFsID0gZmFsc2U7CgogICAgICAgICRzZWxlY3RvciA9IGVuZCgkc2VsZWN0b3JzKTsKICAgICAgICAkcGFydCA9IGVuZCgkc2VsZWN0b3IpOwoKICAgICAgICBpZiAoJHBhcnQgPT09IFsnIW9wdGlvbmFsJ10pIHsKICAgICAgICAgICAgYXJyYXlfcG9wKCRzZWxlY3RvcnNbY291bnQoJHNlbGVjdG9ycykgLSAxXSk7CgogICAgICAgICAgICAkb3B0aW9uYWwgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvcHRpb25hbDsKICAgIH0KCiAgICAvKioKICAgICAqIFR1cm4gbGlzdCBvZiBsZW5ndGggMSBpbnRvIHZhbHVlIHR5cGUKICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmxhdHRlbkxpc3QoJHZhbHVlKQogICAgewogICAgICAgIGlmICgkdmFsdWVbMF0gPT09IFR5cGU6OlRfTElTVCAmJiBjb3VudCgkdmFsdWVbMl0pID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZmxhdHRlbkxpc3QoJHZhbHVlWzJdWzBdKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICoKICAgICAqIHtAaW50ZXJuYWwKICAgICAqICAgICBhZHZhbmNlIGNvdW50ZXIgdG8gbmV4dCBvY2N1cnJlbmNlIG9mICR3aGF0CiAgICAgKiAgICAgJHVudGlsIC0gZG9uJ3QgaW5jbHVkZSAkd2hhdCBpbiBhZHZhbmNlCiAgICAgKiAgICAgJGFsbG93TmV3bGluZSwgaWYgc3RyaW5nLCB3aWxsIGJlIHVzZWQgYXMgdmFsaWQgY2hhciBzZXQKICAgICAqIH19CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiB0bygkd2hhdCwgJiRvdXQsICR1bnRpbCA9IGZhbHNlLCAkYWxsb3dOZXdsaW5lID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKGlzX3N0cmluZygkYWxsb3dOZXdsaW5lKSkgewogICAgICAgICAgICAkdmFsaWRDaGFycyA9ICRhbGxvd05ld2xpbmU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHZhbGlkQ2hhcnMgPSAkYWxsb3dOZXdsaW5lID8gJy4nIDogIlteXG5dIjsKICAgICAgICB9CgogICAgICAgIGlmICghICR0aGlzLT5tYXRjaCgnKCcgLiAkdmFsaWRDaGFycyAuICcqPyknIC4gJHRoaXMtPnByZWdRdW90ZSgkd2hhdCksICRtLCAhICR1bnRpbCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR1bnRpbCkgewogICAgICAgICAgICAkdGhpcy0+Y291bnQgLT0gc3RybGVuKCR3aGF0KTsgLy8gZ2l2ZSBiYWNrICR3aGF0CiAgICAgICAgfQoKICAgICAgICAkb3V0ID0gJG1bMV07CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNob3coKQogICAgewogICAgICAgIGlmICgkdGhpcy0+cGVlaygiKC4qPykoXG58JCkiLCAkbSwgJHRoaXMtPmNvdW50KSkgewogICAgICAgICAgICByZXR1cm4gJG1bMV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBRdW90ZSByZWd1bGFyIGV4cHJlc3Npb24KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR3aGF0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcmVnUXVvdGUoJHdoYXQpCiAgICB7CiAgICAgICAgcmV0dXJuIHByZWdfcXVvdGUoJHdoYXQsICcvJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHRyYWN0IGxpbmUgbnVtYmVycyBmcm9tIGJ1ZmZlcgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJ1ZmZlcgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4dHJhY3RMaW5lTnVtYmVycygkYnVmZmVyKQogICAgewogICAgICAgICR0aGlzLT5zb3VyY2VQb3NpdGlvbnMgPSBbMCA9PiAwXTsKICAgICAgICAkcHJldiA9IDA7CgogICAgICAgIHdoaWxlICgoJHBvcyA9IHN0cnBvcygkYnVmZmVyLCAiXG4iLCAkcHJldikpICE9PSBmYWxzZSkgewogICAgICAgICAgICAkdGhpcy0+c291cmNlUG9zaXRpb25zW10gPSAkcG9zOwogICAgICAgICAgICAkcHJldiA9ICRwb3MgKyAxOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNvdXJjZVBvc2l0aW9uc1tdID0gc3RybGVuKCRidWZmZXIpOwoKICAgICAgICBpZiAoc3Vic3RyKCRidWZmZXIsIC0xKSAhPT0gIlxuIikgewogICAgICAgICAgICAkdGhpcy0+c291cmNlUG9zaXRpb25zW10gPSBzdHJsZW4oJGJ1ZmZlcikgKyAxOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCBzb3VyY2UgbGluZSBudW1iZXIgYW5kIGNvbHVtbiAoZ2l2ZW4gY2hhcmFjdGVyIHBvc2l0aW9uIGluIHRoZSBidWZmZXIpCiAgICAgKgogICAgICogQHBhcmFtIGludGVnZXIgJHBvcwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRTb3VyY2VQb3NpdGlvbigkcG9zKQogICAgewogICAgICAgICRsb3cgPSAwOwogICAgICAgICRoaWdoID0gY291bnQoJHRoaXMtPnNvdXJjZVBvc2l0aW9ucyk7CgogICAgICAgIHdoaWxlICgkbG93IDwgJGhpZ2gpIHsKICAgICAgICAgICAgJG1pZCA9IChpbnQpICgoJGhpZ2ggKyAkbG93KSAvIDIpOwoKICAgICAgICAgICAgaWYgKCRwb3MgPCAkdGhpcy0+c291cmNlUG9zaXRpb25zWyRtaWRdKSB7CiAgICAgICAgICAgICAgICAkaGlnaCA9ICRtaWQgLSAxOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkcG9zID49ICR0aGlzLT5zb3VyY2VQb3NpdGlvbnNbJG1pZCArIDFdKSB7CiAgICAgICAgICAgICAgICAkbG93ID0gJG1pZCArIDE7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFskbWlkICsgMSwgJHBvcyAtICR0aGlzLT5zb3VyY2VQb3NpdGlvbnNbJG1pZF1dOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskbG93ICsgMSwgJHBvcyAtICR0aGlzLT5zb3VyY2VQb3NpdGlvbnNbJGxvd11dOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZSBpbnRlcm5hbCBlbmNvZGluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNhdmVFbmNvZGluZygpCiAgICB7CiAgICAgICAgaWYgKHZlcnNpb25fY29tcGFyZShQSFBfVkVSU0lPTiwgJzcuMi4wJykgPj0gMCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkaW5pRGlyZWN0aXZlID0gJ21ic3RyaW5nJyAuICcuZnVuY19vdmVybG9hZCc7IC8vIGRlcHJlY2F0ZWQgaW4gUEhQIDcuMgoKICAgICAgICBpZiAoaW5pX2dldCgkaW5pRGlyZWN0aXZlKSAmIDIpIHsKICAgICAgICAgICAgJHRoaXMtPmVuY29kaW5nID0gbWJfaW50ZXJuYWxfZW5jb2RpbmcoKTsKCiAgICAgICAgICAgIG1iX2ludGVybmFsX2VuY29kaW5nKCdpc28tODg1OS0xJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVzdG9yZSBpbnRlcm5hbCBlbmNvZGluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlc3RvcmVFbmNvZGluZygpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5lbmNvZGluZykgewogICAgICAgICAgICBtYl9pbnRlcm5hbF9lbmNvZGluZygkdGhpcy0+ZW5jb2RpbmcpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Server.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTUgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vbGVhZm8uZ2l0aHViLmlvL3Njc3NwaHAKICovCgpuYW1lc3BhY2UgTGVhZm9cU2Nzc1BocDsKCnVzZSBMZWFmb1xTY3NzUGhwXENvbXBpbGVyOwp1c2UgTGVhZm9cU2Nzc1BocFxFeGNlcHRpb25cU2VydmVyRXhjZXB0aW9uOwp1c2UgTGVhZm9cU2Nzc1BocFxWZXJzaW9uOwoKLyoqCiAqIFNlcnZlcgogKgogKiBAYXV0aG9yIExlYWYgQ29yY29yYW4gPGxlYWZvdEBnbWFpbC5jb20+CiAqLwpjbGFzcyBTZXJ2ZXIKewogICAgLyoqCiAgICAgKiBAdmFyIGJvb2xlYW4KICAgICAqLwogICAgcHJpdmF0ZSAkc2hvd0Vycm9yc0FzQ1NTOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkZGlyOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkY2FjaGVEaXI7CgogICAgLyoqCiAgICAgKiBAdmFyIFxMZWFmb1xTY3NzUGhwXENvbXBpbGVyCiAgICAgKi8KICAgIHByaXZhdGUgJHNjc3M7CgogICAgLyoqCiAgICAgKiBKb2luIHBhdGggY29tcG9uZW50cwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxlZnQgIFBhdGggY29tcG9uZW50LCBsZWZ0IG9mIHRoZSBkaXJlY3Rvcnkgc2VwYXJhdG9yCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyaWdodCBQYXRoIGNvbXBvbmVudCwgcmlnaHQgb2YgdGhlIGRpcmVjdG9yeSBzZXBhcmF0b3IKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gam9pbigkbGVmdCwgJHJpZ2h0KQogICAgewogICAgICAgIHJldHVybiBydHJpbSgkbGVmdCwgJy9cXCcpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIGx0cmltKCRyaWdodCwgJy9cXCcpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IG5hbWUgb2YgcmVxdWVzdGVkIC5zY3NzIGZpbGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbnB1dE5hbWUoKQogICAgewogICAgICAgIHN3aXRjaCAodHJ1ZSkgewogICAgICAgICAgICBjYXNlIGlzc2V0KCRfR0VUWydwJ10pOgogICAgICAgICAgICAgICAgcmV0dXJuICRfR0VUWydwJ107CiAgICAgICAgICAgIGNhc2UgaXNzZXQoJF9TRVJWRVJbJ1BBVEhfSU5GTyddKToKICAgICAgICAgICAgICAgIHJldHVybiAkX1NFUlZFUlsnUEFUSF9JTkZPJ107CiAgICAgICAgICAgIGNhc2UgaXNzZXQoJF9TRVJWRVJbJ0RPQ1VNRU5UX1VSSSddKToKICAgICAgICAgICAgICAgIHJldHVybiBzdWJzdHIoJF9TRVJWRVJbJ0RPQ1VNRU5UX1VSSSddLCBzdHJsZW4oJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgcGF0aCB0byByZXF1ZXN0ZWQgLnNjc3MgZmlsZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmaW5kSW5wdXQoKQogICAgewogICAgICAgIGlmICgoJGlucHV0ID0gJHRoaXMtPmlucHV0TmFtZSgpKQogICAgICAgICAgICAmJiBzdHJwb3MoJGlucHV0LCAnLi4nKSA9PT0gZmFsc2UKICAgICAgICAgICAgJiYgc3Vic3RyKCRpbnB1dCwgLTUpID09PSAnLnNjc3MnCiAgICAgICAgKSB7CiAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPmpvaW4oJHRoaXMtPmRpciwgJGlucHV0KTsKCiAgICAgICAgICAgIGlmIChpc19maWxlKCRuYW1lKSAmJiBpc19yZWFkYWJsZSgkbmFtZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHBhdGggdG8gY2FjaGVkIC5jc3MgZmlsZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjYWNoZU5hbWUoJGZuYW1lKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+am9pbigkdGhpcy0+Y2FjaGVEaXIsIG1kNSgkZm5hbWUpIC4gJy5jc3MnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBwYXRoIHRvIG1ldGEgZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBtZXRhZGF0YU5hbWUoJG91dCkKICAgIHsKICAgICAgICByZXR1cm4gJG91dCAuICcubWV0YSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmUgd2hldGhlciAuc2NzcyBmaWxlIG5lZWRzIHRvIGJlIHJlLWNvbXBpbGVkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG91dCAgT3V0cHV0IHBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgJGV0YWcgRVRhZwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbGVhbiBUcnVlIGlmIGNvbXBpbGUgcmVxdWlyZWQuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBuZWVkc0NvbXBpbGUoJG91dCwgJiRldGFnKQogICAgewogICAgICAgIGlmICghIGlzX2ZpbGUoJG91dCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAkbXRpbWUgPSBmaWxlbXRpbWUoJG91dCk7CgogICAgICAgICRtZXRhZGF0YU5hbWUgPSAkdGhpcy0+bWV0YWRhdGFOYW1lKCRvdXQpOwoKICAgICAgICBpZiAoaXNfcmVhZGFibGUoJG1ldGFkYXRhTmFtZSkpIHsKICAgICAgICAgICAgJG1ldGFkYXRhID0gdW5zZXJpYWxpemUoZmlsZV9nZXRfY29udGVudHMoJG1ldGFkYXRhTmFtZSkpOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGFkYXRhWydpbXBvcnRzJ10gYXMgJGltcG9ydCA9PiAkb3JpZ2luYWxNdGltZSkgewogICAgICAgICAgICAgICAgJGN1cnJlbnRNdGltZSA9IGZpbGVtdGltZSgkaW1wb3J0KTsKCiAgICAgICAgICAgICAgICBpZiAoJGN1cnJlbnRNdGltZSAhPT0gJG9yaWdpbmFsTXRpbWUgfHwgJGN1cnJlbnRNdGltZSA+ICRtdGltZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWV0YVZhcnMgPSBjcmMzMihzZXJpYWxpemUoJHRoaXMtPnNjc3MtPmdldFZhcmlhYmxlcygpKSk7CgogICAgICAgICAgICBpZiAoJG1ldGFWYXJzICE9PSAkbWV0YWRhdGFbJ3ZhcnMnXSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRldGFnID0gJG1ldGFkYXRhWydldGFnJ107CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBJZi1Nb2RpZmllZC1TaW5jZSBoZWFkZXIgZnJvbSBjbGllbnQgcmVxdWVzdAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldElmTW9kaWZpZWRTaW5jZUhlYWRlcigpCiAgICB7CiAgICAgICAgJG1vZGlmaWVkU2luY2UgPSBudWxsOwoKICAgICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSUZfTU9ESUZJRURfU0lOQ0UnXSkpIHsKICAgICAgICAgICAgJG1vZGlmaWVkU2luY2UgPSAkX1NFUlZFUlsnSFRUUF9JRl9NT0RJRklFRF9TSU5DRSddOwoKICAgICAgICAgICAgaWYgKGZhbHNlICE9PSAoJHNlbWljb2xvblBvcyA9IHN0cnBvcygkbW9kaWZpZWRTaW5jZSwgJzsnKSkpIHsKICAgICAgICAgICAgICAgICRtb2RpZmllZFNpbmNlID0gc3Vic3RyKCRtb2RpZmllZFNpbmNlLCAwLCAkc2VtaWNvbG9uUG9zKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtb2RpZmllZFNpbmNlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IElmLU5vbmUtTWF0Y2ggaGVhZGVyIGZyb20gY2xpZW50IHJlcXVlc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRJZk5vbmVNYXRjaEhlYWRlcigpCiAgICB7CiAgICAgICAgJG5vbmVNYXRjaCA9IG51bGw7CgogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9JRl9OT05FX01BVENIJ10pKSB7CiAgICAgICAgICAgICRub25lTWF0Y2ggPSAkX1NFUlZFUlsnSFRUUF9JRl9OT05FX01BVENIJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5vbmVNYXRjaDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgLnNjc3MgZmlsZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGluICBJbnB1dCBwYXRoICguc2NzcykKICAgICAqIEBwYXJhbSBzdHJpbmcgJG91dCBPdXRwdXQgcGF0aCAoLmNzcykKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjb21waWxlKCRpbiwgJG91dCkKICAgIHsKICAgICAgICAkc3RhcnQgICA9IG1pY3JvdGltZSh0cnVlKTsKICAgICAgICAkY3NzICAgICA9ICR0aGlzLT5zY3NzLT5jb21waWxlKGZpbGVfZ2V0X2NvbnRlbnRzKCRpbiksICRpbik7CiAgICAgICAgJGVsYXBzZWQgPSByb3VuZCgobWljcm90aW1lKHRydWUpIC0gJHN0YXJ0KSwgNCk7CgogICAgICAgICR2ICAgID0gVmVyc2lvbjo6VkVSU0lPTjsKICAgICAgICAkdCAgICA9IGRhdGUoJ3InKTsKICAgICAgICAkY3NzICA9ICIvKiBjb21waWxlZCBieSBzY3NzcGhwICR2IG9uICR0ICgke2VsYXBzZWR9cykgKi9cblxuIiAuICRjc3M7CiAgICAgICAgJGV0YWcgPSBtZDUoJGNzcyk7CgogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRvdXQsICRjc3MpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKAogICAgICAgICAgICAkdGhpcy0+bWV0YWRhdGFOYW1lKCRvdXQpLAogICAgICAgICAgICBzZXJpYWxpemUoWwogICAgICAgICAgICAgICAgJ2V0YWcnICAgID0+ICRldGFnLAogICAgICAgICAgICAgICAgJ2ltcG9ydHMnID0+ICR0aGlzLT5zY3NzLT5nZXRQYXJzZWRGaWxlcygpLAogICAgICAgICAgICAgICAgJ3ZhcnMnICAgID0+IGNyYzMyKHNlcmlhbGl6ZSgkdGhpcy0+c2Nzcy0+Z2V0VmFyaWFibGVzKCkpKSwKICAgICAgICAgICAgXSkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gWyRjc3MsICRldGFnXTsKICAgIH0KCiAgICAvKioKICAgICAqIEZvcm1hdCBlcnJvciBhcyBhIHBzZXVkby1lbGVtZW50IGluIENTUwogICAgICoKICAgICAqIEBwYXJhbSBcRXhjZXB0aW9uICRlcnJvcgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVFcnJvckNTUyhcRXhjZXB0aW9uICRlcnJvcikKICAgIHsKICAgICAgICAkbWVzc2FnZSA9IHN0cl9yZXBsYWNlKAogICAgICAgICAgICBbIiciLCAiXG4iXSwKICAgICAgICAgICAgWyJcXCciLCAiXFxBIl0sCiAgICAgICAgICAgICRlcnJvci0+Z2V0ZmlsZSgpIC4gIjpcblxuIiAuICRlcnJvci0+Z2V0TWVzc2FnZSgpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICJib2R5IHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CiAgICAgICAgICAgICAgICBodG1sOmFmdGVyIHsKICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7CiAgICAgICAgICAgICAgICAgICAgY29udGVudDogJyRtZXNzYWdlJzsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vOwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFlbTsKICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlOwogICAgICAgICAgICAgICAgfSI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW5kZXIgZXJyb3JzIGFzIGEgcHNldWRvLWVsZW1lbnQgd2l0aGluIHZhbGlkIENTUywgZGlzcGxheWluZyB0aGUgZXJyb3JzIG9uIGFueQogICAgICogcGFnZSB0aGF0IGluY2x1ZGVzIHRoaXMgQ1NTLgogICAgICoKICAgICAqIEBwYXJhbSBib29sZWFuICRzaG93CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzaG93RXJyb3JzQXNDU1MoJHNob3cgPSB0cnVlKQogICAgewogICAgICAgICR0aGlzLT5zaG93RXJyb3JzQXNDU1MgPSAkc2hvdzsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBpbGUgLnNjc3MgZmlsZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGluICBJbnB1dCBmaWxlICguc2NzcykKICAgICAqIEBwYXJhbSBzdHJpbmcgJG91dCBPdXRwdXQgZmlsZSAoLmNzcykgb3B0aW9uYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xib29sCiAgICAgKgogICAgICogQHRocm93cyBcTGVhZm9cU2Nzc1BocFxFeGNlcHRpb25cU2VydmVyRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21waWxlRmlsZSgkaW4sICRvdXQgPSBudWxsKQogICAgewogICAgICAgIGlmICghIGlzX3JlYWRhYmxlKCRpbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNlcnZlckV4Y2VwdGlvbignbG9hZCBlcnJvcjogZmFpbGVkIHRvIGZpbmQgJyAuICRpbik7CiAgICAgICAgfQoKICAgICAgICAkcGkgPSBwYXRoaW5mbygkaW4pOwoKICAgICAgICAkdGhpcy0+c2Nzcy0+YWRkSW1wb3J0UGF0aCgkcGlbJ2Rpcm5hbWUnXSAuICcvJyk7CgogICAgICAgICRjb21waWxlZCA9ICR0aGlzLT5zY3NzLT5jb21waWxlKGZpbGVfZ2V0X2NvbnRlbnRzKCRpbiksICRpbik7CgogICAgICAgIGlmICgkb3V0ICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBmaWxlX3B1dF9jb250ZW50cygkb3V0LCAkY29tcGlsZWQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjb21waWxlZDsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGZpbGUgbmVlZCBjb21waWxpbmcKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbiAgSW5wdXQgZmlsZSAoLnNjc3MpCiAgICAgKiBAcGFyYW0gc3RyaW5nICRvdXQgT3V0cHV0IGZpbGUgKC5jc3MpCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja2VkQ29tcGlsZSgkaW4sICRvdXQpCiAgICB7CiAgICAgICAgaWYgKCEgaXNfZmlsZSgkb3V0KSB8fCBmaWxlbXRpbWUoJGluKSA+IGZpbGVtdGltZSgkb3V0KSkgewogICAgICAgICAgICAkdGhpcy0+Y29tcGlsZUZpbGUoJGluLCAkb3V0KTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcGlsZSByZXF1ZXN0ZWQgc2NzcyBhbmQgc2VydmUgY3NzLiAgT3V0cHV0cyBIVFRQIHJlc3BvbnNlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNhbHQgUHJlZml4IGEgc3RyaW5nIHRvIHRoZSBmaWxlbmFtZSBmb3IgY3JlYXRpbmcgdGhlIGNhY2hlIG5hbWUgaGFzaAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VydmUoJHNhbHQgPSAnJykKICAgIHsKICAgICAgICAkcHJvdG9jb2wgPSBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX1BST1RPQ09MJ10pCiAgICAgICAgICAgID8gJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddCiAgICAgICAgICAgIDogJ0hUVFAvMS4wJzsKCiAgICAgICAgaWYgKCRpbnB1dCA9ICR0aGlzLT5maW5kSW5wdXQoKSkgewogICAgICAgICAgICAkb3V0cHV0ID0gJHRoaXMtPmNhY2hlTmFtZSgkc2FsdCAuICRpbnB1dCk7CiAgICAgICAgICAgICRldGFnID0gJG5vbmVNYXRjaCA9IHRyaW0oJHRoaXMtPmdldElmTm9uZU1hdGNoSGVhZGVyKCksICciJyk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPm5lZWRzQ29tcGlsZSgkb3V0cHV0LCAkZXRhZykpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgbGlzdCgkY3NzLCAkZXRhZykgPSAkdGhpcy0+Y29tcGlsZSgkaW5wdXQsICRvdXRwdXQpOwoKICAgICAgICAgICAgICAgICAgICAkbGFzdE1vZGlmaWVkID0gZ21kYXRlKCdELCBkIE0gWSBIOmk6cycsIGZpbGVtdGltZSgkb3V0cHV0KSkgLiAnIEdNVCc7CgogICAgICAgICAgICAgICAgICAgIGhlYWRlcignTGFzdC1Nb2RpZmllZDogJyAuICRsYXN0TW9kaWZpZWQpOwogICAgICAgICAgICAgICAgICAgIGhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L2NzcycpOwogICAgICAgICAgICAgICAgICAgIGhlYWRlcignRVRhZzogIicgLiAkZXRhZyAuICciJyk7CgogICAgICAgICAgICAgICAgICAgIGVjaG8gJGNzczsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNob3dFcnJvcnNBc0NTUykgewogICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogdGV4dC9jc3MnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJHRoaXMtPmNyZWF0ZUVycm9yQ1NTKCRlKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIoJHByb3RvY29sIC4gJyA1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L3BsYWluJyk7CgogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICdQYXJzZSBlcnJvcjogJyAuICRlLT5nZXRNZXNzYWdlKCkgLiAiXG4iOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGhlYWRlcignWC1TQ1NTLUNhY2hlOiB0cnVlJyk7CiAgICAgICAgICAgIGhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L2NzcycpOwogICAgICAgICAgICBoZWFkZXIoJ0VUYWc6ICInIC4gJGV0YWcgLiAnIicpOwoKICAgICAgICAgICAgaWYgKCRldGFnID09PSAkbm9uZU1hdGNoKSB7CiAgICAgICAgICAgICAgICBoZWFkZXIoJHByb3RvY29sIC4gJyAzMDQgTm90IE1vZGlmaWVkJyk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbW9kaWZpZWRTaW5jZSA9ICR0aGlzLT5nZXRJZk1vZGlmaWVkU2luY2VIZWFkZXIoKTsKICAgICAgICAgICAgJG10aW1lID0gZmlsZW10aW1lKCRvdXRwdXQpOwoKICAgICAgICAgICAgaWYgKHN0cnRvdGltZSgkbW9kaWZpZWRTaW5jZSkgPT09ICRtdGltZSkgewogICAgICAgICAgICAgICAgaGVhZGVyKCRwcm90b2NvbCAuICcgMzA0IE5vdCBNb2RpZmllZCcpOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxhc3RNb2RpZmllZCAgPSBnbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJywgJG10aW1lKSAuICcgR01UJzsKICAgICAgICAgICAgaGVhZGVyKCdMYXN0LU1vZGlmaWVkOiAnIC4gJGxhc3RNb2RpZmllZCk7CgogICAgICAgICAgICBlY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCRvdXRwdXQpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaGVhZGVyKCRwcm90b2NvbCAuICcgNDA0IE5vdCBGb3VuZCcpOwogICAgICAgIGhlYWRlcignQ29udGVudC10eXBlOiB0ZXh0L3BsYWluJyk7CgogICAgICAgICR2ID0gVmVyc2lvbjo6VkVSU0lPTjsKICAgICAgICBlY2hvICIvKiBJTlBVVCBOT1QgRk9VTkQgc2NzcyAkdiAqL1xuIjsKICAgIH0KCiAgICAvKioKICAgICAqIEJhc2VkIG9uIGV4cGxpY2l0IGlucHV0L291dHB1dCBmaWxlcyBkb2VzIGEgZnVsbCBjaGFuZ2UgY2hlY2sgb24gY2FjaGUgYmVmb3JlIGNvbXBpbGluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAkaW4KICAgICAqIEBwYXJhbSBzdHJpbmcgICRvdXQKICAgICAqIEBwYXJhbSBib29sZWFuICRmb3JjZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIENvbXBpbGVkIENTUyByZXN1bHRzCiAgICAgKgogICAgICogQHRocm93cyBcTGVhZm9cU2Nzc1BocFxFeGNlcHRpb25cU2VydmVyRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja2VkQ2FjaGVkQ29tcGlsZSgkaW4sICRvdXQsICRmb3JjZSA9IGZhbHNlKQogICAgewogICAgICAgIGlmICghIGlzX2ZpbGUoJGluKSB8fCAhIGlzX3JlYWRhYmxlKCRpbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFNlcnZlckV4Y2VwdGlvbignSW52YWxpZCBvciB1bnJlYWRhYmxlIGlucHV0IGZpbGUgc3BlY2lmaWVkLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX2Rpcigkb3V0KSB8fCAhIGlzX3dyaXRhYmxlKGZpbGVfZXhpc3RzKCRvdXQpID8gJG91dCA6IGRpcm5hbWUoJG91dCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBTZXJ2ZXJFeGNlcHRpb24oJ0ludmFsaWQgb3IgdW53cml0YWJsZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZvcmNlIHx8ICR0aGlzLT5uZWVkc0NvbXBpbGUoJG91dCwgJGV0YWcpKSB7CiAgICAgICAgICAgIGxpc3QoJGNzcywgJGV0YWcpID0gJHRoaXMtPmNvbXBpbGUoJGluLCAkb3V0KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY3NzID0gZmlsZV9nZXRfY29udGVudHMoJG91dCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNzczsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGRpciAgICAgIFJvb3QgZGlyZWN0b3J5IHRvIC5zY3NzIGZpbGVzCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVEaXIgQ2FjaGUgZGlyZWN0b3J5CiAgICAgKiBAcGFyYW0gXExlYWZvXFNjc3NQaHBcQ29tcGlsZXJ8bnVsbCAkc2NzcyAgICAgU0NTUyBjb21waWxlciBpbnN0YW5jZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRpciwgJGNhY2hlRGlyID0gbnVsbCwgJHNjc3MgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5kaXIgPSAkZGlyOwoKICAgICAgICBpZiAoISBpc3NldCgkY2FjaGVEaXIpKSB7CiAgICAgICAgICAgICRjYWNoZURpciA9ICR0aGlzLT5qb2luKCRkaXIsICdzY3NzX2NhY2hlJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y2FjaGVEaXIgPSAkY2FjaGVEaXI7CgogICAgICAgIGlmICghIGlzX2RpcigkdGhpcy0+Y2FjaGVEaXIpKSB7CiAgICAgICAgICAgIG1rZGlyKCR0aGlzLT5jYWNoZURpciwgMDc1NSwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISBpc3NldCgkc2NzcykpIHsKICAgICAgICAgICAgJHNjc3MgPSBuZXcgQ29tcGlsZXIoKTsKICAgICAgICAgICAgJHNjc3MtPnNldEltcG9ydFBhdGhzKCR0aGlzLT5kaXIpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNjc3MgPSAkc2NzczsKICAgICAgICAkdGhpcy0+c2hvd0Vycm9yc0FzQ1NTID0gZmFsc2U7CgogICAgICAgIGlmICghIGluaV9nZXQoJ2RhdGUudGltZXpvbmUnKSkgewogICAgICAgICAgICBkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0KCdVVEMnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBIZWxwZXIgbWV0aG9kIHRvIHNlcnZlIGNvbXBpbGVkIHNjc3MKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFJvb3QgcGF0aAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNlcnZlRnJvbSgkcGF0aCkKICAgIHsKICAgICAgICAkc2VydmVyID0gbmV3IHNlbGYoJHBhdGgpOwogICAgICAgICRzZXJ2ZXItPnNlcnZlKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/Base64.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcU291cmNlTWFwOwoKLyoqCiAqIEJhc2UgNjQgRW5jb2RlL0RlY29kZQogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqLwpjbGFzcyBCYXNlNjQKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRlbmNvZGluZ01hcCA9IFsKICAgICAgICAwID0+ICdBJywKICAgICAgICAxID0+ICdCJywKICAgICAgICAyID0+ICdDJywKICAgICAgICAzID0+ICdEJywKICAgICAgICA0ID0+ICdFJywKICAgICAgICA1ID0+ICdGJywKICAgICAgICA2ID0+ICdHJywKICAgICAgICA3ID0+ICdIJywKICAgICAgICA4ID0+ICdJJywKICAgICAgICA5ID0+ICdKJywKICAgICAgICAxMCA9PiAnSycsCiAgICAgICAgMTEgPT4gJ0wnLAogICAgICAgIDEyID0+ICdNJywKICAgICAgICAxMyA9PiAnTicsCiAgICAgICAgMTQgPT4gJ08nLAogICAgICAgIDE1ID0+ICdQJywKICAgICAgICAxNiA9PiAnUScsCiAgICAgICAgMTcgPT4gJ1InLAogICAgICAgIDE4ID0+ICdTJywKICAgICAgICAxOSA9PiAnVCcsCiAgICAgICAgMjAgPT4gJ1UnLAogICAgICAgIDIxID0+ICdWJywKICAgICAgICAyMiA9PiAnVycsCiAgICAgICAgMjMgPT4gJ1gnLAogICAgICAgIDI0ID0+ICdZJywKICAgICAgICAyNSA9PiAnWicsCiAgICAgICAgMjYgPT4gJ2EnLAogICAgICAgIDI3ID0+ICdiJywKICAgICAgICAyOCA9PiAnYycsCiAgICAgICAgMjkgPT4gJ2QnLAogICAgICAgIDMwID0+ICdlJywKICAgICAgICAzMSA9PiAnZicsCiAgICAgICAgMzIgPT4gJ2cnLAogICAgICAgIDMzID0+ICdoJywKICAgICAgICAzNCA9PiAnaScsCiAgICAgICAgMzUgPT4gJ2onLAogICAgICAgIDM2ID0+ICdrJywKICAgICAgICAzNyA9PiAnbCcsCiAgICAgICAgMzggPT4gJ20nLAogICAgICAgIDM5ID0+ICduJywKICAgICAgICA0MCA9PiAnbycsCiAgICAgICAgNDEgPT4gJ3AnLAogICAgICAgIDQyID0+ICdxJywKICAgICAgICA0MyA9PiAncicsCiAgICAgICAgNDQgPT4gJ3MnLAogICAgICAgIDQ1ID0+ICd0JywKICAgICAgICA0NiA9PiAndScsCiAgICAgICAgNDcgPT4gJ3YnLAogICAgICAgIDQ4ID0+ICd3JywKICAgICAgICA0OSA9PiAneCcsCiAgICAgICAgNTAgPT4gJ3knLAogICAgICAgIDUxID0+ICd6JywKICAgICAgICA1MiA9PiAnMCcsCiAgICAgICAgNTMgPT4gJzEnLAogICAgICAgIDU0ID0+ICcyJywKICAgICAgICA1NSA9PiAnMycsCiAgICAgICAgNTYgPT4gJzQnLAogICAgICAgIDU3ID0+ICc1JywKICAgICAgICA1OCA9PiAnNicsCiAgICAgICAgNTkgPT4gJzcnLAogICAgICAgIDYwID0+ICc4JywKICAgICAgICA2MSA9PiAnOScsCiAgICAgICAgNjIgPT4gJysnLAogICAgICAgIDYzID0+ICcvJywKICAgIF07CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRkZWNvZGluZ01hcCA9IFsKICAgICAgICAnQScgPT4gMCwKICAgICAgICAnQicgPT4gMSwKICAgICAgICAnQycgPT4gMiwKICAgICAgICAnRCcgPT4gMywKICAgICAgICAnRScgPT4gNCwKICAgICAgICAnRicgPT4gNSwKICAgICAgICAnRycgPT4gNiwKICAgICAgICAnSCcgPT4gNywKICAgICAgICAnSScgPT4gOCwKICAgICAgICAnSicgPT4gOSwKICAgICAgICAnSycgPT4gMTAsCiAgICAgICAgJ0wnID0+IDExLAogICAgICAgICdNJyA9PiAxMiwKICAgICAgICAnTicgPT4gMTMsCiAgICAgICAgJ08nID0+IDE0LAogICAgICAgICdQJyA9PiAxNSwKICAgICAgICAnUScgPT4gMTYsCiAgICAgICAgJ1InID0+IDE3LAogICAgICAgICdTJyA9PiAxOCwKICAgICAgICAnVCcgPT4gMTksCiAgICAgICAgJ1UnID0+IDIwLAogICAgICAgICdWJyA9PiAyMSwKICAgICAgICAnVycgPT4gMjIsCiAgICAgICAgJ1gnID0+IDIzLAogICAgICAgICdZJyA9PiAyNCwKICAgICAgICAnWicgPT4gMjUsCiAgICAgICAgJ2EnID0+IDI2LAogICAgICAgICdiJyA9PiAyNywKICAgICAgICAnYycgPT4gMjgsCiAgICAgICAgJ2QnID0+IDI5LAogICAgICAgICdlJyA9PiAzMCwKICAgICAgICAnZicgPT4gMzEsCiAgICAgICAgJ2cnID0+IDMyLAogICAgICAgICdoJyA9PiAzMywKICAgICAgICAnaScgPT4gMzQsCiAgICAgICAgJ2onID0+IDM1LAogICAgICAgICdrJyA9PiAzNiwKICAgICAgICAnbCcgPT4gMzcsCiAgICAgICAgJ20nID0+IDM4LAogICAgICAgICduJyA9PiAzOSwKICAgICAgICAnbycgPT4gNDAsCiAgICAgICAgJ3AnID0+IDQxLAogICAgICAgICdxJyA9PiA0MiwKICAgICAgICAncicgPT4gNDMsCiAgICAgICAgJ3MnID0+IDQ0LAogICAgICAgICd0JyA9PiA0NSwKICAgICAgICAndScgPT4gNDYsCiAgICAgICAgJ3YnID0+IDQ3LAogICAgICAgICd3JyA9PiA0OCwKICAgICAgICAneCcgPT4gNDksCiAgICAgICAgJ3knID0+IDUwLAogICAgICAgICd6JyA9PiA1MSwKICAgICAgICAwID0+IDUyLAogICAgICAgIDEgPT4gNTMsCiAgICAgICAgMiA9PiA1NCwKICAgICAgICAzID0+IDU1LAogICAgICAgIDQgPT4gNTYsCiAgICAgICAgNSA9PiA1NywKICAgICAgICA2ID0+IDU4LAogICAgICAgIDcgPT4gNTksCiAgICAgICAgOCA9PiA2MCwKICAgICAgICA5ID0+IDYxLAogICAgICAgICcrJyA9PiA2MiwKICAgICAgICAnLycgPT4gNjMsCiAgICBdOwoKICAgIC8qKgogICAgICogQ29udmVydCB0byBiYXNlNjQKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZSgkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OiRlbmNvZGluZ01hcFskdmFsdWVdOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydCBmcm9tIGJhc2U2NAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBpbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6JGRlY29kaW5nTWFwWyR2YWx1ZV07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/Base64VLQ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcU291cmNlTWFwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxTb3VyY2VNYXBcQmFzZTY0OwoKLyoqCiAqIEJhc2UgNjQgVkxRCiAqCiAqIEJhc2VkIG9uIHRoZSBCYXNlIDY0IFZMUSBpbXBsZW1lbnRhdGlvbiBpbiBDbG9zdXJlIENvbXBpbGVyOgogKiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvYmxvYi9tYXN0ZXIvc3JjL2NvbS9nb29nbGUvZGVidWdnaW5nL3NvdXJjZW1hcC9CYXNlNjRWTFEuamF2YQogKgogKiBDb3B5cmlnaHQgMjAxMSBUaGUgQ2xvc3VyZSBDb21waWxlciBBdXRob3JzLgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAYXV0aG9yIEpvaG4gTGVueiA8am9obmxlbnpAZ29vZ2xlLmNvbT4KICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKi8KY2xhc3MgQmFzZTY0VkxRCnsKICAgIC8vIEEgQmFzZTY0IFZMUSBkaWdpdCBjYW4gcmVwcmVzZW50IDUgYml0cywgc28gaXQgaXMgYmFzZS0zMi4KICAgIGNvbnN0IFZMUV9CQVNFX1NISUZUID0gNTsKCiAgICAvLyBBIG1hc2sgb2YgYml0cyBmb3IgYSBWTFEgZGlnaXQgKDExMTExKSwgMzEgZGVjaW1hbC4KICAgIGNvbnN0IFZMUV9CQVNFX01BU0sgPSAzMTsKCiAgICAvLyBUaGUgY29udGludWF0aW9uIGJpdCBpcyB0aGUgNnRoIGJpdC4KICAgIGNvbnN0IFZMUV9DT05USU5VQVRJT05fQklUID0gMzI7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBWTFEgZW5jb2RlZCB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZSgkdmFsdWUpCiAgICB7CiAgICAgICAgJGVuY29kZWQgPSAnJzsKICAgICAgICAkdmxxID0gc2VsZjo6dG9WTFFTaWduZWQoJHZhbHVlKTsKCiAgICAgICAgZG8gewogICAgICAgICAgICAkZGlnaXQgPSAkdmxxICYgc2VsZjo6VkxRX0JBU0VfTUFTSzsKICAgICAgICAgICAgJHZscSA+Pj0gc2VsZjo6VkxRX0JBU0VfU0hJRlQ7CgogICAgICAgICAgICBpZiAoJHZscSA+IDApIHsKICAgICAgICAgICAgICAgICRkaWdpdCB8PSBzZWxmOjpWTFFfQ09OVElOVUFUSU9OX0JJVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVuY29kZWQgLj0gQmFzZTY0OjplbmNvZGUoJGRpZ2l0KTsKICAgICAgICB9IHdoaWxlICgkdmxxID4gMCk7CgogICAgICAgIHJldHVybiAkZW5jb2RlZDsKICAgIH0KCiAgICAvKioKICAgICAqIERlY29kZXMgVkxRVmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIGludGVnZXIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGUoJHN0ciwgJiRpbmRleCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gMDsKICAgICAgICAkc2hpZnQgPSAwOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgICRjID0gJHN0clskaW5kZXgrK107CiAgICAgICAgICAgICRkaWdpdCA9IEJhc2U2NDo6ZGVjb2RlKCRjKTsKICAgICAgICAgICAgJGNvbnRpbnVhdGlvbiA9ICgkZGlnaXQgJiBzZWxmOjpWTFFfQ09OVElOVUFUSU9OX0JJVCkgIT0gMDsKICAgICAgICAgICAgJGRpZ2l0ICY9IHNlbGY6OlZMUV9CQVNFX01BU0s7CiAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzdWx0ICsgKCRkaWdpdCA8PCAkc2hpZnQpOwogICAgICAgICAgICAkc2hpZnQgPSAkc2hpZnQgKyBzZWxmOjpWTFFfQkFTRV9TSElGVDsKICAgICAgICB9IHdoaWxlICgkY29udGludWF0aW9uKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21WTFFTaWduZWQoJHJlc3VsdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBmcm9tIGEgdHdvLWNvbXBsZW1lbnQgdmFsdWUgdG8gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXMKICAgICAqIGlzIHBsYWNlZCBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LiAgRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOgogICAgICogICAxIGJlY29tZXMgMiAoMTAgYmluYXJ5KSwgLTEgYmVjb21lcyAzICgxMSBiaW5hcnkpCiAgICAgKiAgIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KQogICAgICoKICAgICAqIEBwYXJhbSBpbnRlZ2VyICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gaW50ZWdlcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0b1ZMUVNpZ25lZCgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA8IDApIHsKICAgICAgICAgICAgcmV0dXJuICgoLSR2YWx1ZSkgPDwgMSkgKyAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgkdmFsdWUgPDwgMSkgKyAwOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzCiAgICAgKiBpcyBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczoKICAgICAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMQogICAgICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTIKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZnJvbVZMUVNpZ25lZCgkdmFsdWUpCiAgICB7CiAgICAgICAgJG5lZ2F0ZSA9ICgkdmFsdWUgJiAxKSA9PT0gMTsKICAgICAgICAkdmFsdWUgPSAkdmFsdWUgPj4gMTsKCiAgICAgICAgcmV0dXJuICRuZWdhdGUgPyAtJHZhbHVlIDogJHZhbHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/Base64VLQEncoder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcU291cmNlTWFwOwoKLyoqCiAqIEJhc2U2NCBWTFEgRW5jb2RlcgogKgogKiB7QGludGVybmFsIERlcml2YXRpdmUgb2Ygb3llam9yZ2UvbGVzcy5waHAncyBsaWIvU291cmNlTWFwL0Jhc2U2NFZMUS5waHAsIHJlbGljZW5zZWQgd2l0aCBwZXJtaXNzaW9uLiB9fQogKgogKiBAYXV0aG9yIEpvc2ggU2NobWlkdCA8b3llam9yZ2VAZ21haWwuY29tPgogKiBAYXV0aG9yIE5pY29sYXMgRlJBTsOHT0lTIDxuaWNvbGFzLmZyYW5jb2lzQGZyb2ctbGFicy5jb20+CiAqLwpjbGFzcyBCYXNlNjRWTFFFbmNvZGVyCnsKICAgIC8qKgogICAgICogU2hpZnQKICAgICAqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkc2hpZnQgPSA1OwoKICAgIC8qKgogICAgICogTWFzawogICAgICoKICAgICAqIEB2YXIgaW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICRtYXNrID0gMHgxRjsgLy8gPT0gKDEgPDwgc2hpZnQpID09IDBiMDAwMTExMTEKCiAgICAvKioKICAgICAqIENvbnRpbnVhdGlvbiBiaXQKICAgICAqCiAgICAgKiBAdmFyIGludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkY29udGludWF0aW9uQml0ID0gMHgyMDsgLy8gPT0gKG1hc2sgLSAxICkgPT0gMGIwMDEwMDAwMAoKICAgIC8qKgogICAgICogQ2hhciB0byBpbnRlZ2VyIG1hcAogICAgICoKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkY2hhclRvSW50TWFwID0gWwogICAgICAgICdBJyA9PiAwLCAgJ0InID0+IDEsICAnQycgPT4gMiwgICdEJyA9PiAzLCAgJ0UnID0+IDQsICAnRicgPT4gNSwgICdHJyA9PiA2LCAgJ0gnID0+IDcsCiAgICAgICAgJ0knID0+IDgsICAnSicgPT4gOSwgICdLJyA9PiAxMCwgJ0wnID0+IDExLCAnTScgPT4gMTIsICdOJyA9PiAxMywgJ08nID0+IDE0LCAnUCcgPT4gMTUsCiAgICAgICAgJ1EnID0+IDE2LCAnUicgPT4gMTcsICdTJyA9PiAxOCwgJ1QnID0+IDE5LCAnVScgPT4gMjAsICdWJyA9PiAyMSwgJ1cnID0+IDIyLCAnWCcgPT4gMjMsCiAgICAgICAgJ1knID0+IDI0LCAnWicgPT4gMjUsICdhJyA9PiAyNiwgJ2InID0+IDI3LCAnYycgPT4gMjgsICdkJyA9PiAyOSwgJ2UnID0+IDMwLCAnZicgPT4gMzEsCiAgICAgICAgJ2cnID0+IDMyLCAnaCcgPT4gMzMsICdpJyA9PiAzNCwgJ2onID0+IDM1LCAnaycgPT4gMzYsICdsJyA9PiAzNywgJ20nID0+IDM4LCAnbicgPT4gMzksCiAgICAgICAgJ28nID0+IDQwLCAncCcgPT4gNDEsICdxJyA9PiA0MiwgJ3InID0+IDQzLCAncycgPT4gNDQsICd0JyA9PiA0NSwgJ3UnID0+IDQ2LCAndicgPT4gNDcsCiAgICAgICAgJ3cnID0+IDQ4LCAneCcgPT4gNDksICd5JyA9PiA1MCwgJ3onID0+IDUxLCAgIDAgPT4gNTIsICAgMSA9PiA1MywgICAyID0+IDU0LCAgIDMgPT4gNTUsCiAgICAgICAgICA0ID0+IDU2LCAgIDUgPT4gNTcsICAgNiA9PiA1OCwgICA3ID0+IDU5LCAgIDggPT4gNjAsICAgOSA9PiA2MSwgJysnID0+IDYyLCAnLycgPT4gNjMsCiAgICBdOwoKICAgIC8qKgogICAgICogSW50ZWdlciB0byBjaGFyIG1hcAogICAgICoKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkaW50VG9DaGFyTWFwID0gWwogICAgICAgICAwID0+ICdBJywgIDEgPT4gJ0InLCAgMiA9PiAnQycsICAzID0+ICdEJywgIDQgPT4gJ0UnLCAgNSA9PiAnRicsICA2ID0+ICdHJywgIDcgPT4gJ0gnLAogICAgICAgICA4ID0+ICdJJywgIDkgPT4gJ0onLCAxMCA9PiAnSycsIDExID0+ICdMJywgMTIgPT4gJ00nLCAxMyA9PiAnTicsIDE0ID0+ICdPJywgMTUgPT4gJ1AnLAogICAgICAgIDE2ID0+ICdRJywgMTcgPT4gJ1InLCAxOCA9PiAnUycsIDE5ID0+ICdUJywgMjAgPT4gJ1UnLCAyMSA9PiAnVicsIDIyID0+ICdXJywgMjMgPT4gJ1gnLAogICAgICAgIDI0ID0+ICdZJywgMjUgPT4gJ1onLCAyNiA9PiAnYScsIDI3ID0+ICdiJywgMjggPT4gJ2MnLCAyOSA9PiAnZCcsIDMwID0+ICdlJywgMzEgPT4gJ2YnLAogICAgICAgIDMyID0+ICdnJywgMzMgPT4gJ2gnLCAzNCA9PiAnaScsIDM1ID0+ICdqJywgMzYgPT4gJ2snLCAzNyA9PiAnbCcsIDM4ID0+ICdtJywgMzkgPT4gJ24nLAogICAgICAgIDQwID0+ICdvJywgNDEgPT4gJ3AnLCA0MiA9PiAncScsIDQzID0+ICdyJywgNDQgPT4gJ3MnLCA0NSA9PiAndCcsIDQ2ID0+ICd1JywgNDcgPT4gJ3YnLAogICAgICAgIDQ4ID0+ICd3JywgNDkgPT4gJ3gnLCA1MCA9PiAneScsIDUxID0+ICd6JywgNTIgPT4gJzAnLCA1MyA9PiAnMScsIDU0ID0+ICcyJywgNTUgPT4gJzMnLAogICAgICAgIDU2ID0+ICc0JywgNTcgPT4gJzUnLCA1OCA9PiAnNicsIDU5ID0+ICc3JywgNjAgPT4gJzgnLCA2MSA9PiAnOScsIDYyID0+ICcrJywgNjMgPT4gJy8nLAogICAgXTsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgLy8gSSBsZWF2ZSBpdCBoZXJlIGZvciBmdXR1cmUgcmVmZXJlbmNlCiAgICAgICAgLy8gZm9yZWFjaCAoc3RyX3NwbGl0KCdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJykgYXMgJGkgPT4gJGNoYXIpCiAgICAgICAgLy8gewogICAgICAgIC8vICAgICAkdGhpcy0+Y2hhclRvSW50TWFwWyRjaGFyXSA9ICRpOwogICAgICAgIC8vICAgICAkdGhpcy0+aW50VG9DaGFyTWFwWyRpXSA9ICRjaGFyOwogICAgICAgIC8vIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzCiAgICAgKiBpcyBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOgogICAgICogICAxIGJlY29tZXMgMiAoMTAgYmluYXJ5KSwgLTEgYmVjb21lcyAzICgxMSBiaW5hcnkpCiAgICAgKiAgIDIgYmVjb21lcyA0ICgxMDAgYmluYXJ5KSwgLTIgYmVjb21lcyA1ICgxMDEgYmluYXJ5KQogICAgICogV2UgZ2VuZXJhdGUgdGhlIHZhbHVlIGZvciAzMiBiaXQgbWFjaGluZXMsIGhlbmNlIC0yMTQ3NDgzNjQ4IGJlY29tZXMgMSwgbm90IDQyOTQ5NjcyOTcsCiAgICAgKiBldmVuIG9uIGEgNjQgYml0IG1hY2hpbmUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYVZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1ZMUVNpZ25lZCgkYVZhbHVlKQogICAgewogICAgICAgIHJldHVybiAweGZmZmZmZmZmICYgKCRhVmFsdWUgPCAwID8gKCgtJGFWYWx1ZSkgPDwgMSkgKyAxIDogKCRhVmFsdWUgPDwgMSkgKyAwKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzCiAgICAgKiBpcyBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gRm9yIGV4YW1wbGUsIGFzIGRlY2ltYWxzOgogICAgICogICAyICgxMCBiaW5hcnkpIGJlY29tZXMgMSwgMyAoMTEgYmluYXJ5KSBiZWNvbWVzIC0xCiAgICAgKiAgIDQgKDEwMCBiaW5hcnkpIGJlY29tZXMgMiwgNSAoMTAxIGJpbmFyeSkgYmVjb21lcyAtMgogICAgICogV2UgYXNzdW1lIHRoYXQgdGhlIHZhbHVlIHdhcyBnZW5lcmF0ZWQgd2l0aCBhIDMyIGJpdCBtYWNoaW5lIGluIG1pbmQuCiAgICAgKiBIZW5jZQogICAgICogICAxIGJlY29tZXMgLTIxNDc0ODM2NDgKICAgICAqIGV2ZW4gb24gYSA2NCBiaXQgbWFjaGluZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkYVZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmcm9tVkxRU2lnbmVkKCRhVmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuICRhVmFsdWUgJiAxID8gJHRoaXMtPnplcm9GaWxsKH4kYVZhbHVlICsgMiwgMSkgfCAoLTEgLSAweDdmZmZmZmZmKSA6ICR0aGlzLT56ZXJvRmlsbCgkYVZhbHVlLCAxKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhVmFsdWUgVGhlIHZhbHVlIHRvIGVuY29kZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBlbmNvZGVkIHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNvZGUoJGFWYWx1ZSkKICAgIHsKICAgICAgICAkZW5jb2RlZCA9ICcnOwogICAgICAgICR2bHEgPSAkdGhpcy0+dG9WTFFTaWduZWQoJGFWYWx1ZSk7CgogICAgICAgIGRvIHsKICAgICAgICAgICAgJGRpZ2l0ID0gJHZscSAmICR0aGlzLT5tYXNrOwogICAgICAgICAgICAkdmxxID0gJHRoaXMtPnplcm9GaWxsKCR2bHEsICR0aGlzLT5zaGlmdCk7CgogICAgICAgICAgICBpZiAoJHZscSA+IDApIHsKICAgICAgICAgICAgICAgICRkaWdpdCB8PSAkdGhpcy0+Y29udGludWF0aW9uQml0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZW5jb2RlZCAuPSAkdGhpcy0+YmFzZTY0RW5jb2RlKCRkaWdpdCk7CiAgICAgICAgfSB3aGlsZSAoJHZscSA+IDApOwoKICAgICAgICByZXR1cm4gJGVuY29kZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHZhbHVlIGRlY29kZWQgZnJvbSBiYXNlIDY0IFZMUS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmNvZGVkIFRoZSBlbmNvZGVkIHZhbHVlIHRvIGRlY29kZQogICAgICoKICAgICAqIEByZXR1cm4gaW50ZWdlciBUaGUgZGVjb2RlZCB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjb2RlKCRlbmNvZGVkKQogICAgewogICAgICAgICR2bHEgPSAwOwogICAgICAgICRpID0gMDsKCiAgICAgICAgZG8gewogICAgICAgICAgICAkZGlnaXQgPSAkdGhpcy0+YmFzZTY0RGVjb2RlKCRlbmNvZGVkWyRpXSk7CiAgICAgICAgICAgICR2bHEgfD0gKCRkaWdpdCAmICR0aGlzLT5tYXNrKSA8PCAoJGkgKiAkdGhpcy0+c2hpZnQpOwogICAgICAgICAgICAkaSsrOwogICAgICAgIH0gd2hpbGUgKCRkaWdpdCAmICR0aGlzLT5jb250aW51YXRpb25CaXQpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21WTFFTaWduZWQoJHZscSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSaWdodCBzaGlmdCB3aXRoIHplcm8gZmlsbC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkYSBudW1iZXIgdG8gc2hpZnQKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRiIG51bWJlciBvZiBiaXRzIHRvIHNoaWZ0CiAgICAgKgogICAgICogQHJldHVybiBpbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB6ZXJvRmlsbCgkYSwgJGIpCiAgICB7CiAgICAgICAgcmV0dXJuICgkYSA+PSAwKSA/ICgkYSA+PiAkYikgOiAoJGEgPj4gJGIpICYgKFBIUF9JTlRfTUFYID4+ICgkYiAtIDEpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEVuY29kZSBzaW5nbGUgNi1iaXQgZGlnaXQgYXMgYmFzZTY0LgogICAgICoKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRudW1iZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbiBJZiB0aGUgbnVtYmVyIGlzIGludmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJhc2U2NEVuY29kZSgkbnVtYmVyKQogICAgewogICAgICAgIGlmICgkbnVtYmVyIDwgMCB8fCAkbnVtYmVyID4gNjMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oc3ByaW50ZignSW52YWxpZCBudW1iZXIgIiVzIiBnaXZlbi4gTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzLicsICRudW1iZXIpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+aW50VG9DaGFyTWFwWyRudW1iZXJdOwogICAgfQoKICAgIC8qKgogICAgICogRGVjb2RlIHNpbmdsZSA2LWJpdCBkaWdpdCBmcm9tIGJhc2U2NAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNoYXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiYXNlNjREZWNvZGUoJGNoYXIpCiAgICB7CiAgICAgICAgaWYgKCEgYXJyYXlfa2V5X2V4aXN0cygkY2hhciwgJHRoaXMtPmNoYXJUb0ludE1hcCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oc3ByaW50ZignSW52YWxpZCBiYXNlIDY0IGRpZ2l0ICIlcyIgZ2l2ZW4uJywgJGNoYXIpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Y2hhclRvSW50TWFwWyRjaGFyXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/SourceMap/SourceMapGenerator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHBcU291cmNlTWFwOwoKdXNlIFNjc3NQaHBcU2Nzc1BocFxFeGNlcHRpb25cQ29tcGlsZXJFeGNlcHRpb247CgovKioKICogU291cmNlIE1hcCBHZW5lcmF0b3IKICoKICoge0BpbnRlcm5hbCBEZXJpdmF0aXZlIG9mIG95ZWpvcmdlL2xlc3MucGhwJ3MgbGliL1NvdXJjZU1hcC9HZW5lcmF0b3IucGhwLCByZWxpY2Vuc2VkIHdpdGggcGVybWlzc2lvbi4gfX0KICoKICogQGF1dGhvciBKb3NoIFNjaG1pZHQgPG95ZWpvcmdlQGdtYWlsLmNvbT4KICogQGF1dGhvciBOaWNvbGFzIEZSQU7Dh09JUyA8bmljb2xhcy5mcmFuY29pc0Bmcm9nLWxhYnMuY29tPgogKi8KY2xhc3MgU291cmNlTWFwR2VuZXJhdG9yCnsKICAgIC8qKgogICAgICogV2hhdCB2ZXJzaW9uIG9mIHNvdXJjZSBtYXAgZG9lcyB0aGUgZ2VuZXJhdG9yIGdlbmVyYXRlPwogICAgICovCiAgICBjb25zdCBWRVJTSU9OID0gMzsKCiAgICAvKioKICAgICAqIEFycmF5IG9mIGRlZmF1bHQgb3B0aW9ucwogICAgICoKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICRkZWZhdWx0T3B0aW9ucyA9IFsKICAgICAgICAvLyBhbiBvcHRpb25hbCBzb3VyY2Ugcm9vdCwgdXNlZnVsIGZvciByZWxvY2F0aW5nIHNvdXJjZSBmaWxlcwogICAgICAgIC8vIG9uIGEgc2VydmVyIG9yIHJlbW92aW5nIHJlcGVhdGVkIHZhbHVlcyBpbiB0aGUgJ3NvdXJjZXMnIGVudHJ5LgogICAgICAgIC8vIFRoaXMgdmFsdWUgaXMgcHJlcGVuZGVkIHRvIHRoZSBpbmRpdmlkdWFsIGVudHJpZXMgaW4gdGhlICdzb3VyY2UnIGZpZWxkLgogICAgICAgICdzb3VyY2VSb290JyA9PiAnJywKCiAgICAgICAgLy8gYW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUgdGhhdCB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLgogICAgICAgICdzb3VyY2VNYXBGaWxlbmFtZScgPT4gbnVsbCwKCiAgICAgICAgLy8gdXJsIG9mIHRoZSBtYXAKICAgICAgICAnc291cmNlTWFwVVJMJyA9PiBudWxsLAoKICAgICAgICAvLyBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZSB0byB3cml0ZSB0aGUgbWFwIHRvCiAgICAgICAgJ3NvdXJjZU1hcFdyaXRlVG8nID0+IG51bGwsCgogICAgICAgIC8vIG91dHB1dCBzb3VyY2UgY29udGVudHM/CiAgICAgICAgJ291dHB1dFNvdXJjZUZpbGVzJyA9PiBmYWxzZSwKCiAgICAgICAgLy8gYmFzZSBwYXRoIGZvciBmaWxlbmFtZSBub3JtYWxpemF0aW9uCiAgICAgICAgJ3NvdXJjZU1hcFJvb3RwYXRoJyA9PiAnJywKCiAgICAgICAgLy8gYmFzZSBwYXRoIGZvciBmaWxlbmFtZSBub3JtYWxpemF0aW9uCiAgICAgICAgJ3NvdXJjZU1hcEJhc2VwYXRoJyA9PiAnJwogICAgXTsKCiAgICAvKioKICAgICAqIFRoZSBiYXNlNjQgVkxRIGVuY29kZXIKICAgICAqCiAgICAgKiBAdmFyIFxTY3NzUGhwXFNjc3NQaHBcU291cmNlTWFwXEJhc2U2NFZMUQogICAgICovCiAgICBwcm90ZWN0ZWQgJGVuY29kZXI7CgogICAgLyoqCiAgICAgKiBBcnJheSBvZiBtYXBwaW5ncwogICAgICoKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICRtYXBwaW5ncyA9IFtdOwoKICAgIC8qKgogICAgICogQXJyYXkgb2YgY29udGVudHMgbWFwCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJGNvbnRlbnRzTWFwID0gW107CgogICAgLyoqCiAgICAgKiBGaWxlIHRvIGNvbnRlbnQgbWFwCiAgICAgKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJHNvdXJjZXMgPSBbXTsKICAgIHByb3RlY3RlZCAkc291cmNlS2V5cyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRvcHRpb25zOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5vcHRpb25zID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmRlZmF1bHRPcHRpb25zLCAkb3B0aW9ucyk7CiAgICAgICAgJHRoaXMtPmVuY29kZXIgPSBuZXcgQmFzZTY0VkxRKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIGEgbWFwcGluZwogICAgICoKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRnZW5lcmF0ZWRMaW5lICAgVGhlIGxpbmUgbnVtYmVyIGluIGdlbmVyYXRlZCBmaWxlCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkZ2VuZXJhdGVkQ29sdW1uIFRoZSBjb2x1bW4gbnVtYmVyIGluIGdlbmVyYXRlZCBmaWxlCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkb3JpZ2luYWxMaW5lICAgIFRoZSBsaW5lIG51bWJlciBpbiBvcmlnaW5hbCBmaWxlCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkb3JpZ2luYWxDb2x1bW4gIFRoZSBjb2x1bW4gbnVtYmVyIGluIG9yaWdpbmFsIGZpbGUKICAgICAqIEBwYXJhbSBzdHJpbmcgICRzb3VyY2VGaWxlICAgICAgVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRNYXBwaW5nKCRnZW5lcmF0ZWRMaW5lLCAkZ2VuZXJhdGVkQ29sdW1uLCAkb3JpZ2luYWxMaW5lLCAkb3JpZ2luYWxDb2x1bW4sICRzb3VyY2VGaWxlKQogICAgewogICAgICAgICR0aGlzLT5tYXBwaW5nc1tdID0gWwogICAgICAgICAgICAnZ2VuZXJhdGVkX2xpbmUnICAgPT4gJGdlbmVyYXRlZExpbmUsCiAgICAgICAgICAgICdnZW5lcmF0ZWRfY29sdW1uJyA9PiAkZ2VuZXJhdGVkQ29sdW1uLAogICAgICAgICAgICAnb3JpZ2luYWxfbGluZScgICAgPT4gJG9yaWdpbmFsTGluZSwKICAgICAgICAgICAgJ29yaWdpbmFsX2NvbHVtbicgID0+ICRvcmlnaW5hbENvbHVtbiwKICAgICAgICAgICAgJ3NvdXJjZV9maWxlJyAgICAgID0+ICRzb3VyY2VGaWxlCiAgICAgICAgXTsKCiAgICAgICAgJHRoaXMtPnNvdXJjZXNbJHNvdXJjZUZpbGVdID0gJHNvdXJjZUZpbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYXZlcyB0aGUgc291cmNlIG1hcCB0byBhIGZpbGUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50IFRoZSBjb250ZW50IHRvIHdyaXRlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFxTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXENvbXBpbGVyRXhjZXB0aW9uIElmIHRoZSBmaWxlIGNvdWxkIG5vdCBiZSBzYXZlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZU1hcCgkY29udGVudCkKICAgIHsKICAgICAgICAkZmlsZSA9ICR0aGlzLT5vcHRpb25zWydzb3VyY2VNYXBXcml0ZVRvJ107CiAgICAgICAgJGRpciAgPSBkaXJuYW1lKCRmaWxlKTsKCiAgICAgICAgLy8gZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0CiAgICAgICAgaWYgKCEgaXNfZGlyKCRkaXIpKSB7CiAgICAgICAgICAgIC8vIEZJWE1FOiBjcmVhdGUgdGhlIGRpciBhdXRvbWF0aWNhbGx5PwogICAgICAgICAgICB0aHJvdyBuZXcgQ29tcGlsZXJFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBzcHJpbnRmKCdUaGUgZGlyZWN0b3J5ICIlcyIgZG9lcyBub3QgZXhpc3QuIENhbm5vdCBzYXZlIHRoZSBzb3VyY2UgbWFwLicsICRkaXIpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvLyBGSVhNRTogcHJvcGVyIHNhdmluZywgd2l0aCBkaXIgd3JpdGUgY2hlY2shCiAgICAgICAgaWYgKGZpbGVfcHV0X2NvbnRlbnRzKCRmaWxlLCAkY29udGVudCkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBDb21waWxlckV4Y2VwdGlvbihzcHJpbnRmKCdDYW5ub3Qgc2F2ZSB0aGUgc291cmNlIG1hcCB0byAiJXMiJywgJGZpbGUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+b3B0aW9uc1snc291cmNlTWFwVVJMJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBHZW5lcmF0ZXMgdGhlIEpTT04gc291cmNlIG1hcAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZUpzb24oKQogICAgewogICAgICAgICRzb3VyY2VNYXAgPSBbXTsKICAgICAgICAkbWFwcGluZ3MgID0gJHRoaXMtPmdlbmVyYXRlTWFwcGluZ3MoKTsKCiAgICAgICAgLy8gRmlsZSB2ZXJzaW9uIChhbHdheXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBvYmplY3QpIGFuZCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlci4KICAgICAgICAkc291cmNlTWFwWyd2ZXJzaW9uJ10gPSBzZWxmOjpWRVJTSU9OOwoKICAgICAgICAvLyBBbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgY29kZSB0aGF0IHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguCiAgICAgICAgJGZpbGUgPSAkdGhpcy0+b3B0aW9uc1snc291cmNlTWFwRmlsZW5hbWUnXTsKCiAgICAgICAgaWYgKCRmaWxlKSB7CiAgICAgICAgICAgICRzb3VyY2VNYXBbJ2ZpbGUnXSA9ICRmaWxlOwogICAgICAgIH0KCiAgICAgICAgLy8gQW4gb3B0aW9uYWwgc291cmNlIHJvb3QsIHVzZWZ1bCBmb3IgcmVsb2NhdGluZyBzb3VyY2UgZmlsZXMgb24gYSBzZXJ2ZXIgb3IgcmVtb3ZpbmcgcmVwZWF0ZWQgdmFsdWVzIGluIHRoZQogICAgICAgIC8vICdzb3VyY2VzJyBlbnRyeS4gVGhpcyB2YWx1ZSBpcyBwcmVwZW5kZWQgdG8gdGhlIGluZGl2aWR1YWwgZW50cmllcyBpbiB0aGUgJ3NvdXJjZScgZmllbGQuCiAgICAgICAgJHJvb3QgPSAkdGhpcy0+b3B0aW9uc1snc291cmNlUm9vdCddOwoKICAgICAgICBpZiAoJHJvb3QpIHsKICAgICAgICAgICAgJHNvdXJjZU1hcFsnc291cmNlUm9vdCddID0gJHJvb3Q7CiAgICAgICAgfQoKICAgICAgICAvLyBBIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcyB1c2VkIGJ5IHRoZSAnbWFwcGluZ3MnIGVudHJ5LgogICAgICAgICRzb3VyY2VNYXBbJ3NvdXJjZXMnXSA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c291cmNlcyBhcyAkc291cmNlVXJpID0+ICRzb3VyY2VGaWxlbmFtZSkgewogICAgICAgICAgICAkc291cmNlTWFwWydzb3VyY2VzJ11bXSA9ICR0aGlzLT5ub3JtYWxpemVGaWxlbmFtZSgkc291cmNlRmlsZW5hbWUpOwogICAgICAgIH0KCiAgICAgICAgLy8gQSBsaXN0IG9mIHN5bWJvbCBuYW1lcyB1c2VkIGJ5IHRoZSAnbWFwcGluZ3MnIGVudHJ5LgogICAgICAgICRzb3VyY2VNYXBbJ25hbWVzJ10gPSBbXTsKCiAgICAgICAgLy8gQSBzdHJpbmcgd2l0aCB0aGUgZW5jb2RlZCBtYXBwaW5nIGRhdGEuCiAgICAgICAgJHNvdXJjZU1hcFsnbWFwcGluZ3MnXSA9ICRtYXBwaW5nczsKCiAgICAgICAgaWYgKCR0aGlzLT5vcHRpb25zWydvdXRwdXRTb3VyY2VGaWxlcyddKSB7CiAgICAgICAgICAgIC8vIEFuIG9wdGlvbmFsIGxpc3Qgb2Ygc291cmNlIGNvbnRlbnQsIHVzZWZ1bCB3aGVuIHRoZSAnc291cmNlJyBjYW4ndCBiZSBob3N0ZWQuCiAgICAgICAgICAgIC8vIFRoZSBjb250ZW50cyBhcmUgbGlzdGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBzb3VyY2VzIGFib3ZlLgogICAgICAgICAgICAvLyAnbnVsbCcgbWF5IGJlIHVzZWQgaWYgc29tZSBvcmlnaW5hbCBzb3VyY2VzIHNob3VsZCBiZSByZXRyaWV2ZWQgYnkgbmFtZS4KICAgICAgICAgICAgJHNvdXJjZU1hcFsnc291cmNlc0NvbnRlbnQnXSA9ICR0aGlzLT5nZXRTb3VyY2VzQ29udGVudCgpOwogICAgICAgIH0KCiAgICAgICAgLy8gbGVzcy5qcyBjb21wYXQgZml4ZXMKICAgICAgICBpZiAoY291bnQoJHNvdXJjZU1hcFsnc291cmNlcyddKSAmJiBlbXB0eSgkc291cmNlTWFwWydzb3VyY2VSb290J10pKSB7CiAgICAgICAgICAgIHVuc2V0KCRzb3VyY2VNYXBbJ3NvdXJjZVJvb3QnXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4ganNvbl9lbmNvZGUoJHNvdXJjZU1hcCwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzb3VyY2VzIGNvbnRlbnRzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXxudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTb3VyY2VzQ29udGVudCgpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5zb3VyY2VzKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRjb250ZW50ID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zb3VyY2VzIGFzICRzb3VyY2VGaWxlKSB7CiAgICAgICAgICAgICRjb250ZW50W10gPSBmaWxlX2dldF9jb250ZW50cygkc291cmNlRmlsZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZW5lcmF0ZXMgdGhlIG1hcHBpbmdzIHN0cmluZwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZU1hcHBpbmdzKCkKICAgIHsKICAgICAgICBpZiAoISBjb3VudCgkdGhpcy0+bWFwcGluZ3MpKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zb3VyY2VLZXlzID0gYXJyYXlfZmxpcChhcnJheV9rZXlzKCR0aGlzLT5zb3VyY2VzKSk7CgogICAgICAgIC8vIGdyb3VwIG1hcHBpbmdzIGJ5IGdlbmVyYXRlZCBsaW5lIG51bWJlci4KICAgICAgICAkZ3JvdXBlZE1hcCA9ICRncm91cGVkTWFwRW5jb2RlZCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+bWFwcGluZ3MgYXMgJG0pIHsKICAgICAgICAgICAgJGdyb3VwZWRNYXBbJG1bJ2dlbmVyYXRlZF9saW5lJ11dW10gPSAkbTsKICAgICAgICB9CgogICAgICAgIGtzb3J0KCRncm91cGVkTWFwKTsKICAgICAgICAkbGFzdEdlbmVyYXRlZExpbmUgPSAkbGFzdE9yaWdpbmFsSW5kZXggPSAkbGFzdE9yaWdpbmFsTGluZSA9ICRsYXN0T3JpZ2luYWxDb2x1bW4gPSAwOwoKICAgICAgICBmb3JlYWNoICgkZ3JvdXBlZE1hcCBhcyAkbGluZU51bWJlciA9PiAkbGluZU1hcCkgewogICAgICAgICAgICB3aGlsZSAoKyskbGFzdEdlbmVyYXRlZExpbmUgPCAkbGluZU51bWJlcikgewogICAgICAgICAgICAgICAgJGdyb3VwZWRNYXBFbmNvZGVkW10gPSAnOyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRsaW5lTWFwRW5jb2RlZCA9IFtdOwogICAgICAgICAgICAkbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7CgogICAgICAgICAgICBmb3JlYWNoICgkbGluZU1hcCBhcyAkbSkgewogICAgICAgICAgICAgICAgJG1hcEVuY29kZWQgPSAkdGhpcy0+ZW5jb2Rlci0+ZW5jb2RlKCRtWydnZW5lcmF0ZWRfY29sdW1uJ10gLSAkbGFzdEdlbmVyYXRlZENvbHVtbik7CiAgICAgICAgICAgICAgICAkbGFzdEdlbmVyYXRlZENvbHVtbiA9ICRtWydnZW5lcmF0ZWRfY29sdW1uJ107CgogICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgaW5kZXgKICAgICAgICAgICAgICAgIGlmICgkbVsnc291cmNlX2ZpbGUnXSkgewogICAgICAgICAgICAgICAgICAgICRpbmRleCA9ICR0aGlzLT5maW5kRmlsZUluZGV4KCRtWydzb3VyY2VfZmlsZSddKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRpbmRleCAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1hcEVuY29kZWQgLj0gJHRoaXMtPmVuY29kZXItPmVuY29kZSgkaW5kZXggLSAkbGFzdE9yaWdpbmFsSW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICAkbGFzdE9yaWdpbmFsSW5kZXggPSAkaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpbmVzIGFyZSBzdG9yZWQgMC1iYXNlZCBpbiBTb3VyY2VNYXAgc3BlYyB2ZXJzaW9uIDMKICAgICAgICAgICAgICAgICAgICAgICAgJG1hcEVuY29kZWQgLj0gJHRoaXMtPmVuY29kZXItPmVuY29kZSgkbVsnb3JpZ2luYWxfbGluZSddIC0gMSAtICRsYXN0T3JpZ2luYWxMaW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RPcmlnaW5hbExpbmUgPSAkbVsnb3JpZ2luYWxfbGluZSddIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgJG1hcEVuY29kZWQgLj0gJHRoaXMtPmVuY29kZXItPmVuY29kZSgkbVsnb3JpZ2luYWxfY29sdW1uJ10gLSAkbGFzdE9yaWdpbmFsQ29sdW1uKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RPcmlnaW5hbENvbHVtbiA9ICRtWydvcmlnaW5hbF9jb2x1bW4nXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGxpbmVNYXBFbmNvZGVkW10gPSAkbWFwRW5jb2RlZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGdyb3VwZWRNYXBFbmNvZGVkW10gPSBpbXBsb2RlKCcsJywgJGxpbmVNYXBFbmNvZGVkKSAuICc7JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBydHJpbShpbXBsb2RlKCRncm91cGVkTWFwRW5jb2RlZCksICc7Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kcyB0aGUgaW5kZXggZm9yIHRoZSBmaWxlbmFtZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKgogICAgICogQHJldHVybiBpbnRlZ2VyfGZhbHNlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBmaW5kRmlsZUluZGV4KCRmaWxlbmFtZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNvdXJjZUtleXNbJGZpbGVuYW1lXTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZSBmaWxlbmFtZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIG5vcm1hbGl6ZUZpbGVuYW1lKCRmaWxlbmFtZSkKICAgIHsKICAgICAgICAkZmlsZW5hbWUgPSAkdGhpcy0+Zml4V2luZG93c1BhdGgoJGZpbGVuYW1lKTsKICAgICAgICAkcm9vdHBhdGggPSAkdGhpcy0+b3B0aW9uc1snc291cmNlTWFwUm9vdHBhdGgnXTsKICAgICAgICAkYmFzZVBhdGggPSAkdGhpcy0+b3B0aW9uc1snc291cmNlTWFwQmFzZXBhdGgnXTsKCiAgICAgICAgLy8gIlRyaW0iIHRoZSAnc291cmNlTWFwQmFzZXBhdGgnIGZyb20gdGhlIG91dHB1dCBmaWxlbmFtZS4KICAgICAgICBpZiAoc3RybGVuKCRiYXNlUGF0aCkgJiYgc3RycG9zKCRmaWxlbmFtZSwgJGJhc2VQYXRoKSA9PT0gMCkgewogICAgICAgICAgICAkZmlsZW5hbWUgPSBzdWJzdHIoJGZpbGVuYW1lLCBzdHJsZW4oJGJhc2VQYXRoKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1vdmUgZXh0cmEgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMuCiAgICAgICAgaWYgKHN0cnBvcygkZmlsZW5hbWUsICdcXCcpID09PSAwIHx8IHN0cnBvcygkZmlsZW5hbWUsICcvJykgPT09IDApIHsKICAgICAgICAgICAgJGZpbGVuYW1lID0gc3Vic3RyKCRmaWxlbmFtZSwgMSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkcm9vdHBhdGggLiAkZmlsZW5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaXggd2luZG93cyBwYXRocwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICRwYXRoCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkYWRkRW5kU2xhc2gKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZml4V2luZG93c1BhdGgoJHBhdGgsICRhZGRFbmRTbGFzaCA9IGZhbHNlKQogICAgewogICAgICAgICRzbGFzaCA9ICgkYWRkRW5kU2xhc2gpID8gJy8nIDogJyc7CgogICAgICAgIGlmICghIGVtcHR5KCRwYXRoKSkgewogICAgICAgICAgICAkcGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHBhdGgpOwogICAgICAgICAgICAkcGF0aCA9IHJ0cmltKCRwYXRoLCAnLycpIC4gJHNsYXNoOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwYXRoOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Type.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7CgovKioKICogQmxvY2svbm9kZSB0eXBlcwogKgogKiBAYXV0aG9yIEFudGhvbiBQYW5nIDxhbnRob24ucGFuZ0BnbWFpbC5jb20+CiAqLwpjbGFzcyBUeXBlCnsKICAgIGNvbnN0IFRfQVNTSUdOID0gJ2Fzc2lnbic7CiAgICBjb25zdCBUX0FUX1JPT1QgPSAnYXQtcm9vdCc7CiAgICBjb25zdCBUX0JMT0NLID0gJ2Jsb2NrJzsKICAgIGNvbnN0IFRfQlJFQUsgPSAnYnJlYWsnOwogICAgY29uc3QgVF9DSEFSU0VUID0gJ2NoYXJzZXQnOwogICAgY29uc3QgVF9DT0xPUiA9ICdjb2xvcic7CiAgICBjb25zdCBUX0NPTU1FTlQgPSAnY29tbWVudCc7CiAgICBjb25zdCBUX0NPTlRJTlVFID0gJ2NvbnRpbnVlJzsKICAgIGNvbnN0IFRfQ09OVFJPTCA9ICdjb250cm9sJzsKICAgIGNvbnN0IFRfREVCVUcgPSAnZGVidWcnOwogICAgY29uc3QgVF9ESVJFQ1RJVkUgPSAnZGlyZWN0aXZlJzsKICAgIGNvbnN0IFRfRUFDSCA9ICdlYWNoJzsKICAgIGNvbnN0IFRfRUxTRSA9ICdlbHNlJzsKICAgIGNvbnN0IFRfRUxTRUlGID0gJ2Vsc2VpZic7CiAgICBjb25zdCBUX0VSUk9SID0gJ2Vycm9yJzsKICAgIGNvbnN0IFRfRVhQUkVTU0lPTiA9ICdleHAnOwogICAgY29uc3QgVF9FWFRFTkQgPSAnZXh0ZW5kJzsKICAgIGNvbnN0IFRfRk9SID0gJ2Zvcic7CiAgICBjb25zdCBUX0ZVTkNUSU9OID0gJ2Z1bmN0aW9uJzsKICAgIGNvbnN0IFRfRlVOQ1RJT05fQ0FMTCA9ICdmbmNhbGwnOwogICAgY29uc3QgVF9IU0wgPSAnaHNsJzsKICAgIGNvbnN0IFRfSUYgPSAnaWYnOwogICAgY29uc3QgVF9JTVBPUlQgPSAnaW1wb3J0JzsKICAgIGNvbnN0IFRfSU5DTFVERSA9ICdpbmNsdWRlJzsKICAgIGNvbnN0IFRfSU5URVJQT0xBVEUgPSAnaW50ZXJwb2xhdGUnOwogICAgY29uc3QgVF9JTlRFUlBPTEFURUQgPSAnaW50ZXJwb2xhdGVkJzsKICAgIGNvbnN0IFRfS0VZV09SRCA9ICdrZXl3b3JkJzsKICAgIGNvbnN0IFRfTElTVCA9ICdsaXN0JzsKICAgIGNvbnN0IFRfTUFQID0gJ21hcCc7CiAgICBjb25zdCBUX01FRElBID0gJ21lZGlhJzsKICAgIGNvbnN0IFRfTUVESUFfRVhQUkVTU0lPTiA9ICdtZWRpYUV4cCc7CiAgICBjb25zdCBUX01FRElBX1RZUEUgPSAnbWVkaWFUeXBlJzsKICAgIGNvbnN0IFRfTUVESUFfVkFMVUUgPSAnbWVkaWFWYWx1ZSc7CiAgICBjb25zdCBUX01JWElOID0gJ21peGluJzsKICAgIGNvbnN0IFRfTUlYSU5fQ09OVEVOVCA9ICdtaXhpbl9jb250ZW50JzsKICAgIGNvbnN0IFRfTkVTVEVEX1BST1BFUlRZID0gJ25lc3RlZHByb3AnOwogICAgY29uc3QgVF9OT1QgPSAnbm90JzsKICAgIGNvbnN0IFRfTlVMTCA9ICdudWxsJzsKICAgIGNvbnN0IFRfTlVNQkVSID0gJ251bWJlcic7CiAgICBjb25zdCBUX1JFVFVSTiA9ICdyZXR1cm4nOwogICAgY29uc3QgVF9ST09UID0gJ3Jvb3QnOwogICAgY29uc3QgVF9TQ1NTUEhQX0lNUE9SVF9PTkNFID0gJ3Njc3NwaHAtaW1wb3J0LW9uY2UnOwogICAgY29uc3QgVF9TRUxGID0gJ3NlbGYnOwogICAgY29uc3QgVF9TVFJJTkcgPSAnc3RyaW5nJzsKICAgIGNvbnN0IFRfVU5BUlkgPSAndW5hcnknOwogICAgY29uc3QgVF9WQVJJQUJMRSA9ICd2YXInOwogICAgY29uc3QgVF9XQVJOID0gJ3dhcm4nOwogICAgY29uc3QgVF9XSElMRSA9ICd3aGlsZSc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Util.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7Cgp1c2UgU2Nzc1BocFxTY3NzUGhwXEJhc2VcUmFuZ2U7CnVzZSBTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFJhbmdlRXhjZXB0aW9uOwoKLyoqCiAqIFV0aWx0eSBmdW5jdGlvbnMKICoKICogQGF1dGhvciBBbnRob24gUGFuZyA8YW50aG9uLnBhbmdAZ21haWwuY29tPgogKi8KY2xhc3MgVXRpbAp7CiAgICAvKioKICAgICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGZhbGxzIHdpdGhpbiBgcmFuZ2VgIChpbmNsdXNpdmUpLCBsZWF2aW5nCiAgICAgKiByb29tIGZvciBzbGlnaHQgZmxvYXRpbmctcG9pbnQgZXJyb3JzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRuYW1lICBUaGUgbmFtZSBvZiB0aGUgdmFsdWUuIFVzZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UuCiAgICAgKiBAcGFyYW0gXFNjc3NQaHBcU2Nzc1BocFxCYXNlXFJhbmdlICRyYW5nZSBSYW5nZSBvZiB2YWx1ZXMuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJHVuaXQgIFRoZSB1bml0IG9mIHRoZSB2YWx1ZS4gVXNlZCBpbiBlcnJvciByZXBvcnRpbmcuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZCBgdmFsdWVgIGFkanVzdGVkIHRvIGZhbGwgd2l0aGluIHJhbmdlLCBpZiBpdCB3YXMgb3V0c2lkZSBieSBhIGZsb2F0aW5nLXBvaW50IG1hcmdpbi4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxTY3NzUGhwXFNjc3NQaHBcRXhjZXB0aW9uXFJhbmdlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tSYW5nZSgkbmFtZSwgUmFuZ2UgJHJhbmdlLCAkdmFsdWUsICR1bml0ID0gJycpCiAgICB7CiAgICAgICAgJHZhbCA9ICR2YWx1ZVsxXTsKICAgICAgICAkZ3JhY2UgPSBuZXcgUmFuZ2UoLTAuMDAwMDEsIDAuMDAwMDEpOwoKICAgICAgICBpZiAoJHJhbmdlLT5pbmNsdWRlcygkdmFsKSkgewogICAgICAgICAgICByZXR1cm4gJHZhbDsKICAgICAgICB9CgogICAgICAgIGlmICgkZ3JhY2UtPmluY2x1ZGVzKCR2YWwgLSAkcmFuZ2UtPmZpcnN0KSkgewogICAgICAgICAgICByZXR1cm4gJHJhbmdlLT5maXJzdDsKICAgICAgICB9CgogICAgICAgIGlmICgkZ3JhY2UtPmluY2x1ZGVzKCR2YWwgLSAkcmFuZ2UtPmxhc3QpKSB7CiAgICAgICAgICAgIHJldHVybiAkcmFuZ2UtPmxhc3Q7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFeGNlcHRpb24oIiRuYW1lIHskdmFsfSBtdXN0IGJlIGJldHdlZW4geyRyYW5nZS0+Zmlyc3R9IGFuZCB7JHJhbmdlLT5sYXN0fSR1bml0Iik7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgVVJJIGNvbXBvbmVudAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5jb2RlVVJJQ29tcG9uZW50KCRzdHJpbmcpCiAgICB7CiAgICAgICAgJHJldmVydCA9IFsnJTIxJyA9PiAnIScsICclMkEnID0+ICcqJywgJyUyNycgPT4gIiciLCAnJTI4JyA9PiAnKCcsICclMjknID0+ICcpJ107CgogICAgICAgIHJldHVybiBzdHJ0cihyYXd1cmxlbmNvZGUoJHN0cmluZyksICRyZXZlcnQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/preprocessors/ScssPHP/scssphp/src/Version.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFNDU1NQSFAKICoKICogQGNvcHlyaWdodCAyMDEyLTIwMTkgTGVhZiBDb3Jjb3JhbgogKgogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUIE1JVAogKgogKiBAbGluayBodHRwOi8vc2Nzc3BocC5naXRodWIuaW8vc2Nzc3BocAogKi8KCm5hbWVzcGFjZSBTY3NzUGhwXFNjc3NQaHA7CgovKioKICogU0NTU1BIUCB2ZXJzaW9uCiAqCiAqIEBhdXRob3IgTGVhZiBDb3Jjb3JhbiA8bGVhZm90QGdtYWlsLmNvbT4KICovCmNsYXNzIFZlcnNpb24KewogICAgY29uc3QgVkVSU0lPTiA9ICd2MS4wLjInOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q1NTUHJlcHJvY2Vzc29yCj09PT09PT09PT09PT09PQoKQSBtb2R1bGUgdGhhdCBleHRlbmRzIHRoZSBzdHlsZXNoZWV0cyBzeXN0ZW0gb2YgQ01TIE1hZGUgU2ltcGxlIHdpdGggdmFyaW91cyBDU1MgUHJlcHJvY2Vzc29ycy4KClVzZXMgdGhlIHN0YW5kYXJkIFN0eWxlc2hlZXRzIC8gRGVzaWduIG1hbmFnZXIgYW5kIGNhY2hpbmcgc3lzdGVtLiBXb3JrcyB3aXRoIENNU01TIDEuMTEuMTEgKHVudGlsIDEuMykgYW5kIDIuMSsgc2VyaWVzLgoKRm9yIHRoZSBtb21lbnQsIG9ubHkgTEVTUyAvIFNBU1MgcHJlcHJvY2Vzc29ycyBhcmUgcHJvdmlkZWQgKFBIUCBhbmQgY29tbWFuZC1saW5lIC0gaWYgYXZhaWxhYmxlIG9uIHlvdXIgc2VydmVyKSwgYnV0IHlvdSBjYW4gZXh0ZW5kIGl0LiBDb21waWxlcyBCb290c3RyYXAgYW5kIEZvdW5kYXRpb24uClN1cHBvcnRzIFNNQVJUWSBpbnNpZGUgc3R5bGVzaGVldHMgYW5kIGJlZm9yZSBjb21waWxhdGlvbi4KCkNNUyBNYWRlIFNpbXBsZSBtb2R1bGUgcGFnZSBvbiB0aGUgZm9yZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Nzc3ByZXByb2Nlc3Nvcgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/preferences.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CnsqIDxoMT57JG1vZC0+TGFuZygncHJlZmVyZW5jZXMnKX08L2gxPiAqfQoKeyRmb3JtX3N0YXJ0fQoKCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KCQk8L3A+Cgk8L2Rpdj4KCgoJPGZpZWxkc2V0PgoJCTxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2Nzc19wcmVwcm9jZXNzb3InKX08L2xlZ2VuZD4KCgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJCTxsYWJlbD57JG1vZC0+TGFuZygnY2hvb3NlX3ByZXByb2Nlc3NvcicpfTo8L2xhYmVsPgoJCQkJPGJyPjxicj4KCQkJPC9wPgoKCgoJCQkJe2ZvcmVhY2ggZnJvbT0kcHJlcHJvY2Vzc29ycyBpdGVtPXByZXByb2Nlc3NvciBrZXk9ZGlyfQoKCQkJCQk8bGFiZWwgY2xhc3M9InByZXByb2Nlc3NvciBjX2Z1bGwiPgoJCQkJCQk8ZGl2IGNsYXNzPSJpbnB1dF9yYWRpbyBncmlkXzIiPgoJCQkJCQkJPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJ7JGFjdGlvbmlkfXByZXByb2Nlc3NvciIgdmFsdWU9InskcHJlcHJvY2Vzc29yLT5kaXJ9IiB7aWYgJGN1cnJlbnRfcHJlcHJvY2Vzc29yIGVxICRwcmVwcm9jZXNzb3ItPmRpcn1jaGVja2Vkey9pZn0+CgkJCQkJCTwvZGl2PgoKCQkJCQkJe2lmIGlzc2V0KCRwcmVwcm9jZXNzb3ItPmxvZ28pIGFuZCAhZW1wdHkoJHByZXByb2Nlc3Nvci0+bG9nbyl9CgkJCQkJCQk8ZGl2IGNsYXNzPSJsb2dvIGdyaWRfMiI+CgkJCQkJCQkJPGltZyBzcmM9InskbW9kLT5HZXRNb2R1bGVVUkxQYXRoKCl9L3ByZXByb2Nlc3NvcnMveyRwcmVwcm9jZXNzb3ItPmRpcn0veyRwcmVwcm9jZXNzb3ItPmxvZ299IiB3aWR0aD0iMTAwIj4KCQkJCQkJCTwvZGl2PgoJCQkJCQl7L2lmfQoKCQkJCQkJPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24gZ3JpZF97aWYgaXNzZXQoJHByZXByb2Nlc3Nvci0+bG9nbykgYW5kICFlbXB0eSgkcHJlcHJvY2Vzc29yLT5sb2dvKX04e2Vsc2V9MTB7L2lmfSI+CgkJCQkJCQk8aDI+eyRwcmVwcm9jZXNzb3ItPmZyaWVuZGx5X25hbWV9PC9oMj4KCQkJCQkJCTxwPgoJCQkJCQkJCXskcHJlcHJvY2Vzc29yLT5kZXNjcmlwdGlvbn0gLSBCeSA8YSBocmVmPSJ7JHByZXByb2Nlc3Nvci0+d2Vic2l0ZX0iIHRhcmdldD0iX2JsYW5rIj48ZW0+eyRwcmVwcm9jZXNzb3ItPmF1dGhvcn08L2VtPjwvYT4KCgkJCQkJCQkJe2lmICFlbXB0eSgkcHJlcHJvY2Vzc29yLT5ub3RlKX0KCQkJCQkJCQkJPGJyPjxzdHJvbmc+eyRtb2QtPkxhbmcoJ25vdGUnKX08L3N0cm9uZz4geyRwcmVwcm9jZXNzb3ItPm5vdGV9CgkJCQkJCQkJey9pZn0KCQkJCQkJCTwvcD4KCgoKCgkJCQkJCTwvZGl2PgoKCgkJCQkJPC9sYWJlbD4KCgkJCQl7L2ZvcmVhY2h9CgoJCTwvZGl2PgoKCTwvZmllbGRzZXQ+IHsqRW5kIHByZSBwcm9jZXNzb3IqfQoKCgk8ZmllbGRzZXQ+CgkJPGxlZ2VuZD57JG1vZC0+TGFuZygnb3B0aW9ucycpfTwvbGVnZW5kPgoKCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQkJPGxhYmVsIGZvcj0naW1wb3J0X2RpcnMnPnskbW9kLT5MYW5nKCdpbXBvcnRfZGlycycpfTwvbGFiZWw+CgkJCTwvcD4KCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0neyRhY3Rpb25pZH1pbXBvcnRfZGlycycgaWQ9J2ltcG9ydF9kaXJzJyB2YWx1ZT0neyRpbXBvcnRfZGlyc30nIHN0eWxlPSJ3aWR0aDogOTAlIj4KCQkJPC9wPgoJCTwvZGl2PgoKCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPgoJCQkJPGxhYmVsPnskbW9kLT5MYW5nKCdtaW5pZnknKX08L2xhYmVsPgoJCQk8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQkJPGxhYmVsIGZvcj0nbWluaWZ5Jz4KCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSd7JGFjdGlvbmlkfW1pbmlmeScgdmFsdWU9JzAnPgoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0neyRhY3Rpb25pZH1taW5pZnknIGlkPSdtaW5pZnknIHZhbHVlPScxJyB7aWYgJG1pbmlmeX1jaGVja2VkPSJjaGVja2VkInsvaWZ9PgoKCQkJCQl7JG1vZC0+TGFuZygnbWluaWZ5X2xhYmVsJyl9CgkJCQk8L2xhYmVsPgoJCQk8L3A+CgkJPC9kaXY+CgoJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCTxwIGNsYXNzPSJwYWdldGV4dCI+CgkJCQk8bGFiZWw+eyRtb2QtPkxhbmcoJ2dlbmVyYXRlX3NvdXJjZW1hcCcpfTwvbGFiZWw+CgkJCTwvcD4KCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCQk8bGFiZWwgZm9yPSdnZW5lcmF0ZV9zb3VyY2VtYXAnPgoJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9J3skYWN0aW9uaWR9Z2VuZXJhdGVfc291cmNlbWFwJyB2YWx1ZT0nMCc+CgkJCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSd7JGFjdGlvbmlkfWdlbmVyYXRlX3NvdXJjZW1hcCcgaWQ9J2dlbmVyYXRlX3NvdXJjZW1hcCcgdmFsdWU9JzEnIHtpZiAkZ2VuZXJhdGVfc291cmNlbWFwfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0+CgoJCQkJCXskbW9kLT5MYW5nKCdnZW5lcmF0ZV9zb3VyY2VtYXBfbGFiZWwnKX0KCQkJCTwvbGFiZWw+CgkJCTwvcD4KCQk8L2Rpdj4KCgkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4KCQkJCTxsYWJlbD5BdXRvcHJlZml4ZXI8L2xhYmVsPgoJCQk8L3A+CgkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPgoJCQkJPGxhYmVsIGZvcj0ndXNlX2F1dG9wcmVmaXhlcic+CgkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0neyRhY3Rpb25pZH11c2VfYXV0b3ByZWZpeGVyJyB2YWx1ZT0nMCc+CgkJCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSd7JGFjdGlvbmlkfXVzZV9hdXRvcHJlZml4ZXInIGlkPSd1c2VfYXV0b3ByZWZpeGVyJyB2YWx1ZT0nMScge2lmICR1c2VfYXV0b3ByZWZpeGVyfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0+CgoJCQkJCXskbW9kLT5MYW5nKCd1c2VfYXV0b3ByZWZpeGVyJyl9CgkJCQk8L2xhYmVsPgoJCQk8L3A+CgkJPC9kaXY+CgoKCTwvZmllbGRzZXQ+CgoKCgoKCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfWNhbmNlbCIgdmFsdWU9InskbW9kLT5MYW5nKCdjYW5jZWwnKX0iLz4KCQk8L3A+Cgk8L2Rpdj4KCgoKeyRmb3JtX2VuZH0K]]></data>
	</file>
</module>
