Q29udGVudC1sYW5ndWFnZTogY3MKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMgpCb2R5Oi0tLS0tLS0tLS1jcy0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImNzIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTIiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJQ+O1zdHVwIG9kbe10bnV0ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgTmVt4XRlIHBy4XZvIHBybyBw+O1zdHVwIGRvIHBvvmFkb3ZhbulobyBhZHJlc+H4ZS4gQnXvIG5lZXhpc3R1amUgvuFkbv0KICAgIGRva3VtZW50IHMmbmJzcDtvYnNhaGVtICh0enYuIGluZGV4KSwgbmVibyBqZSBhZHJlc+H4IGNocuFu7G4gcHJvdGkg6HRlbu0uCgogIDwhLS0jZWxzZSAtLT4KCiAgICBOZW3hdGUgcHLhdm8gcHJvIHD47XN0dXAgayZuYnNwO3BvvmFkb3ZhbultdSBvYmpla3R1LgogICAgQnXvIGplIGNocuFu7G4gcHJvdGkg6HRlbu0sIG5lYm8gbmVu7SBzZXJ2ZXJlbSDoaXRlbG79LgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tY3MtLQoKQ29udGVudC1sYW5ndWFnZTogZGUKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1kZS0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImRlIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iWnVncmlmZiB2ZXJ3ZWlnZXJ0ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgRGVyIFp1Z3JpZmYgYXVmIGRhcyBhbmdlZm9yZGVydGUgVmVyemVpY2huaXMgaXN0IG5pY2h0IG0mb3VtbDtnbGljaC4KICAgIEVudHdlZGVyIGlzdCBrZWluIEluZGV4LURva3VtZW50IHZvcmhhbmRlbiBvZGVyIGRhcyBWZXJ6ZWljaG5pcwogICAgaXN0IHp1Z3JpZmZzZ2VzY2gmdXVtbDt0enQuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBEZXIgWnVncmlmZiBhdWYgZGFzIGFuZ2Vmb3JkZXJ0ZSBPYmpla3QgaXN0IG5pY2h0IG0mb3VtbDtnbGljaC4KICAgIEVudHdlZGVyIGthbm4gZXMgdm9tIFNlcnZlciBuaWNodCBnZWxlc2VuIHdlcmRlbiBvZGVyIGVzCiAgICBpc3QgenVncmlmZnNnZXNjaCZ1dW1sO3R6dC4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWRlLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGVuCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZW4tLQo8IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWNjZXNzIGZvcmJpZGRlbiEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSByZXF1ZXN0ZWQgZGlyZWN0b3J5LgogICAgVGhlcmUgaXMgZWl0aGVyIG5vIGluZGV4IGRvY3VtZW50IG9yIHRoZSBkaXJlY3RvcnkgaXMgcmVhZC1wcm90ZWN0ZWQuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUgcmVxdWVzdGVkIG9iamVjdC4KICAgIEl0IGlzIGVpdGhlciByZWFkLXByb3RlY3RlZCBvciBub3QgcmVhZGFibGUgYnkgdGhlIHNlcnZlci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWVuLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGVzCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZXMtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJlcyIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IiZpZXhjbDtBY2Nlc28gcHJvaGliaWRvISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgVXN0ZWQgbm8gdGllbmUgcGVybWlzbyBwYXJhIGFjY2VzYXIgYSBsYSBkaXJlY2NpJm9hY3V0ZTtuCiAgICBzb2xpY2l0YWRhLiBFeGlzdGUgbGEgcG9zaWJpbGlkYWQgZGUgcXVlIGVsIGRpcmVjdG9yaW8KICAgIGVzdGUgcHJvdGVnaWRvIGNvbnRyYSBsZWN0dXJhIG8gcXVlIG5vIGV4aXN0YSBsYQogICAgZG9jdW1lbnRhY2kmb2FjdXRlO24gcmVxdWVyaWRhLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgVXN0ZWQgbm8gdGllbmUgcGVybWlzbyBkZSBhY2Nlc2FyIGFsIG9iamV0byBzb2xpY2l0YWRvLgogICAgRXhpc3RlIGxhIHBvc2liaWxpZGFkIGRlIHF1ZSBlc3RlIHByb3RlZ2lkbyBjb250cmEKICAgIGxlY3R1cmEgbyBxdWUgbm8gaGF5YSBwb2RpZG8gc2VyIGxlaWRvIHBvciBlbCBzZXJ2aWRvci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWVzLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGZyCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZnItLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJmciIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjYyZlZ3JhdmU7cyBpbnRlcmRpdCEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIFZvdXMgbidhdmV6IHBhcyBsZSBkcm9pdCBkJ2FjYyZlYWN1dGU7ZGVyIGF1IHImZWFjdXRlO3BlcnRvaXJlCiAgICBkZW1hbmQmZWFjdXRlOy4gU29pdCBpbCBuJ3kgYSBwYXMgZGUgZG9jdW1lbnQgaW5kZXggc29pdCBsZSByJmVhY3V0ZTtwZXJ0b2lyZQogICAgZXN0IHByb3QmZWFjdXRlO2cmZWFjdXRlOy4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIFZvdXMgbidhdmV6IHBhcyBsZSBkcm9pdCBkJ2FjYyZlYWN1dGU7ZGVyICZhZ3JhdmU7IGwnb2JqZXQKICAgIGRlbWFuZCZlYWN1dGU7LiBTb2l0IGNlbHVpLWNpIGVzdCBwcm90JmVhY3V0ZTtnJmVhY3V0ZTssIHNvaXQgaWwgbmUgcGV1dAogICAgJmVjaXJjO3RyZSBsdSBwYXIgbGUgc2VydmV1ci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWZyLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGdhCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZ2EtLQo8IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iUm9jaHRhaW4gbmVhbWgtY2hlYWRhaXRoZSEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIE4maWFjdXRlO2wgY2VhZCBhZ2F0IHJvY2h0YWluIGEgZGgmZWFjdXRlO2FuYW1oIGFyIGFuIGNvbWhhZGxhbm4gZmFvaQogICAgaWFycmF0YWlzLiAgSXMgZiZlYWN1dGU7aWRpciBuYWNoIGJoZnVpbCBhb24gZG9pY2ltJmVhY3V0ZTthZAogICAgaW5uJmVhY3V0ZTthY3MsIG4mb2FjdXRlOyBnbyBiaGZ1aWwgY29zYWludCBhciBsJmVhY3V0ZTttaCBhbiBjb21oYWRsYW5uLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgTiZpYWN1dGU7bCBjZWFkIGFnYXQgcm9jaHRhaW4gYSBkaCZlYWN1dGU7YW5hbWggYXIgYW4gYWlkaG0gZmFvaSBpYXJyYXRhaXMuCiAgICBJcyBmJmVhY3V0ZTtpZGlyIGdvIGJoZnVpbCBjb3NhaW50IGFyIGwmZWFjdXRlOyBhaXIsIG4mb2FjdXRlOyBnbyBiaGZ1aWwKICAgIHMmZWFjdXRlIGRvbCZlYWN1dGU7aXRlIGRvbiBmcmVhc3RhbGEmaWFjdXRlOy4KICAgIAogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1nYS0tCgpDb250ZW50LWxhbmd1YWdlOiBpdApDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLS0tLWl0LS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0iaXQiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJBY2Nlc3NvIG5lZ2F0byEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgTm9uIGRpc3BvbmkgZGVpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgYWNjZWRlcmUgYWxsYQogICBkaXJlY3RvcnkgcmljaGllc3RhIG9wcHVyZSBub24gZXNpc3RlIGlsIGRvY3VtZW50byBpbmRpY2UuCgogIDwhLS0jZWxzZSAtLT4KCiAgIE5vbiBkaXNwb25pIGRlaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIGFjY2VkZXJlIGFsbCdvZ2dldHRvCiAgIHJpY2hpZXN0bywgb3BwdXJlIGwnb2dnZXR0byBub24gcHUmb2dyYXZlOyBlc3NlcmUgbGV0dG8gZGFsIHNlcnZlci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWl0LS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGphCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy0yMDIyLUpQCkJvZHk6LS0tLS0tLS0tLWphLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0iamEiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iaXNvLTIwMjItanAiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJBY2Nlc3MgZm9yYmlkZGVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgGyRCTVc1YSQ1JGwkPyVHJSMlbCUvJUglaiRYJE4lIiUvJTslOTgiOEIkLCQiJGokXiQ7JHMhIxsoQgogICAgGyRCJSQlcyVHJUMlLyU5JUklLSVlJWElcyVIJCxCODpfJDckSiQkJCshIhsoQgogICAgGyRCJUclIyVsJS8lSCVqJE5GSSRfOX4kXyQsNXYyRCQ1JGwkRiQkJF4kOyRzISMbKEIKCiAgPCEtLSNlbHNlIC0tPgoKICAgIBskQk1XNWEkNSRsJD8lKiVWJTglJyUvJUgkWCROJSIlLyU7JTk4IiQsJCIkaiReJDskcyEjGyhCCiAgICAbJEJGSSRfOX4kXyQsNXYyRCQ1JGwkRiQkJEokJCQrISIbKEIKICAgIBskQiU1ITwlUCQsRkkkXzl+JF8kSzw6R1QkNyQ/JCskRyQ3JGckJiEjGyhCCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1qYS0tCgpDb250ZW50LWxhbmd1YWdlOiBrbwpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1FVUMtS1IKQm9keTotLS0tLS0tLS0ta28tLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJrbyIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IsGisdnAzCCwxbrOtcohIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IkVVQy1LUiIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICC/5MO7x9EgtfC3usXkuK6/oSDBorHZx9IgvPYgwNa0wiCxx8fRwMwgvvi9wLTPtNkuCiAgILXwt7rF5Liuv6Egw7kgxuTAzMH2sKEgvviwxbOqIL7GtM+46SDA0LHiILq4yKOwoSC1x77uIMDWvcC0z7TZLgoKICA8IS0tI2Vsc2UgLS0+CgogICC/5MO7x9EgsLTDvL+hIMGisdnH0iC89iDA1rTCILHHx9HAzCC++L3AtM+02S4KICAgwNCx4iC6uMijsKEgtce+7iDA1rDFs6ogwKW8rbn2sKEgwNDAuyC89iC++LW1t88gtce+7iDA1r3AtM+02S4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWtvLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IG5sCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tbmwtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJubCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IlRvZWdhbmcgdmVyYm9kZW4hIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgIFUgaGVidCBuaWV0IGRlIHRvZXN0ZW1taW5nIG9tIHRvZWdhbmcgdGUga3JpamdlbiB0b3QgZGUgZ2V2cmFhZ2RlIG1hcC4KICAgRXIgaXMgb2Ygd2VsIGdlZW4gaW5kZXggZG9jdW1lbnQgb2YgZGUgbWFwIGlzIGJldmVpbGlnZCB0ZWdlbiBsZXplbi4KCiAgPCEtLSNlbHNlIC0tPgoKICAgVSBoZWJ0IG5pZXQgZGUgdG9lc3RlbW1pbmcgb20gdG9lZ2FuZyB0ZSBrcmlqZ2VuIHRvdCBkZSBnZXZyYWFnZGUgbWFwLgogICBEaWUgaXMgb2Z3ZWwgYmV2ZWlsaWdkIHRlZ2VuIGxlemVuIG9mIG9ubGVlc2JhYXIgZG9vciBkZSBzZXJ2ZXIuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1ubC0tCgpDb250ZW50LWxhbmd1YWdlOiBwbApDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0yCkJvZHk6LS0tLS0tLS0tLXBsLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0icGwiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJaYWJyb25pb255IGRvc3TqcCEiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iSVNPLTg4NTktMiIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgTmllIG1hc3ogcHJhd2EgZG9zdOpwdSBkbyC/sWRhbmVnbyBrYXRhbG9ndS4gVyBrYXRhbG9ndSBuaWUKICAgIG1hIGluZGVrc3UgbHViIGthdGFsb2cgamVzdCB6YWJlenBpZWN6b255IHByemVkIG9kY3p5dGVtLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgTmllIG1hc3ogZG9zdOpwdSBkbyC/sWRhbmVnbyBvYmlla3R1LiBKZXN0IG9uIHphYmV6cGllY3pvbnkKICAgIHByemVkIG9kY3p5dGVtIGx1YiBuaWUgbW+/ZSBieeYgb2Rjenl0YW55IHByemV6IHNlcndlci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLXBsLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IHB0LWJyCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tcHQtYnItLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJwdC1iciIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IkFjZXNzbyBQcm9pYmlkbyEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgVm9jJmVjaXJjOyBuJmF0aWxkZTtvIHRlbSBwZXJtaXNzJmF0aWxkZTtvIHBhcmEgYWNlc3NhciBvIAogICBkaXJldCZvYWN1dGU7cmlvIHJlcXVpc2l0YWRvLgogICBQb2RlIG4mYXRpbGRlO28gZXhpc3RpciBvIGFycXVpdm8gZGUgJmlhY3V0ZTtuZGljZSBvdSAKICAgbyBkaXJldCZvYWN1dGU7cmlvIHBvZGUgZXN0YXIgcHJvdGVnaWRvIGNvbnRyYSBsZWl0dXJhLgoKICA8IS0tI2Vsc2UgLS0+CgogICBWb2MmZWNpcmM7IG4mYXRpbGRlO28gdGVtIHByZW1pc3MmYXRpbGRlO28gcGFyYSBhY2Vzc2FyIG8gCiAgIG9iamV0byByZXF1aXNpdGFkby4gRWxlIHBvZGUgZXN0YXIgcHJvdGVnaWRvIGNvbnRyYSBsZWl0dXJhIG91IAogICBuJmF0aWxkZTtvIHNlciBsZWcmaWFjdXRlO3ZlbCBwZWxvIHNlcnZpZG9yLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tcHQtYnItLQoKQ29udGVudC1sYW5ndWFnZTogcm8KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1yby0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InJvIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWNjZXN1bCBpbnRlcnppcyEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIE51IGF2ZXRpIHBlcm1pc2l1bmVhIHNhIGFjY2VzYXRpIGRpcmVjdG9ydWwgY2VydXQuCiAgICBOdSBlc3RlIG5pY2kgdW4gZG9jdW1lbnQgaW5kZXggc2F1IGRpcmVjdG9ydWwgZXN0ZSBwcm90ZWphdCBsYSBjaXRpcmUuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBOdSBhdmV0aSBwZXJtaXNpdW5lYSBzYSBhY2Nlc2F0aSBvYmllY3R1bCBjZXJ1dC4KICAgIEVzdGUgcHJvdGVqYXQgbGEgY2l0aXJlIHNhdSBudSBwb2F0ZSBmaSBjaXRpdCBkZSBzZXJ2ZXIuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1yby0tCgpDb250ZW50LWxhbmd1YWdlOiBzcgpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS01CkJvZHk6LS0tLS0tLS0tLXNyLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0ic3IiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iSVNPLTg4NTktNSIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IrfQ0eDQ+tXdIN/g2OHi498hIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogIDwhLS0jaWYgZXhwcj0iJFJFRElSRUNUX1VSTCA9IC9cLyQvIiAtLT4KCiAgICC91dzQ4tUg1N7X0t7b4yDU0CDf4Njh4uPf2OLVINfQ5eLV0tDd3twg1Njg1dri3uDY+OPc4y4KICAgILze0+P71SD41SDU0CDd1dzQINjd1NXa4d3e0yDU3trj3NXd4tAsINjb2CDU0CD41SDU2ODV2uLe4Nj449wg19Do4tj71d0g3tQg59ji0PrQLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgvdXc0OLVINTe19Le2+Mg1NAg3+DY4eLj39ji1SDX0OXi1dLQ3d7cIN7R+NXa4uMuCiAgICC83tPj+9Ug+NUg1NAg+NUg19Do4tj71d0g3tQg59ji0PrQLCDY29gg1NAg09Ag4dXg0tXgIN3VINze1tUg3+De59ji0OLYLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tc3ItLQoKQ29udGVudC1sYW5ndWFnZTogc3YKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1zdi0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InN2IgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iJkFyaW5nO3Rrb21zdCBmJm91bWw7cmJqdWRlbiEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgPCEtLSNpZiBleHByPSIkUkVESVJFQ1RfVVJMID0gL1wvJC8iIC0tPgoKICAgIER1IGhhciBpbnRlIHRpbGxyJmF1bWw7Y2tsaWdhIHImYXVtbDt0dGlnaGV0ZXIgZiZvdW1sO3IgYXR0IGYmYXJpbmc7CiAgICB0aWxsZyZhcmluZztuZyB0aWxsIGRlbiAmb3VtbDtuc2thZGUga2F0YWxvZ2VuLiBEZXQgZXhpc3RlcmFyIGluZ2V0CiAgICBpbmRleGRva3VtZW50IGVsbGVyIHMmYXJpbmc7ICZhdW1sO3Iga2F0YWxvZ2VuIGwmYXVtbDtzc2t5ZGRhZC4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIER1IGhhciBpbnRlIHRpbGxyJmF1bWw7Y2tsaWdhIHImYXVtbDt0dGlnaGV0ZXIgZiZvdW1sO3IgYXR0IGYmYXJpbmc7CiAgICB0aWxsZyZhcmluZztuZyB0aWxsIGRldCAmb3VtbDtuc2thZGUgb2JqZWt0ZXQuIE9iamVrdGV0ICZhdW1sO3IKICAgIGwmYXVtbDtzc2t5ZGRhdCBlbGxlciBpbnRlIGwmYXVtbDtzYmFydCBmJm91bWw7ciBzZXJ2ZXJuLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tc3YtLQoKQ29udGVudC1sYW5ndWFnZTogdHIKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktOQpCb2R5Oi0tLS0tLS0tLS10ci0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InRyIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTkiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJBY2Nlc3MgZm9yYmlkZGVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICA8IS0tI2lmIGV4cHI9IiRSRURJUkVDVF9VUkwgPSAvXC8kLyIgLS0+CgogICAgVGFsZXAgZXR0aSYjMjg3O2luaXogZGl6aW5lIGVyaSYjMzUxO2ltIGl6bmluaXogeW9rLgogICAgWWEgYmVsaXJ0ZecgZG9r/G1hbiB5b2ssIHlhIGRhIGRpemluIG9rdW1heWEga2FyJiMzNTE7JiMzMDU7IGtvcnVtYWwmIzMwNTsuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBUYWxlcCBldHRpJiMyODc7aW5peiBkaXppbmUgZXJpJiMzNTE7aW0gaXpuaW5peiB5b2suCiAgICBEaXppbiwgeWEgb2t1bWF5YSBrYXImIzM1MTsmIzMwNTsga29ydW1hbCYjMzA1OywgeWEgZGEgc3VudWN1IHRhcmFmP25kYW4KICAgIG9rdW5hbSYjMzA1O3lvci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLXRyLS0K