Q29udGVudC1sYW5ndWFnZTogY3MKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMgpCb2R5Oi0tLS0tLS0tLS1jcy0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImNzIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTIiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmpla3QgbmVuYWxlemVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIFBvvmFkb3ZhbukgVVJMIG5lYnlsbyBuYSB0b210byBzZXJ2ZXJ1IG5hbGV6ZW5vLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIFpk4SBzZSwgvmUgb2RrYXogbmEKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5vZGthenVq7WPtCiAgICBzdHLhbmNlPC9hPiBqZSBjaHlibv0gbmVibyB6YXN0YXJhbP0uIEluZm9ybXVqdGUsIHByb3PtbSwgYXV0b3JhCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+dOl0byBzdHLhbmt5PC9hPgogICAgbyZuYnNwO2NoeWLsLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgUG9rdWQganN0ZSB6YWRhbChhKSBVUkwgcnXobuwsIHprb250cm9sdWp0ZSwgcHJvc+1tLAogICAgemRhIGpzdGUgemFkYWwoYSkgVVJMIHNwcuF2buwsIGEgemt1c3RlIHRvIHpub3Z1LgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tY3MtLQoKQ29udGVudC1sYW5ndWFnZTogZGUKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1kZS0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImRlIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iT2JqZWt0IG5pY2h0IGdlZnVuZGVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIERlciBhbmdlZm9yZGVydGUgVVJMIGtvbm50ZSBhdWYgZGVtIFNlcnZlciBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4uCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgRGVyIExpbmsgYXVmIGRlcgogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPnZlcndlaXNlbmRlbgogICAgU2VpdGU8L2E+IHNjaGVpbnQgZmFsc2NoIG9kZXIgbmljaHQgbWVociBha3R1ZWxsIHp1IHNlaW4uCiAgICBCaXR0ZSBpbmZvcm1pZXJlbiBTaWUgZGVuIEF1dG9yCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+ZGllc2VyIFNlaXRlPC9hPgogICAgJnV1bWw7YmVyIGRlbiBGZWhsZXIuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBTb2Zlcm4gU2llIGRlbiBVUkwgbWFudWVsbCBlaW5nZWdlYmVuIGhhYmVuLAogICAgJnV1bWw7YmVycHImdXVtbDtmZW4gU2llIGJpdHRlIGRpZSBTY2hyZWlid2Vpc2UgdW5kIHZlcnN1Y2hlbiBTaWUgZXMgZXJuZXV0LgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tZGUtLQoKQ29udGVudC1sYW5ndWFnZTogZW4KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1lbi0tCjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmplY3Qgbm90IGZvdW5kISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhpcyBzZXJ2ZXIuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgVGhlIGxpbmsgb24gdGhlCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+cmVmZXJyaW5nCiAgICBwYWdlPC9hPiBzZWVtcyB0byBiZSB3cm9uZyBvciBvdXRkYXRlZC4gUGxlYXNlIGluZm9ybSB0aGUgYXV0aG9yIG9mCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+dGhhdCBwYWdlPC9hPgogICAgYWJvdXQgdGhlIGVycm9yLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91cgogICAgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWVuLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGVzCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sCkJvZHk6LS0tLS0tLS0tLWVzLS0KPCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9Ik9iamVjdG8gbm8gbG9jYWxpemFkbyEiIC0tPgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogICAgRWwgVVJMIHNvbGljaXRhZG8gbm8gaGEgc2lkbyBsb2NhbGl6YWRvIGVuIGVzdGUgc2Vydmlkb3IuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgRWwgVVJMIGRlIGxhIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiAKICAgIHZhcj0iSFRUUF9SRUZFUkVSIi0tPiI+cCZhYWN1dGU7Z2luYSBxdWUgbG8gcmVmaXJpJm9hY3V0ZTs8L2E+IAogICAgcGFyZWNlIHNlciBlcXVpdm9jYWRvIHUgb2Jzb2xldG8uIFBvciBmYXZvciBjb211bmlxdWUgYWwgYXV0b3IgCiAgICBkZSA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiLS0+Ij5lc2EKICAgIHAmYWFjdXRlO2dpbmE8L2E+IGFjZXJjYSBkZWwgZXJyb3IuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBTaSB1c3RlZCB0ZWNsZSZvYWN1dGU7IGVsIFVSTCBtYW51YWxtZW50ZSwgcG9yIGZhdm9yIHJldmlzZSBzdQogICAgb3J0b2dyYWYmaWFjdXRlO2EgeSB2dSZlYWN1dGU7bHZhbG8gYSBpbnRlbnRhci4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWVzLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGZyCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZnItLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJmciIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9Ik9iamV0IG5vbiB0cm91diZlYWN1dGU7ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIEwnVVJMIGRlbWFuZCZlYWN1dGU7ZSBuJ2EgcGFzIHB1ICZlY2lyYzt0cmUgdHJvdXYmZWFjdXRlO2Ugc3VyIGNlIHNlcnZldXIuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgTGEgciZlYWN1dGU7ZiZlYWN1dGU7cmVuY2Ugc3VyCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+bGEgcGFnZQogICAgY2l0JmVhY3V0ZTtlPC9hPgogICAgc2VtYmxlICZlY2lyYzt0cmUgZXJyb24mZWFjdXRlO2Ugb3UgcGVyaW0mZWFjdXRlO2UuIE5vdXMgdm91cyBwcmlvbnMKICAgIGQnaW5mb3JtZXIgbCdhdXRldXIgZGUKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5jZXR0ZSBwYWdlPC9hPgogICAgZGUgY2V0dGUgZXJyZXVyLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgU2kgdm91cyBhdmV6IHRhcCZlYWN1dGU7IGwnVVJMICZhZ3JhdmU7IGxhIG1haW4sIHZldWlsbGV6IHYmZWFjdXRlO3JpZmllcgogICAgbCdvcnRob2dyYXBoZSBldCByJmVhY3V0ZTtlc3NheWVyLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tZnItLQoKQ29udGVudC1sYW5ndWFnZTogZ2EgCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZ2EtLQo8IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iQWlkaG0gYXIgaWFycmFpZGghIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogICAgTiZpYWN1dGU7b3IgYWltc2lnaCBhbiBVUkwgaWFycmFpdGhlIGFyIGFuIGZocmVhc3RhbGEmaWFjdXRlOyBzZW8uCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgSXMgY29zJnVhY3V0ZTtpbCBnbyBiaGZ1aWwgYW4gbmFzYyBhciBhbgogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPmxlYXRoYW5hY2gKICAgIHRoYWdhcnRoYWNoPC9hPiBtJmlhY3V0ZTtjaGVhcnQgbiZvYWN1dGU7IGFzIGQmYWFjdXRlO3RhLiAKICAgIEN1ciBpbiBpJnVhY3V0ZTtsIGQnJnVhY3V0ZTthZGFyIAogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iCiAgICA+YW4gbGVhdGhhbmFjaCBzaW48L2E+IGdvIGJoZnVpbCBlYXJyJmFhY3V0ZTtpZCBhbm4sIGxlIGRvIHRob2lsLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgTSZhYWN1dGU7IGNodWlyIHQmdWFjdXRlOyBpc3RlYWNoIGFuIFVSTCB0JnVhY3V0ZTsgZiZlYWN1dGU7aW4sIGRlaW1obmlnaAogICAgZ28gYmhmdWlsIHMmZWFjdXRlOyBsaXRyaXRoZSBpIGdjZWFydCBhZ2F0LCBhZ3VzIGQmZWFjdXRlO2FuIGlhcnJhY2h0IGVpbGUKICAgIGxlIGRvIHRob2lsLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tZ2EtLQoKQ29udGVudC1sYW5ndWFnZTogaXQKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1pdC0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9Iml0IgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iT2dnZXR0byBub24gdHJvdmF0byEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICBMJ1VSTCByaWNoaWVzdG8gbm9uIGVzaXN0ZSBzdSBxdWVzdG8gc2VydmVyLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIElsIGxpbmsgZGVsbGEKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5wYWdpbmEgZGEgY3VpCiAgICBzZWkgYXJyaXZhdG88L2E+IHBvdHJlYmJlIGVzc2VyZSBlcnJhdG8gbyBub24gZXNzZXJlIHBpJnVncmF2ZTsgdmFsaWRvLgogICAgUGVyIGZhdm9yZSwgaW5mb3JtYSBkZWxsJ2Vycm9yZSBsJ2F1dG9yZSBkZWxsYQogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPnBhZ2luYTwvYT4uCgogIDwhLS0jZWxzZSAtLT4KCiAgICBTZSBoYWkgc2NyaXR0byBsJ1VSTCBhIG1hbm8sIHBlciBmYXZvcmUgY29udHJvbGxhIGNoZQogICAgbm9uIGNpIHNpYW5vIGVycm9yaS4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWl0LS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGphCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy0yMDIyLUpQCkJvZHk6LS0tLS0tLS0tLWphLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0iamEiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iaXNvLTIwMjItanAiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmplY3Qgbm90IGZvdW5kISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIBskQk1XNWEkNSRsJD8bKEIgVVJMIBskQiRPS1wlNSE8JVAkRyRPOCskRCQrJGokXiQ7JHMkRyQ3JD8hIxsoQgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiItLT4iPgogICAgGyRCOzI+SDg1JVohPCU4GyhCPC9hPhskQiROJWolcyUvJCw0VjBjJEMkRiQkJGskKyEiOEUkLyRKJEMkRiQ3JF4kQyRGJCQkayRoJCYkRyQ5ISMbKEIKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiItLT4iCiAgICA+GyRCJVohPCU4GyhCPC9hPhskQiROQ3g8VCRLJDMkTiUoJWkhPCRyJCpDTiRpJDsyPCQ1JCQhIxsoQgoKICA8IS0tI2Vsc2UgLS0+CgogICAgGyRCJGIkNzxqRn5OTyRHGyhCIFVSTCAbJEIkckZ+Tk8kNyQ/Pmw5ZyRPISJEViRqJHIzTkcnJDckRjpGRVkkKjtuJDcyPCQ1JCQhIxsoQgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tamEtLQoKQ29udGVudC1sYW5ndWFnZToga28KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9RVVDLUtSCkJvZHk6LS0tLS0tLS0tLWtvLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0ia28iCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSKwtMO8IL74wL0hIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IkVVQy1LUiIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIL/kw7vH0SBVUkzAuyDAzCC8rbn2v6G8rSDDo8C7ILz2IL74vcC0z7TZLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiItLT4iPsDMwPwKICAgIMbkwMzB9jwvYT6/oSDA1rTCILi1xamwoSDA37j4tce++rDFs6ogv8C3obXHvu4gvvi+7sH4ILDNILCwvcC0z7TZLgogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIi0tPiI+sdcgxuTAzMH2PC9hPrimCiAgICC4uLXnwMy/obDUIMDMILvnvcfAuyC+y7fBwda9w7HiILnZtvi0z7TZLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgVVJMwLsgwffBoiDA1LfCx8+8zLTZuOkgudm4o7DUIMDUt8LHz7zMtMLB9iDIrsDOx8+9w7DtILTZvcMgvcO1tcfPvcOx4gogICAgudm2+LTPtNkuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1rby0tCgpDb250ZW50LWxhbmd1YWdlOiBubApDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLS0tLW5sLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0ibmwiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmplY3QgbmlldCBnZXZvbmRlbiEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICBEZSBnZXZyYWFnZGUgVVJMIHdhcyBuaWV0IGdldm9uZGVuIG9wIGRlemUgc2VydmVyLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIERlIGxpbmsgb3AKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5kZXplIHBhZ2luYQogICAgcGFnaW5hPC9hPiBpcyB2ZXJrZWVyZCBvZiBhY2h0ZXJoYWFsZC4gR2VsaWV2ZSBkZSBhdXRldXIgdmFuCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+ZGllIHBhZ2luYTwvYT4KICAgIGluIHRlIGxpY2h0ZW4gb3ZlciBkZXplIGZvdXQuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBJbmRpZW4gdSBkZSBVUkwgbWFudWVlbCBoZWJ0IGluZ2V2dWxkLCBnZWxpZXZlIHV3CiAgICBzcGVsbGluZyB0ZSBjb250cm9sZXJlbiBlbiBwcm9iZWVyIG9wbmlldXcuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1ubC0tCgpDb250ZW50LWxhbmd1YWdlOiBwbApDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0yCkJvZHk6LS0tLS0tLS0tLXBsLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0icGwiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJOaWUgem5hbGV6aW9ubyBvYmlla3R1ISIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJJU08tODg1OS0yIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogICAgTmllIHpuYWxlemlvbm8gv7FkYW5lZ28gVVJMYSBuYSB0eW0gc2Vyd2VyemUuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgT2Rub7ZuaWsgbmEKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5yZWZlcnVqsWNlaiBzdHJvbmllCiAgICA8L2E+IHd5ZGFqZSBzaeogYnnmIG5pZXByYXdpZLNvd3kgbHViIG5pZWFrdHVhbG55LiBQb2luZm9ybXVqIGF1dG9yYQogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPnRlaiBzdHJvbnk8L2E+CiAgICBvIHByb2JsZW1pZS4KCiAgPCEtLSNlbHNlIC0tPgogICAgSmW2bGkgd3Bpc2GzZbYgVVJMYSBy6mN6bmllLCBzcHJhd2S8LCBjenkgbmllIHNp6iBuaWUgcG9teWxps2W2LgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tcGwtLQoKQ29udGVudC1sYW5ndWFnZTogcHQtYnIKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS1wdC1ici0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InB0LWJyIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iT2JqZXRvIG4mYXRpbGRlO28gZW5jb250cmFkbyEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICBBIFVSTCByZXF1aXNpdGFkYSBuJmF0aWxkZTtvIGZvaSBlbmNvbnRyYWRhIG5lc3RlIHNlcnZpZG9yLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIE8gbGluayBuYQogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPnAmYWFjdXRlO2dpbmEKICAgIHJlZmVyaWRhPC9hPiBwYXJlY2UgZXN0YXIgY29tIGFsZ3VtIGVycm8gb3UgZGVzYXR1YWxpemFkby4gUG9yIGZhdm9yIGluZm9ybWUgbwogICAgYXV0b3IgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPmRlc3RhIAogICAgcCZhYWN1dGU7Z2luYTwvYT4gc29icmUgbyBlcnJvLgoKICAgPCEtLSNlbHNlIC0tPgoKICAgIFNlIHZvYyZlY2lyYzsgZGlnaXRvdSBvIGVuZGVyZSZjY2VkaWw7byAoVVJMKSBtYW51YWxtZW50ZSwKICAgIHBvciBmYXZvciB2ZXJpZmlxdWUgbm92YW1lbnRlIGEgc2ludGF4ZSBkbyBlbmRlcmUmY2NlZGlsO28uCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS1wdC1ici0tCgpDb250ZW50LWxhbmd1YWdlOiBwdApDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLS0tLXB0LS0KPCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9Ik0mZWFjdXRlO3RvZG8gbiZhdGlsZGU7byBwZXJtaXRpZG8hIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgoJTyBtJmVhY3V0ZTt0b2RvIDwhLS0jZWNobyB2YXI9IlJFRElSRUNUX1JFUVVFU1RfTUVUSE9EIiAtLT4gbiZhdGlsZGU7bwoJJmVhY3V0ZTsgcGVybWl0aWRvIHBhcmEgbyBVUkwgcGVkaWRvLgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tcHQtLQoKQ29udGVudC1sYW5ndWFnZTogcm8KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1yby0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InJvIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iT2JpZWN0dWwgbnUgYSBmb3N0IGdhc2l0ISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIFVSTC11bCBjZXJ1dCBudSBhIGZvc3QgZ2FzaXQgcGUgYWNlc3Qgc2VydmVyLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIExpbmstdWwgZGUgcGUKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5wYWdpbmEKICAgIGRlIHVuZGUgYXRpIHZlbml0PC9hPiBwYXJlIGEgZmkgZ3Jlc2l0IHNhdSBpbnZlY2hpdC4gVmEgcnVnYW0gaW5mb3JtYXRpIGF1dG9ydWwKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5hY2VzdGVpIHBhZ2luaTwvYT4KICAgIGRlc3ByZSBlcm9hcmUuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBEYWNhIGF0aSBpbnRyb2R1cyBVUkwtdWwgbWFudWFsLCB2YSBydWdhbSB2ZXJpZmljYXRpCiAgICBjb3JlY3RpdHVkaW5lYSBzaSBpbmNlcmNhdGkgZGluIG5vdS4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLXJvLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IHNyCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTUKQm9keTotLS0tLS0tLS0tc3ItLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJzciIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJJU08tODg1OS01IgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0ivtH41drQ4iDd2PjVIN/g3t3Q8tXdISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgILfQ5eLV0tDd2CDDwLsg3dj41SDf4N7d0PLV3SDd0CDe0t7cIOHV4NLV4OMuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAguNfT29XU0CDU0CD41SDS1dfQIN3QCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+2OHl3tTY6N3e+AogICAg4eLg0N3Y5tg8L2E+IN/e0+DV6N3QINjb2CDX0OHi0ODV29AuILze29jc3iDe0dDS1eHi2OLVINDj4t7g0AogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPuLVIOHi4NDd2ObVPC9hPgogICAg3iDT4NXo5tguCgogIDwhLS0jZWxzZSAtLT4KCiAgICDD2t7b2NreIOHi1SDDwLsg493V29gg4OPn3d4sINze29jc3iDf4N7S1eDY4tUg3N7T4/vVCiAgICDT4NXo2tUg2CDf4N7R0Pji1SDf3t3e0t4uCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1zci0tCgpDb250ZW50LWxhbmd1YWdlOiBzdgpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLS0tLXN2LS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0ic3YiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmpla3RldCBoaXR0YXMgZWohIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogICAgRGVuIGVmdGVyZnImYXJpbmc7Z2FkZSBhZHJlc3NlbiBoaXR0YWRlcyBpbnRlIHAmYXJpbmc7IGRlbm5hIHNlcnZlci4KCiAgPCEtLSNpZiBleHByPSIkSFRUUF9SRUZFUkVSIiAtLT4KCiAgICBMJmF1bWw7bmtlbiBwJmFyaW5nOyBkZW4KICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij50aWRpZ2FyZSBzaWRhbjwvYT4gCiAgICB2ZXJrYXIgdmFyYSBmZWxha3RpZyBlbGxlciBpbmFrdHVlbGwuIFYmYXVtbDtubGlnZW4gaW5mb3JtZXJhIGYmb3VtbDtyZmF0dGFyZW4gYXYKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5zaWRhbjwvYT4KICAgIG9tIGZlbGV0LgoKICA8IS0tI2Vsc2UgLS0+CgogICAgT20gZHUgc2tyZXYgaW4gYWRyZXNzZW4gbWFudWVsbHQgcyZhcmluZzsga29udHJvbGxlcmEgZGluIHN0YXZuaW5nIG9jaAogICAgZiZvdW1sO3JzJm91bWw7ayBpZ2VuLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tc3YtLQoKQ29udGVudC1sYW5ndWFnZTogdHIKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktOQpCb2R5Oi0tLS0tLS0tLS10ci0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InRyIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTkiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmplY3Qgbm90IGZvdW5kISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIFRhbGVwIGV0dGkmIzI4Nztpbml6IFVSTCwgc3VudWN1IPx6ZXJpbmRlIGJ1bHVubXV5b3IuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPlJlZmVyYW5zIHNheWZhPC9hPgogICAg/HplcmluZGVraSBiYSYjMjg3O2xhbnQmIzMwNTsgZ/xuY2VsIGRlJiMyODc7aWwuCiAgICBM/HRmZW4gPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPnJlZmVyYW5zIHNheWZhPC9hPiduJiMzMDU7bgogICAgeWF6YXImIzMwNTtuJiMzMDU7IGtvbnV5bGEgaWxnaWxpIGJpbGdpbGVuZGlyaW4uCgogIDwhLS0jZWxzZSAtLT4KCiAgICBVUkwnaSBrZW5kaW5peiBlbGxlIGdpcmRpeXNlbml6LCB5YXomIzMwNTttJiMzMDU7biYjMzA1O3omIzMwNTsgZGVuZXRsZXlpcCB0ZWtyYXIgZGVuZXlpbi4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLXRyLS0K