Q29udGVudC1sYW5ndWFnZTogY3MKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMgpCb2R5Oi0tLS0tLS0tLS1jcy0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImNzIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTIiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmpla3QgbmVuYWxlemVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIFBvvmFkb3ZhbukgVVJMIG5lYnlsbyBuYSB0b210byBzZXJ2ZXJ1IG5hbGV6ZW5vLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIFpk4SBzZSwgvmUgb2RrYXogbmEKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5vZGthenVq7WPtCiAgICBzdHLhbmNlPC9hPiBqZSBjaHlibv0gbmVibyB6YXN0YXJhbP0uIEluZm9ybXVqdGUsIHByb3PtbSwgYXV0b3JhCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+dOl0byBzdHLhbmt5PC9hPgogICAgbyZuYnNwO2NoeWLsLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgUG9rdWQganN0ZSB6YWRhbChhKSBVUkwgcnXobuwsIHprb250cm9sdWp0ZSwgcHJvc+1tLAogICAgemRhIGpzdGUgemFkYWwoYSkgVVJMIHNwcuF2buwsIGEgemt1c3RlIHRvIHpub3Z1LgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tY3MtLQoKQ29udGVudC1sYW5ndWFnZTogZGUKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1kZS0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImRlIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iT2JqZWt0IG5pY2h0IGdlZnVuZGVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIERlciBhbmdlZm9yZGVydGUgVVJMIGtvbm50ZSBhdWYgZGVtIFNlcnZlciBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4uCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgRGVyIExpbmsgYXVmIGRlcgogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPnZlcndlaXNlbmRlbgogICAgU2VpdGU8L2E+IHNjaGVpbnQgZmFsc2NoIG9kZXIgbmljaHQgbWVociBha3R1ZWxsIHp1IHNlaW4uCiAgICBCaXR0ZSBpbmZvcm1pZXJlbiBTaWUgZGVuIEF1dG9yCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+ZGllc2VyIFNlaXRlPC9hPgogICAgJnV1bWw7YmVyIGRlbiBGZWhsZXIuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBTb2Zlcm4gU2llIGRlbiBVUkwgbWFudWVsbCBlaW5nZWdlYmVuIGhhYmVuLAogICAgJnV1bWw7YmVycHImdXVtbDtmZW4gU2llIGJpdHRlIGRpZSBTY2hyZWlid2Vpc2UgdW5kIHZlcnN1Y2hlbiBTaWUgZXMgZXJuZXV0LgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tZGUtLQoKQ29udGVudC1sYW5ndWFnZTogZW4KQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1lbi0tCjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmplY3Qgbm90IGZvdW5kISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIFRoZSByZXF1ZXN0ZWQgVVJMIHdhcyBub3QgZm91bmQgb24gdGhpcyBzZXJ2ZXIuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgVGhlIGxpbmsgb24gdGhlCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+cmVmZXJyaW5nCiAgICBwYWdlPC9hPiBzZWVtcyB0byBiZSB3cm9uZyBvciBvdXRkYXRlZC4gUGxlYXNlIGluZm9ybSB0aGUgYXV0aG9yIG9mCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+dGhhdCBwYWdlPC9hPgogICAgYWJvdXQgdGhlIGVycm9yLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgSWYgeW91IGVudGVyZWQgdGhlIFVSTCBtYW51YWxseSBwbGVhc2UgY2hlY2sgeW91cgogICAgc3BlbGxpbmcgYW5kIHRyeSBhZ2Fpbi4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWVuLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IGVzCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tZXMtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJlcyIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IiZpZXhjbDtPYmpldG8gbm8gZW5jb250cmFkbyEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICBFbCBlbmxhY2UgcmVxdWVyaWRvIG5vIGhhIHNpZG8gbG9jYWxpemFkbyBlbgogICAgZXN0ZSBzZXJ2aWRvci4KCiAgPCEtLSNpZiBleHByPSIkSFRUUF9SRUZFUkVSIiAtLT4KCiAgICBFbCBlbmxhY2UgZW4gbGEKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5wJmFhY3V0ZTtnaW5hCiAgICByZWZlcmVudGU8L2E+IHBhcmVjZSB0ZW5lciBhbGd1biBlcnJvciBvIGhhIGV4cGlyYWRvLiBQb3IgZmF2b3IKICAgIGNvbXVuaXF1ZSBhbCBhdXRvciBkZQogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPmxhCiAgICBwJmFhY3V0ZTtnaW5hPC9hPiBlbCBlcnJvci4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIFNpIHVzdGVkIHByb3BvcmNpb24mb2FjdXRlOyBlbCBlbmxhY2UgZGUgbWFuZXJhIG1hbnVhbCBsZSBzb2xpY2l0YW1vcwogICAgcXVlIHBvciBmYXZvciByZXZpc2UgbG9zIGRhdG9zIGUgaW50ZW50ZWxvIGRlIG51ZXZvLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tZXMtLQoKQ29udGVudC1sYW5ndWFnZTogZnIKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1mci0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9ImZyIgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iT2JqZXQgbm9uIHRyb3V2JmVhY3V0ZTshIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogICAgTCdVUkwgcmVxdWlzZSBuJ2EgcHUgZXRyZSB0cm91diZlYWN1dGU7ZSBzdXIgY2Ugc2VydmV1ci4KCiAgPCEtLSNpZiBleHByPSIkSFRUUF9SRUZFUkVSIiAtLT4KCiAgICBMYSByJmVhY3V0ZTtmJmVhY3V0ZTtyZW5jZSBzdXIKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5sYSBwYWdlCiAgICBjaXQmZWFjdXRlO2U8L2E+CiAgICBzZW1ibGUgJmVjaXJjO3RyZSBlcnJvbiZlYWN1dGU7ZSBvdSBwZXJpbSZlYWN1dGU7ZS4gTm91cyB2b3VzIHByaW9ucwogICAgZCdpbmZvcm1lciBsJ2F1dGV1ciBkZQogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPmNldHRlIHBhZ2U8L2E+CiAgICBkZSBjZXR0ZSBlcnJldXIuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBTaSB2b3VzIGF2ZXogdGFwJmVhY3V0ZTsgbCdVUkwgJmFncmF2ZTsgbGEgbWFpbiwgdmV1aWxsZXogdiZlYWN1dGU7cmlmaWVyCiAgICBsJ29ydGhvZ3JhcGhlIGV0IHImZWFjdXRlO2Vzc2F5ZXIuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1mci0tCgpDb250ZW50LWxhbmd1YWdlOiBnYSAKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1nYS0tCjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJBaWRobSBhciBpYXJyYWlkaCEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICBOJmlhY3V0ZTtvciBhaW1zaWdoIGFuIFVSTCBpYXJyYWl0aGUgYXIgYW4gZmhyZWFzdGFsYSZpYWN1dGU7IHNlby4KCiAgPCEtLSNpZiBleHByPSIkSFRUUF9SRUZFUkVSIiAtLT4KCiAgICBJcyBjb3MmdWFjdXRlO2lsIGdvIGJoZnVpbCBhbiBuYXNjIGFyIGFuCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+bGVhdGhhbmFjaAogICAgdGhhZ2FydGhhY2g8L2E+IG0maWFjdXRlO2NoZWFydCBuJm9hY3V0ZTsgYXMgZCZhYWN1dGU7dGEuIAogICAgQ3VyIGluIGkmdWFjdXRlO2wgZCcmdWFjdXRlO2FkYXIgCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiIKICAgID5hbiBsZWF0aGFuYWNoIHNpbjwvYT4gZ28gYmhmdWlsIGVhcnImYWFjdXRlO2lkIGFubiwgbGUgZG8gdGhvaWwuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBNJmFhY3V0ZTsgY2h1aXIgdCZ1YWN1dGU7IGlzdGVhY2ggYW4gVVJMIHQmdWFjdXRlOyBmJmVhY3V0ZTtpbiwgZGVpbWhuaWdoCiAgICBnbyBiaGZ1aWwgcyZlYWN1dGU7IGxpdHJpdGhlIGkgZ2NlYXJ0IGFnYXQsIGFndXMgZCZlYWN1dGU7YW4gaWFycmFjaHQgZWlsZQogICAgbGUgZG8gdGhvaWwuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1nYS0tCgpDb250ZW50LWxhbmd1YWdlOiBpdApDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLS0tLWl0LS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0iaXQiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPZ2dldHRvIG5vbiB0cm92YXRvISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIEwnVVJMIHJpY2hpZXN0byBub24gZXNpc3RlIHN1IHF1ZXN0byBzZXJ2ZXIuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgSWwgbGluayBkZWxsYQogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPnBhZ2luYSBkYSBjdWkKICAgIHNlaSBhcnJpdmF0bzwvYT4gcG90cmViYmUgZXNzZXJlIGVycmF0byBvIG5vbiBlc3NlcmUgcGkmdWdyYXZlOyB2YWxpZG8uCiAgICBQZXIgZmF2b3JlLCBpbmZvcm1hIGRlbGwnZXJyb3JlIGwnYXV0b3JlIGRlbGxhCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+cGFnaW5hPC9hPi4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIFNlIGhhaSBzY3JpdHRvIGwnVVJMIGEgbWFubywgcGVyIGZhdm9yZSBjb250cm9sbGEgY2hlCiAgICBub24gY2kgc2lhbm8gZXJyb3JpLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0taXQtLQoKQ29udGVudC1sYW5ndWFnZTogamEKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTIwMjItSlAKQm9keTotLS0tLS0tLS0tamEtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJqYSIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJpc28tMjAyMi1qcCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9Ik9iamVjdCBub3QgZm91bmQhIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogICAgGyRCTVc1YSQ1JGwkPxsoQiBVUkwgGyRCJE9LXCU1ITwlUCRHJE84KyREJCskaiReJDskcyRHJDckPyEjGyhCCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIi0tPiI+CiAgICAbJEI7Mj5IODUlWiE8JTgbKEI8L2E+GyRCJE4laiVzJS8kLDRWMGMkQyRGJCQkayQrISI4RSQvJEokQyRGJDckXiRDJEYkJCRrJGgkJiRHJDkhIxsoQgogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIi0tPiIKICAgID4bJEIlWiE8JTgbKEI8L2E+GyRCJE5DeDxUJEskMyROJSglaSE8JHIkKkNOJGkkOzI8JDUkJCEjGyhCCgogIDwhLS0jZWxzZSAtLT4KCiAgICAbJEIkYiQ3PGpGfk5PJEcbKEIgVVJMIBskQiRyRn5OTyQ3JD8+bDlnJE8hIkRWJGokcjNORyckNyRGOkZFWSQqO24kNzI8JDUkJCEjGyhCCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1qYS0tCgpDb250ZW50LWxhbmd1YWdlOiBrbwpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1FVUMtS1IKQm9keTotLS0tLS0tLS0ta28tLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJrbyIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9IrC0w7wgvvjAvSEiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iRVVDLUtSIgotLT48IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS90b3AuaHRtbCIgLS0+CgogICAgv+TDu8fRIFVSTMC7IMDMILytufa/obytIMOjwLsgvPYgvvi9wLTPtNkuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIi0tPiI+wMzA/AogICAgxuTAzMH2PC9hPr+hIMDWtMIguLXFqbChIMDfuPi1x776sMWzqiC/wLehtce+7iC++L7uwfggsM0gsLC9wLTPtNkuCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiLS0+Ij6x1yDG5MDMwfY8L2E+uKYKICAgILi4tefAzL+hsNQgwMwgu+e9x8C7IL7Lt8HB1r3DseIgudm2+LTPtNkuCgogIDwhLS0jZWxzZSAtLT4KCiAgICBVUkzAuyDB98GiIMDUt8LHz7zMtNm46SC52bijsNQgwNS3wsfPvMy0wsH2IMiuwM7Hz73DsO0gtNm9wyC9w7W1x8+9w7HiCiAgICC52bb4tM+02S4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLWtvLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IG5sCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tbmwtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJubCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9Ik9iamVjdCBuaWV0IGdldm9uZGVuISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIERlIGdldnJhYWdkZSBVUkwgd2FzIG5pZXQgZ2V2b25kZW4gb3AgZGV6ZSBzZXJ2ZXIuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgRGUgbGluayBvcAogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPmRlemUgcGFnaW5hCiAgICBwYWdpbmE8L2E+IGlzIHZlcmtlZXJkIG9mIGFjaHRlcmhhYWxkLiBHZWxpZXZlIGRlIGF1dGV1ciB2YW4KICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5kaWUgcGFnaW5hPC9hPgogICAgaW4gdGUgbGljaHRlbiBvdmVyIGRlemUgZm91dC4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIEluZGllbiB1IGRlIFVSTCBtYW51ZWVsIGhlYnQgaW5nZXZ1bGQsIGdlbGlldmUgdXcKICAgIHNwZWxsaW5nIHRlIGNvbnRyb2xlcmVuIGVuIHByb2JlZXIgb3BuaWV1dy4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLW5sLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IHBsCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTIKQm9keTotLS0tLS0tLS0tcGwtLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJwbCIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9Ik5pZSB6bmFsZXppb25vIG9iaWVrdHUhIgotLT48IS0tI3NldCB2YXI9IkNIQVJBQ1RFUl9FTkNPRElORyIgdmFsdWU9IklTTy04ODU5LTIiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICBOaWUgem5hbGV6aW9ubyC/sWRhbmVnbyBVUkxhIG5hIHR5bSBzZXJ3ZXJ6ZS4KCiAgPCEtLSNpZiBleHByPSIkSFRUUF9SRUZFUkVSIiAtLT4KCiAgICBPZG5vtm5payBuYQogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPnJlZmVydWqxY2VqIHN0cm9uaWUKICAgIDwvYT4gd3lkYWplIHNp6iBieeYgbmllcHJhd2lks293eSBsdWIgbmllYWt0dWFsbnkuIFBvaW5mb3JtdWogYXV0b3JhCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+dGVqIHN0cm9ueTwvYT4KICAgIG8gcHJvYmxlbWllLgoKICA8IS0tI2Vsc2UgLS0+CiAgICBKZbZsaSB3cGlzYbNltiBVUkxhIHLqY3puaWUsIHNwcmF3ZLwsIGN6eSBuaWUgc2nqIG5pZSBwb215bGmzZbYuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1wbC0tCgpDb250ZW50LWxhbmd1YWdlOiBwdC1icgpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkJvZHk6LS0tLS0tLXB0LWJyLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0icHQtYnIiCi0tPjwhLS0jc2V0IHZhcj0iVElUTEUiIHZhbHVlPSJPYmpldG8gbiZhdGlsZGU7byBlbmNvbnRyYWRvISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIEEgVVJMIHJlcXVpc2l0YWRhIG4mYXRpbGRlO28gZm9pIGVuY29udHJhZGEgbmVzdGUgc2Vydmlkb3IuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgTyBsaW5rIG5hCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+cCZhYWN1dGU7Z2luYQogICAgcmVmZXJpZGE8L2E+IHBhcmVjZSBlc3RhciBjb20gYWxndW0gZXJybyBvdSBkZXNhdHVhbGl6YWRvLiBQb3IgZmF2b3IgaW5mb3JtZSBvCiAgICBhdXRvciA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+ZGVzdGEgCiAgICBwJmFhY3V0ZTtnaW5hPC9hPiBzb2JyZSBvIGVycm8uCgogICA8IS0tI2Vsc2UgLS0+CgogICAgU2Ugdm9jJmVjaXJjOyBkaWdpdG91IG8gZW5kZXJlJmNjZWRpbDtvIChVUkwpIG1hbnVhbG1lbnRlLAogICAgcG9yIGZhdm9yIHZlcmlmaXF1ZSBub3ZhbWVudGUgYSBzaW50YXhlIGRvIGVuZGVyZSZjY2VkaWw7by4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLXB0LWJyLS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IHJvCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEKQm9keTotLS0tLS0tLS0tcm8tLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJybyIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9Ik9iaWVjdHVsIG51IGEgZm9zdCBnYXNpdCEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICBVUkwtdWwgY2VydXQgbnUgYSBmb3N0IGdhc2l0IHBlIGFjZXN0IHNlcnZlci4KCiAgPCEtLSNpZiBleHByPSIkSFRUUF9SRUZFUkVSIiAtLT4KCiAgICBMaW5rLXVsIGRlIHBlCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+cGFnaW5hCiAgICBkZSB1bmRlIGF0aSB2ZW5pdDwvYT4gcGFyZSBhIGZpIGdyZXNpdCBzYXUgaW52ZWNoaXQuIFZhIHJ1Z2FtIGluZm9ybWF0aSBhdXRvcnVsCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+YWNlc3RlaSBwYWdpbmk8L2E+CiAgICBkZXNwcmUgZXJvYXJlLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgRGFjYSBhdGkgaW50cm9kdXMgVVJMLXVsIG1hbnVhbCwgdmEgcnVnYW0gdmVyaWZpY2F0aQogICAgY29yZWN0aXR1ZGluZWEgc2kgaW5jZXJjYXRpIGRpbiBub3UuCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS1yby0tCgpDb250ZW50LWxhbmd1YWdlOiBzcgpDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS01CkJvZHk6LS0tLS0tLS0tLXNyLS0KPCEtLSNzZXQgdmFyPSJDT05URU5UX0xBTkdVQUdFIiB2YWx1ZT0ic3IiCi0tPjwhLS0jc2V0IHZhcj0iQ0hBUkFDVEVSX0VOQ09ESU5HIiB2YWx1ZT0iSVNPLTg4NTktNSIKLS0+PCEtLSNzZXQgdmFyPSJUSVRMRSIgdmFsdWU9Ir7R+NXa0OIg3dj41SDf4N7d0PLV3SEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICC30OXi1dLQ3dggw8C7IN3Y+NUg3+De3dDy1d0g3dAg3tLe3CDh1eDS1eDjLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgILjX09vV1NAg1NAg+NUg0tXX0CDd0AogICAgPGEgaHJlZj0iPCEtLSNlY2hvIGVuY29kaW5nPSJ1cmwiIHZhcj0iSFRUUF9SRUZFUkVSIiAtLT4iPtjh5d7U2Ojd3vgKICAgIOHi4NDd2ObYPC9hPiDf3tPg1ejd0CDY29gg19Dh4tDg1dvQLiC83tvY3N4g3tHQ0tXh4tji1SDQ4+Le4NAKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij7i1SDh4uDQ3djm1TwvYT4KICAgIN4g0+DV6ObYLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgw9re29ja3iDh4tUgw8C7IOPd1dvYIODj593eLCDc3tvY3N4g3+De0tXg2OLVINze0+P71QogICAg0+DV6NrVINgg3+De0dD44tUg397d3tLeLgoKICA8IS0tI2VuZGlmIC0tPgoKPCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvYm90dG9tLmh0bWwiIC0tPgotLS0tLS0tLS0tc3ItLQoKQ29udGVudC1sYW5ndWFnZTogc3YKQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMQpCb2R5Oi0tLS0tLS0tLS1zdi0tCjwhLS0jc2V0IHZhcj0iQ09OVEVOVF9MQU5HVUFHRSIgdmFsdWU9InN2IgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iT2JqZWt0ZXQgaGl0dGFzIGVqISIKLS0+PCEtLSNpbmNsdWRlIHZpcnR1YWw9ImluY2x1ZGUvdG9wLmh0bWwiIC0tPgoKICAgIERlbiBlZnRlcmZyJmFyaW5nO2dhZGUgYWRyZXNzZW4gaGl0dGFkZXMgaW50ZSBwJmFyaW5nOyBkZW5uYSBzZXJ2ZXIuCgogIDwhLS0jaWYgZXhwcj0iJEhUVFBfUkVGRVJFUiIgLS0+CgogICAgTCZhdW1sO25rZW4gcCZhcmluZzsgZGVuCiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+dGlkaWdhcmUgc2lkYW48L2E+IAogICAgdmVya2FyIHZhcmEgZmVsYWt0aWcgZWxsZXIgaW5ha3R1ZWxsLiBWJmF1bWw7bmxpZ2VuIGluZm9ybWVyYSBmJm91bWw7cmZhdHRhcmVuIGF2CiAgICA8YSBocmVmPSI8IS0tI2VjaG8gZW5jb2Rpbmc9InVybCIgdmFyPSJIVFRQX1JFRkVSRVIiIC0tPiI+c2lkYW48L2E+CiAgICBvbSBmZWxldC4KCiAgPCEtLSNlbHNlIC0tPgoKICAgIE9tIGR1IHNrcmV2IGluIGFkcmVzc2VuIG1hbnVlbGx0IHMmYXJpbmc7IGtvbnRyb2xsZXJhIGRpbiBzdGF2bmluZyBvY2gKICAgIGYmb3VtbDtycyZvdW1sO2sgaWdlbi4KCiAgPCEtLSNlbmRpZiAtLT4KCjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL2JvdHRvbS5odG1sIiAtLT4KLS0tLS0tLS0tLXN2LS0KCkNvbnRlbnQtbGFuZ3VhZ2U6IHRyCkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTkKQm9keTotLS0tLS0tLS0tdHItLQo8IS0tI3NldCB2YXI9IkNPTlRFTlRfTEFOR1VBR0UiIHZhbHVlPSJ0ciIKLS0+PCEtLSNzZXQgdmFyPSJDSEFSQUNURVJfRU5DT0RJTkciIHZhbHVlPSJJU08tODg1OS05IgotLT48IS0tI3NldCB2YXI9IlRJVExFIiB2YWx1ZT0iT2JqZWN0IG5vdCBmb3VuZCEiCi0tPjwhLS0jaW5jbHVkZSB2aXJ0dWFsPSJpbmNsdWRlL3RvcC5odG1sIiAtLT4KCiAgICBUYWxlcCBldHRpJiMyODc7aW5peiBVUkwsIHN1bnVjdSD8emVyaW5kZSBidWx1bm11eW9yLgoKICA8IS0tI2lmIGV4cHI9IiRIVFRQX1JFRkVSRVIiIC0tPgoKICAgIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5SZWZlcmFucyBzYXlmYTwvYT4KICAgIPx6ZXJpbmRla2kgYmEmIzI4NztsYW50JiMzMDU7IGf8bmNlbCBkZSYjMjg3O2lsLgogICAgTPx0ZmVuIDxhIGhyZWY9IjwhLS0jZWNobyBlbmNvZGluZz0idXJsIiB2YXI9IkhUVFBfUkVGRVJFUiIgLS0+Ij5yZWZlcmFucyBzYXlmYTwvYT4nbiYjMzA1O24KICAgIHlhemFyJiMzMDU7biYjMzA1OyBrb251eWxhIGlsZ2lsaSBiaWxnaWxlbmRpcmluLgoKICA8IS0tI2Vsc2UgLS0+CgogICAgVVJMJ2kga2VuZGluaXogZWxsZSBnaXJkaXlzZW5peiwgeWF6JiMzMDU7bSYjMzA1O24mIzMwNTt6JiMzMDU7IGRlbmV0bGV5aXAgdGVrcmFyIGRlbmV5aW4uCgogIDwhLS0jZW5kaWYgLS0+Cgo8IS0tI2luY2x1ZGUgdmlydHVhbD0iaW5jbHVkZS9ib3R0b20uaHRtbCIgLS0+Ci0tLS0tLS0tLS10ci0tCg==