Q29udGVudC1sYW5ndWFnZTogY3MKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMgpCb2R5Oi0tLS0tLS0tLS1jcy0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImNzIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTIiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJQ+O1zdHVwIG9kbe10bnV0ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgTmVt4XRlIHBy4XZvIHBybyBw+O1zdHVwIGRvIHBvvmFkb3ZhbulobyBhZHJlc+H4ZS4gQnXvIG5lZXhpc3R1amUgvuFkbv0KICAgIGRva3VtZW50IHMmbmJzcDtvYnNhaGVtICh0enYuIGluZGV4KSwgbmVibyBqZSBhZHJlc+H4IGNocuFu7G4gcHJvdGkg6HRlbu0uCgogIDwhLS0jZWxzZSAtLT4KCiAgICBOZW3hdGUgcHLhdm8gcHJvIHD47XN0dXAgayZuYnNwO3BvvmFkb3ZhbultdSBvYmpla3R1LgogICAgQnXvIGplIGNocuFu7G4gcHJvdGkg6HRlbu0sIG5lYm8gbmVu7SBzZXJ2ZXJlbSDoaXRlbG79LgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tY3MtLQoKQ29udGVudC1sYW5ndWFnZTogZGUKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1kZS0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImRlIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iWnVncmlmZiB2ZXJ3ZWlnZXJ0ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgRGVyIFp1Z3JpZmYgYXVmIGRhcyBhbmdlZm9yZGVydGUgVmVyemVpY2huaXMgaXN0IG5pY2h0IG0mb3VtbDtnbGljaC4KICAgIEVudHdlZGVyIGlzdCBrZWluIEluZGV4LURva3VtZW50IHZvcmhhbmRlbiBvZGVyIGRhcyBWZXJ6ZWljaG5pcwogICAgaXN0IHp1Z3JpZmZzZ2VzY2gmdXVtbDt0enQuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBEZXIgWnVncmlmZiBhdWYgZGFzIGFuZ2Vmb3JkZXJ0ZSBPYmpla3QgaXN0IG5pY2h0IG0mb3VtbDtnbGljaC4KICAgIEVudHdlZGVyIGthbm4gZXMgdm9tIFNlcnZlciBuaWNodCBnZWxlc2VuIHdlcmRlbiBvZGVyIGVzCiAgICBpc3QgenVncmlmZnNnZXNjaCZ1dW1sO3R6dC4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWRlLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGVuCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZW4tLQo8IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWNjZXNzIGZvcmJpZGRlbiEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXF1ZXN0ZWQgZGlyZWN0b3J5LgogICAgVGhlcmUgaXMgZWl0aGVyIG5vIGluZGV4IGRvY3VtZW50IG9yIHRoZSBkaXJlY3RvcnkgaXMgcmVhZC1wcm90ZWN0ZWQuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVxdWVzdGVkIG9iamVjdC4KICAgIEl0IGlzIGVpdGhlciByZWFkLXByb3RlY3RlZCBvciBub3QgcmVhZGFibGUgYnkgdGhlIHNlcnZlci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWVuLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGVzCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sCkJvZHk6LS0tLS0tLS0tLWVzLS0KPCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjY2VzbyBwcm9oaWJpZG8hIiAtLT4KPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgICAgVXN0ZWQgbm8gdGllbmUgcGVybWlzbyBwYXJhIGFjY2VzYXIgYWwgZGlyZWN0b3JpbyBzb2xpY2l0YWRvLgogICAgICBObyBleGlzdGUgdW4gZG9jdW1lbnRvICZpYWN1dGU7bmRpY2UsIG8gZWwgZGlyZWN0b3JpbyBlc3QmYWFjdXRlOwogICAgICBwcm90ZWdpZG8gY29udHJhIGxlY3R1cmEuCgogIDwhLS0jZWxzZSAtLT4KCiAgICAgIFVzdGVkIG5vIHRpZW5lIHBlcm1pc28gZGUgYWNjZXNhciBhbCBvYmpldG8gc29saWNpdGFkby4KICAgICAgRWwgb2JqZXRvIGVzdCZhYWN1dGU7IHByb3RlZ2lkbyBjb250cmEgbGVjdHVyYSwgbyBubwogICAgICBwdWVkZSBzZXIgbGVpZG8gcG9yIGVsIHNlcnZpZG9yLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tZXMtLQoKQ29udGVudC1sYW5ndWFnZTogZnIKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1mci0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImZyIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWNjJmVncmF2ZTtzIGludGVyZGl0ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgVm91cyBuJ2F2ZXogcGFzIGxlIGRyb2l0IGQnYWNjJmVhY3V0ZTtkZXIgYXUgciZlYWN1dGU7cGVydG9pcmUKICAgIGRlbWFuZCZlYWN1dGU7LiBTb2l0IGlsIG4neSBhIHBhcyBkZSBkb2N1bWVudCBpbmRleCBzb2l0IGxlIHImZWFjdXRlO3BlcnRvaXJlCiAgICBlc3QgcHJvdCZlYWN1dGU7ZyZlYWN1dGU7LgoKICA8IS0tI2Vsc2UgLS0+CgogICAgVm91cyBuJ2F2ZXogcGFzIGxlIGRyb2l0IGQnYWNjJmVhY3V0ZTtkZXIgJmFncmF2ZTsgbCdvYmpldAogICAgZGVtYW5kJmVhY3V0ZTsuIFNvaXQgY2VsdWktY2kgZXN0IHByb3QmZWFjdXRlO2cmZWFjdXRlOywgc29pdCBpbCBuZSBwZXV0CiAgICAmZWNpcmM7dHJlIGx1IHBhciBsZSBzZXJ2ZXVyLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tZnItLQoKQ29udGVudC1sYW5ndWFnZTogZ2EKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1nYS0tCjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJSb2NodGFpbiBuZWFtaC1jaGVhZGFpdGhlISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgTiZpYWN1dGU7bCBjZWFkIGFnYXQgcm9jaHRhaW4gYSBkaCZlYWN1dGU7YW5hbWggYXIgYW4gY29taGFkbGFubiBmYW9pCiAgICBpYXJyYXRhaXMuICBJcyBmJmVhY3V0ZTtpZGlyIG5hY2ggYmhmdWlsIGFvbiBkb2ljaW0mZWFjdXRlO2FkCiAgICBpbm4mZWFjdXRlO2FjcywgbiZvYWN1dGU7IGdvIGJoZnVpbCBjb3NhaW50IGFyIGwmZWFjdXRlO21oIGFuIGNvbWhhZGxhbm4uCgogIDwhLS0jZWxzZSAtLT4KCiAgICBOJmlhY3V0ZTtsIGNlYWQgYWdhdCByb2NodGFpbiBhIGRoJmVhY3V0ZTthbmFtaCBhciBhbiBhaWRobSBmYW9pIGlhcnJhdGFpcy4KICAgIElzIGYmZWFjdXRlO2lkaXIgZ28gYmhmdWlsIGNvc2FpbnQgYXIgbCZlYWN1dGU7IGFpciwgbiZvYWN1dGU7IGdvIGJoZnVpbAogICAgcyZlYWN1dGUgZG9sJmVhY3V0ZTtpdGUgZG9uIGZyZWFzdGFsYSZpYWN1dGU7LgogICAgCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWdhLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGl0CkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0taXQtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJpdCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjY2Vzc28gbmVnYXRvISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICBOb24gZGlzcG9uaSBkZWkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBhY2NlZGVyZSBhbGxhCiAgIGRpcmVjdG9yeSByaWNoaWVzdGEgb3BwdXJlIG5vbiBlc2lzdGUgaWwgZG9jdW1lbnRvIGluZGljZS4KCiAgPCEtLSNlbHNlIC0tPgoKICAgTm9uIGRpc3BvbmkgZGVpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgYWNjZWRlcmUgYWxsJ29nZ2V0dG8KICAgcmljaGllc3RvLCBvcHB1cmUgbCdvZ2dldHRvIG5vbiBwdSZvZ3JhdmU7IGVzc2VyZSBsZXR0byBkYWwgc2VydmVyLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0taXQtLQoKQ29udGVudC1sYW5ndWFnZTogamEKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTIwMjItSlAKQm9keTotLS0tLS0tLS0tamEtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJqYSIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJpc28tMjAyMi1qcCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjY2VzcyBmb3JiaWRkZW4hIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgICAbJEJNVzVhJDUkbCQ/JUclIyVsJS8lSCVqJFgkTiUiJS8lOyU5OCI4QiQsJCIkaiReJDskcyEjGyhCCiAgICAbJEIlJCVzJUclQyUvJTklSSUtJWUlYSVzJUgkLEI4Ol8kNyRKJCQkKyEiGyhCCiAgICAbJEIlRyUjJWwlLyVIJWokTkZJJF85fiRfJCw1djJEJDUkbCRGJCQkXiQ7JHMhIxsoQgoKICA8IS0tI2Vsc2UgLS0+CgogICAgGyRCTVc1YSQ1JGwkPyUqJVYlOCUnJS8lSCRYJE4lIiUvJTslOTgiJCwkIiRqJF4kOyRzISMbKEIKICAgIBskQkZJJF85fiRfJCw1djJEJDUkbCRGJCQkSiQkJCshIhsoQgogICAgGyRCJTUhPCVQJCxGSSRfOX4kXyRLPDpHVCQ3JD8kKyRHJDckZyQmISMbKEIKCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWphLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGtvCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUVVQy1LUgpCb2R5Oi0tLS0tLS0tLS1rby0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImtvIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iwaKx2cDMILDFus61yiEiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iRVVDLUtSIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgIL/kw7vH0SC18Le6xeS4rr+hIMGisdnH0iC89iDA1rTCILHHx9HAzCC++L3AtM+02S4KICAgtfC3usXkuK6/oSDDuSDG5MDMwfawoSC++LDFs6ogvsa0z7jpIMDQseIgurjIo7ChILXHvu4gwNa9wLTPtNkuCgogIDwhLS0jZWxzZSAtLT4KCiAgIL/kw7vH0SCwtMO8v6EgwaKx2cfSILz2IMDWtMIgscfH0cDMIL74vcC0z7TZLgogICDA0LHiILq4yKOwoSC1x77uIMDWsMWzqiDApbytufawoSDA0MC7ILz2IL74tbW3zyC1x77uIMDWvcC0z7TZLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0ta28tLQoKQ29udGVudC1sYW5ndWFnZTogbmwKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1ubC0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9Im5sIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iVG9lZ2FuZyB2ZXJib2RlbiEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgVSBoZWJ0IG5pZXQgZGUgdG9lc3RlbW1pbmcgb20gdG9lZ2FuZyB0ZSBrcmlqZ2VuIHRvdCBkZSBnZXZyYWFnZGUgbWFwLgogICBFciBpcyBvZiB3ZWwgZ2VlbiBpbmRleCBkb2N1bWVudCBvZiBkZSBtYXAgaXMgYmV2ZWlsaWdkIHRlZ2VuIGxlemVuLgoKICA8IS0tI2Vsc2UgLS0+CgogICBVIGhlYnQgbmlldCBkZSB0b2VzdGVtbWluZyBvbSB0b2VnYW5nIHRlIGtyaWpnZW4gdG90IGRlIGdldnJhYWdkZSBtYXAuCiAgIERpZSBpcyBvZndlbCBiZXZlaWxpZ2QgdGVnZW4gbGV6ZW4gb2Ygb25sZWVzYmFhciBkb29yIGRlIHNlcnZlci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLW5sLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IHBsCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTIKQm9keTotLS0tLS0tLS0tcGwtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJwbCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IlphYnJvbmlvbnkgZG9zdOpwISIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJJU08tODg1OS0yIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgICBOaWUgbWFzeiBwcmF3YSBkb3N06nB1IGRvIL+xZGFuZWdvIGthdGFsb2d1LiBXIGthdGFsb2d1IG5pZQogICAgbWEgaW5kZWtzdSBsdWIga2F0YWxvZyBqZXN0IHphYmV6cGllY3pvbnkgcHJ6ZWQgb2Rjenl0ZW0uCgogIDwhLS0jZWxzZSAtLT4KCiAgICBOaWUgbWFzeiBkb3N06nB1IGRvIL+xZGFuZWdvIG9iaWVrdHUuIEplc3Qgb24gemFiZXpwaWVjem9ueQogICAgcHJ6ZWQgb2Rjenl0ZW0gbHViIG5pZSBtb79lIGJ55iBvZGN6eXRhbnkgcHJ6ZXogc2Vyd2VyLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tcGwtLQoKQ29udGVudC1sYW5ndWFnZTogcHQtYnIKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS1wdC1ici0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InB0LWJyIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWNlc3NvIFByb2liaWRvISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICBWb2MmZWNpcmM7IG4mYXRpbGRlO28gdGVtIHBlcm1pc3MmYXRpbGRlO28gcGFyYSBhY2Vzc2FyIG8gCiAgIGRpcmV0Jm9hY3V0ZTtyaW8gcmVxdWlzaXRhZG8uCiAgIFBvZGUgbiZhdGlsZGU7byBleGlzdGlyIG8gYXJxdWl2byBkZSAmaWFjdXRlO25kaWNlIG91IAogICBvIGRpcmV0Jm9hY3V0ZTtyaW8gcG9kZSBlc3RhciBwcm90ZWdpZG8gY29udHJhIGxlaXR1cmEuCgogIDwhLS0jZWxzZSAtLT4KCiAgIFZvYyZlY2lyYzsgbiZhdGlsZGU7byB0ZW0gcGVybWlzcyZhdGlsZGU7byBwYXJhIGFjZXNzYXIgbyAKICAgb2JqZXRvIHJlcXVpc2l0YWRvLiBFbGUgcG9kZSBlc3RhciBwcm90ZWdpZG8gY29udHJhIGxlaXR1cmEgb3UgCiAgIG4mYXRpbGRlO28gc2VyIGxlZyZpYWN1dGU7dmVsIHBlbG8gc2Vydmlkb3IuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS1wdC1ici0tCgpDb250ZW50LWxhbmd1YWdlOiBwdApDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLS0tLXB0LS0KPCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjZXNzbyBwcm9pYmlkbyEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKCU4mYXRpbGRlO28gdGVtIHBlcm1pc3MmYXRpbGRlO28gcGFyYSBhY2VkZXIgYW8gZGlyZWN0Jm9hY3V0ZTtyaW8KCXF1ZSBkZXNlamEuIE91IG4mYXRpbGRlO28gZXhpc3RlIG8gZG9jdW1lbnRvIGRlICZpYWN1dGU7bmRpY2UKCW91IG8gZGlyZWN0Jm9hY3V0ZTtyaW8gZXN0JmFhY3V0ZTsgcHJvdGVnaWRvIGNvbnRyYSBsZWl0dXJhLgoKICA8IS0tI2Vsc2UgLS0+CgoJTiZhdGlsZGU7byB0ZW0gcGVybWlzcyZhdGlsZGU7byBwYXJhIGFjZWRlciBhbyBvYmplY3RvCglxdWUgZGVzZWphLiBFc3RlIGVzdCZhYWN1dGU7IHByb3RlZ2lkbyBjb250cmEgbGVpdHVyYSBvdQoJbyBzZXJ2aWRvciBuJmF0aWxkZTtvIG8gY29uc2VndWUgbGVyLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tcHQtLQoKQ29udGVudC1sYW5ndWFnZTogcm8KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1yby0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InJvIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWNjZXN1bCBpbnRlcnppcyEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIE51IGF2ZXRpIHBlcm1pc2l1bmVhIHNhIGFjY2VzYXRpIGRpcmVjdG9ydWwgY2VydXQuCiAgICBOdSBlc3RlIG5pY2kgdW4gZG9jdW1lbnQgaW5kZXggc2F1IGRpcmVjdG9ydWwgZXN0ZSBwcm90ZWphdCBsYSBjaXRpcmUuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBOdSBhdmV0aSBwZXJtaXNpdW5lYSBzYSBhY2Nlc2F0aSBvYmllY3R1bCBjZXJ1dC4KICAgIEVzdGUgcHJvdGVqYXQgbGEgY2l0aXJlIHNhdSBudSBwb2F0ZSBmaSBjaXRpdCBkZSBzZXJ2ZXIuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1yby0tCgpDb250ZW50LWxhbmd1YWdlOiBzcgpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS01CkJvZHk6LS0tLS0tLS0tLXNyLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0ic3IiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iSVNPLTg4NTktNSIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IrfQ0eDQ+tXdIN/g2OHi498hIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgICC91dzQ4tUg1N7X0t7b4yDU0CDf4Njh4uPf2OLVINfQ5eLV0tDd3twg1Njg1dri3uDY+OPc4y4KICAgILze0+P71SD41SDU0CDd1dzQINjd1NXa4d3e0yDU3trj3NXd4tAsINjb2CDU0CD41SDU2ODV2uLe4Nj449wg19Do4tj71d0g3tQg59ji0PrQLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgvdXc0OLVINTe19Le2+Mg1NAg3+DY4eLj39ji1SDX0OXi1dLQ3d7cIN7R+NXa4uMuCiAgICC83tPj+9Ug+NUg1NAg+NUg19Do4tj71d0g3tQg59ji0PrQLCDY29gg1NAg09Ag4dXg0tXgIN3VINze1tUg3+De59ji0OLYLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tc3ItLQoKQ29udGVudC1sYW5ndWFnZTogc3YKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1zdi0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InN2IgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iJkFyaW5nO3Rrb21zdCBmJm91bWw7cmJqdWRlbiEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIER1IGhhciBpbnRlIHRpbGxyJmF1bWw7Y2tsaWdhIHImYXVtbDt0dGlnaGV0ZXIgZiZvdW1sO3IgYXR0IGYmYXJpbmc7CiAgICB0aWxsZyZhcmluZztuZyB0aWxsIGRlbiAmb3VtbDtuc2thZGUga2F0YWxvZ2VuLiBEZXQgZXhpc3RlcmFyIGluZ2V0CiAgICBpbmRleGRva3VtZW50IGVsbGVyIHMmYXJpbmc7ICZhdW1sO3Iga2F0YWxvZ2VuIGwmYXVtbDtzc2t5ZGRhZC4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIER1IGhhciBpbnRlIHRpbGxyJmF1bWw7Y2tsaWdhIHImYXVtbDt0dGlnaGV0ZXIgZiZvdW1sO3IgYXR0IGYmYXJpbmc7CiAgICB0aWxsZyZhcmluZztuZyB0aWxsIGRldCAmb3VtbDtuc2thZGUgb2JqZWt0ZXQuIE9iamVrdGV0ICZhdW1sO3IKICAgIGwmYXVtbDtzc2t5ZGRhdCBlbGxlciBpbnRlIGwmYXVtbDtzYmFydCBmJm91bWw7ciBzZXJ2ZXJuLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tc3YtLQoKQ29udGVudC1sYW5ndWFnZTogdHIKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktOQpCb2R5Oi0tLS0tLS0tLS10ci0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InRyIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTkiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJBY2Nlc3MgZm9yYmlkZGVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgVGFsZXAgZXR0aSYjMjg3O2luaXogZGl6aW5lIGVyaSYjMzUxO2ltIGl6bmluaXogeW9rLgogICAgWWEgYmVsaXJ0ZecgZG9r/G1hbiB5b2ssIHlhIGRhIGRpemluIG9rdW1heWEga2FyJiMzNTE7JiMzMDU7IGtvcnVtYWwmIzMwNTsuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBUYWxlcCBldHRpJiMyODc7aW5peiBkaXppbmUgZXJpJiMzNTE7aW0gaXpuaW5peiB5b2suCiAgICBEaXppbiwgeWEgb2t1bWF5YSBrYXImIzM1MTsmIzMwNTsga29ydW1hbCYjMzA1OywgeWEgZGEgc3VudWN1IHRhcmFmP25kYW4KICAgIG9rdW5hbSYjMzA1O3lvci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLXRyLS0K